diff --git a/libobs/obs-source-transition.c b/libobs/obs-source-transition.c index 89338b843..b6b71e0ba 100644 --- a/libobs/obs-source-transition.c +++ b/libobs/obs-source-transition.c @@ -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]) {