diff --git a/libobs/obs-display.c b/libobs/obs-display.c index 42e82c37f..47446ac0d 100644 --- a/libobs/obs-display.c +++ b/libobs/obs-display.c @@ -41,6 +41,7 @@ bool obs_display_init(struct obs_display *display, return false; } + display->enabled = true; return true; } @@ -170,7 +171,7 @@ static inline void render_display_end() void render_display(struct obs_display *display) { - if (!display) return; + if (!display || !display->enabled) return; render_display_begin(display); @@ -187,3 +188,14 @@ void render_display(struct obs_display *display) render_display_end(); } + +void obs_display_set_enabled(obs_display_t *display, bool enable) +{ + if (display) + display->enabled = enable; +} + +bool obs_display_enabled(obs_display_t *display) +{ + return display ? display->enabled : false; +} diff --git a/libobs/obs-internal.h b/libobs/obs-internal.h index 9ad26f996..1ef73a39d 100644 --- a/libobs/obs-internal.h +++ b/libobs/obs-internal.h @@ -112,6 +112,7 @@ extern void obs_view_free(struct obs_view *view); struct obs_display { bool size_changed; + bool enabled; uint32_t cx, cy; gs_swapchain_t *swap; pthread_mutex_t draw_callbacks_mutex; diff --git a/libobs/obs.h b/libobs/obs.h index 0b4b58ac7..4a2e1c22f 100644 --- a/libobs/obs.h +++ b/libobs/obs.h @@ -619,6 +619,9 @@ EXPORT void obs_display_remove_draw_callback(obs_display_t *display, void (*draw)(void *param, uint32_t cx, uint32_t cy), void *param); +EXPORT void obs_display_set_enabled(obs_display_t *display, bool enable); +EXPORT bool obs_display_enabled(obs_display_t *display); + /* ------------------------------------------------------------------------- */ /* Sources */