[vlc-devel] [PATCH v3 04/10] video_output: conditionnally enable display rendering
Alexandre Janniaux
ajanni at videolabs.io
Tue Feb 16 15:25:44 UTC 2021
Add a function to enable or disable the rendering on a vout_thread_t.
This will be used by the window callbacks to prevent rendering on the
window when the visibility change events are triggered.
---
src/video_output/video_output.c | 11 +++++++++++
src/video_output/vout_internal.h | 1 +
2 files changed, 12 insertions(+)
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index d04d3f4d11..489d5205e6 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -142,6 +142,7 @@ typedef struct vout_thread_sys_t
vlc_decoder_device *dec_device;
/* Video output display */
+ bool rendering_enabled;
vout_display_cfg_t display_cfg;
vout_display_t *display;
vlc_mutex_t display_lock;
@@ -655,6 +656,15 @@ void vout_ChangeCrop(vout_thread_t *vout,
vlc_mutex_unlock(&sys->display_lock);
}
+void vout_ChangeDisplayRenderingEnabled(vout_thread_t *vout, bool enabled)
+{
+ vout_thread_sys_t *sys = VOUT_THREAD_TO_SYS(vout);
+ assert(!sys->dummy);
+ vlc_mutex_lock(&sys->display_lock);
+ sys->rendering_enabled = enabled;
+ vlc_mutex_unlock(&sys->display_lock);
+}
+
void vout_ControlChangeFilters(vout_thread_t *vout, const char *filters)
{
vout_thread_sys_t *sys = VOUT_THREAD_TO_SYS(vout);
@@ -1942,6 +1952,7 @@ static vout_thread_sys_t *vout_CreateCommon(vlc_object_t *object)
vout_thread_sys_t *sys = vout;
vlc_atomic_rc_init(&sys->rc);
+ sys->rendering_enabled = true;
return vout;
}
diff --git a/src/video_output/vout_internal.h b/src/video_output/vout_internal.h
index fb24b51ee8..37684c3c51 100644
--- a/src/video_output/vout_internal.h
+++ b/src/video_output/vout_internal.h
@@ -155,6 +155,7 @@ void vout_ChangeDisplayFilled(vout_thread_t *, bool is_filled);
void vout_ChangeZoom(vout_thread_t *, unsigned num, unsigned den);
void vout_ChangeDisplayAspectRatio(vout_thread_t *, unsigned num, unsigned den);
void vout_ChangeCrop(vout_thread_t *, const struct vout_crop *);
+void vout_ChangeDisplayRenderingEnabled(vout_thread_t *, bool);
void vout_ControlChangeFilters(vout_thread_t *, const char *);
void vout_ControlChangeInterlacing(vout_thread_t *, bool);
void vout_ControlChangeSubSources(vout_thread_t *, const char *);
--
2.30.1
More information about the vlc-devel
mailing list