void Display::render() { render_child(thumbs); render_child(grid); render_child(info); render_child(subtags); render_child(cli); sdl->reset_viewport(); }
void draw_child(void) { if (child_first) createchild(); child_speed = old_child_speed; child_speed = reduce_vsync(child_speed); child_time += child_speed; render_child(); drawchild(); }
void render_children(component *c) { render_child(c->children); }
void render_child(component *c) { if (!c) return; render_child(c->next); render_gui(c); render_children(c); }
void obs_transition_video_render(obs_source_t *transition, obs_transition_video_render_callback_t callback) { struct transition_state state; bool locked = false; bool stopped = false; bool video_stopped = false; float t; if (!transition_valid(transition, "obs_transition_video_render")) return; t = get_video_time(transition); lock_transition(transition); if (t >= 1.0f && transition->transitioning_video) { transition->transitioning_video = false; video_stopped = true; if (!transition->transitioning_audio) { obs_transition_stop(transition); stopped = true; } } copy_transition_state(transition, &state); unlock_transition(transition); if (state.transitioning_video) locked = trylock_textures(transition) == 0; if (state.transitioning_video && locked && callback) { gs_texture_t *tex[2]; for (size_t i = 0; i < 2; i++) { if (state.s[i]) { render_child(transition, state.s[i], i); tex[i] = get_texture(transition, i); if (!tex[i]) tex[i] = obs->video.transparent_texture; } else { tex[i] = obs->video.transparent_texture; } } callback(transition->context.data, tex[0], tex[1], t, transition->transition_actual_cx, transition->transition_actual_cy); } else if (state.transitioning_audio) { if (state.s[1]) obs_source_video_render(state.s[1]); } else { if (state.s[0]) obs_source_video_render(state.s[0]); } if (locked) unlock_textures(transition); obs_source_release(state.s[0]); obs_source_release(state.s[1]); if (video_stopped) obs_source_dosignal(transition, "source_transition_video_stop", "transition_video_stop"); if (stopped) obs_source_dosignal(transition, "source_transition_stop", "transition_stop"); }