diff --git a/UI/frontend-plugins/decklink-output-ui/decklink-ui-main.cpp b/UI/frontend-plugins/decklink-output-ui/decklink-ui-main.cpp index f6fa78d69..79832b277 100644 --- a/UI/frontend-plugins/decklink-output-ui/decklink-ui-main.cpp +++ b/UI/frontend-plugins/decklink-output-ui/decklink-ui-main.cpp @@ -105,6 +105,16 @@ OBSData load_preview_settings() void on_preview_scene_changed(enum obs_frontend_event event, void *param); void render_preview_source(void *param, uint32_t cx, uint32_t cy); +static void preview_tick(void *param, float sec) +{ + UNUSED_PARAMETER(sec); + + auto ctx = (struct preview_output *)param; + + if (ctx->texrender) + gs_texrender_reset(ctx->texrender); +} + void preview_output_stop() { obs_output_stop(context.output); @@ -122,6 +132,7 @@ void preview_output_stop() obs_leave_graphics(); video_output_close(context.video_queue); + obs_remove_tick_callback(preview_tick, &context); preview_output_running = false; doUI->PreviewOutputStateChanged(false); @@ -132,6 +143,7 @@ void preview_output_start() OBSData settings = load_preview_settings(); if (settings != nullptr) { + obs_add_tick_callback(preview_tick, &context); context.output = obs_output_create("decklink_output", "decklink_preview_output", settings, NULL); @@ -231,8 +243,6 @@ void render_preview_source(void *param, uint32_t cx, uint32_t cy) uint32_t width = obs_source_get_base_width(ctx->current_source); uint32_t height = obs_source_get_base_height(ctx->current_source); - gs_texrender_reset(ctx->texrender); - if (gs_texrender_begin(ctx->texrender, width, height)) { struct vec4 background; vec4_zero(&background);