0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00

libobs: Fix rendering of transitions with fixed sizes

If a transition had a fixed size, it would not render itself or its
sub-sources according to that fixed size.  The fixed size value was
essentially being ignored.
This commit is contained in:
jp9000 2016-05-23 06:54:14 -07:00
parent 9a295a188f
commit ddc7484a6e

View File

@ -99,14 +99,26 @@ void obs_transition_clear(obs_source_t *transition)
void add_alignment(struct vec2 *v, uint32_t align, int cx, int cy);
static inline uint32_t get_cx(obs_source_t *tr)
{
return tr->transition_cx ?
tr->transition_cx : tr->transition_actual_cx;
}
static inline uint32_t get_cy(obs_source_t *tr)
{
return tr->transition_cy ?
tr->transition_cy : tr->transition_actual_cy;
}
static void recalculate_transition_matrix(obs_source_t *tr, size_t idx)
{
obs_source_t *child;
struct matrix4 mat;
struct vec2 pos;
struct vec2 scale;
float tr_cx = (float)tr->transition_actual_cx;
float tr_cy = (float)tr->transition_actual_cy;
float tr_cx = (float)get_cx(tr);
float tr_cy = (float)get_cy(tr);
float source_cx;
float source_cy;
float tr_aspect = tr_cx / tr_cy;
@ -596,8 +608,8 @@ void obs_transition_enum_sources(obs_source_t *transition,
static inline void render_child(obs_source_t *transition,
obs_source_t *child, size_t idx)
{
uint32_t cx = transition->transition_actual_cx;
uint32_t cy = transition->transition_actual_cy;
uint32_t cx = get_cx(transition);
uint32_t cy = get_cy(transition);
struct vec4 blank;
if (!child)
return;
@ -680,8 +692,7 @@ void obs_transition_video_render(obs_source_t *transition,
}
callback(transition->context.data, tex[0], tex[1], t,
transition->transition_actual_cx,
transition->transition_actual_cy);
get_cx(transition), get_cy(transition));
} else if (state.transitioning_audio) {
if (state.s[1]) {