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:
parent
9a295a188f
commit
ddc7484a6e
@ -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]) {
|
||||
|
Loading…
Reference in New Issue
Block a user