[vlc-devel] [PATCH 1/6] display: make close callback type-specific
RĂ©mi Denis-Courmont
remi at remlab.net
Wed Jul 24 21:38:34 CEST 2019
---
include/vlc_vout_display.h | 21 +++++----------------
modules/hw/mmal/vout.c | 3 ++-
modules/hw/vdpau/display.c | 3 ++-
modules/video_output/android/display.c | 5 +++--
modules/video_output/caca.c | 3 ++-
modules/video_output/caopengllayer.m | 3 ++-
modules/video_output/decklink.cpp | 3 ++-
modules/video_output/fb.c | 3 ++-
modules/video_output/flaschen.c | 3 ++-
modules/video_output/ios.m | 3 ++-
modules/video_output/kms.c | 3 ++-
modules/video_output/kva.c | 3 ++-
modules/video_output/macosx.m | 3 ++-
modules/video_output/opengl/display.c | 5 +++--
modules/video_output/splitter.c | 3 ++-
modules/video_output/vmem.c | 3 ++-
modules/video_output/vulkan/display.c | 4 +++-
modules/video_output/wayland/shm.c | 3 ++-
modules/video_output/win32/direct3d11.c | 3 ++-
modules/video_output/win32/direct3d9.c | 3 ++-
modules/video_output/win32/glwin32.c | 3 ++-
modules/video_output/win32/wingdi.c | 3 ++-
modules/video_output/xcb/render.c | 3 ++-
modules/video_output/xcb/x11.c | 3 ++-
modules/video_output/yuv.c | 3 ++-
src/video_output/display.c | 14 +++++---------
26 files changed, 61 insertions(+), 51 deletions(-)
diff --git a/include/vlc_vout_display.h b/include/vlc_vout_display.h
index a8cd4352bd..42484514b6 100644
--- a/include/vlc_vout_display.h
+++ b/include/vlc_vout_display.h
@@ -208,22 +208,6 @@ typedef int (*vout_display_open_cb)(vout_display_t *vd,
video_format_t *fmtp,
vlc_video_context *context);
-/**
- * "vout display" close callback
- *
- * @param vd vout display context
- */
-typedef void (*vout_display_close_cb)(vout_display_t *vd);
-
-#define set_callbacks_display(activate, deactivate, priority) \
- { \
- vout_display_open_cb open__ = activate; \
- vout_display_close_cb close__ = deactivate; \
- (void) open__; (void) close__; \
- set_callbacks(activate, deactivate) \
- } \
- set_capability( "vout display", priority )
-
#define set_callback_display(activate, priority) \
{ \
vout_display_open_cb open__ = activate; \
@@ -305,6 +289,11 @@ struct vout_display_t {
/* Control on the module (mandatory) */
int (*control)(vout_display_t *, int, va_list);
+ /**
+ * Destroys the display.
+ */
+ void (*close)(vout_display_t *);
+
/* Private place holder for the vout_display_t module (optional)
*
* A module is free to use it as it wishes.
diff --git a/modules/hw/mmal/vout.c b/modules/hw/mmal/vout.c
index 03aa6719cf..bfed91588e 100644
--- a/modules/hw/mmal/vout.c
+++ b/modules/hw/mmal/vout.c
@@ -82,7 +82,7 @@ vlc_module_begin()
MMAL_ADJUST_REFRESHRATE_LONGTEXT, false)
add_bool(MMAL_NATIVE_INTERLACED, false, MMAL_NATIVE_INTERLACE_TEXT,
MMAL_NATIVE_INTERLACE_LONGTEXT, false)
- set_callbacks_display(Open, Close, 90)
+ set_callback_display(Open, 90)
vlc_module_end()
struct dmx_region_t {
@@ -301,6 +301,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = vd_prepare;
vd->display = vd_display;
vd->control = vd_control;
+ vd->close = Close;
vc_tv_register_callback(tvservice_cb, vd);
diff --git a/modules/hw/vdpau/display.c b/modules/hw/vdpau/display.c
index acd7a856c1..33d16d5298 100644
--- a/modules/hw/vdpau/display.c
+++ b/modules/hw/vdpau/display.c
@@ -46,7 +46,7 @@ vlc_module_begin()
set_description(N_("VDPAU output"))
set_category(CAT_VIDEO)
set_subcategory(SUBCAT_VIDEO_VOUT)
- set_callbacks_display(Open, Close, 0)
+ set_callback_display(Open, 0)
add_shortcut("vdpau")
vlc_module_end()
@@ -503,6 +503,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = Queue;
vd->display = Wait;
vd->control = Control;
+ vd->close = Close;
(void) context;
return VLC_SUCCESS;
diff --git a/modules/video_output/android/display.c b/modules/video_output/android/display.c
index 1b28bea50d..6d60b10fa8 100644
--- a/modules/video_output/android/display.c
+++ b/modules/video_output/android/display.c
@@ -64,11 +64,11 @@ vlc_module_begin()
set_description("Android video output")
add_shortcut("android-display")
add_string(CFG_PREFIX "chroma", NULL, CHROMA_TEXT, CHROMA_LONGTEXT, true)
- set_callbacks_display(Open, Close, 260)
+ set_callback_display(Open, 260)
add_submodule ()
set_description("Android opaque video output")
add_shortcut("android-opaque")
- set_callbacks_display(OpenOpaque, Close, 280)
+ set_callback_display(OpenOpaque, 280)
vlc_module_end()
/*****************************************************************************
@@ -610,6 +610,7 @@ static int OpenCommon(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = Prepare;
vd->display = Display;
vd->control = Control;
+ vd->close = Close;
vd->info.is_slow = !sys->p_window->b_opaque;
return VLC_SUCCESS;
diff --git a/modules/video_output/caca.c b/modules/video_output/caca.c
index c88d255482..f95d985034 100644
--- a/modules/video_output/caca.c
+++ b/modules/video_output/caca.c
@@ -499,6 +499,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = Prepare;
vd->display = PictureDisplay;
vd->control = Control;
+ vd->close = Close;
/* Fix initial state */
caca_refresh_display(sys->dp);
@@ -532,5 +533,5 @@ vlc_module_begin()
set_category(CAT_VIDEO)
set_subcategory(SUBCAT_VIDEO_VOUT)
set_description(N_("Color ASCII art video output"))
- set_callbacks_display(Open, Close, 15)
+ set_callback_display(Open, 15)
vlc_module_end()
diff --git a/modules/video_output/caopengllayer.m b/modules/video_output/caopengllayer.m
index 7c6cfac290..3b542d1e63 100644
--- a/modules/video_output/caopengllayer.m
+++ b/modules/video_output/caopengllayer.m
@@ -55,7 +55,7 @@ vlc_module_begin()
set_description(N_("Core Animation OpenGL Layer (Mac OS X)"))
set_category(CAT_VIDEO)
set_subcategory(SUBCAT_VIDEO_VOUT)
- set_callbacks_display(Open, Close, 0)
+ set_callback_display(Open, 0)
vlc_module_end()
static picture_pool_t *Pool (vout_display_t *vd, unsigned requested_count);
@@ -200,6 +200,7 @@ static int Open (vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = PictureRender;
vd->display = PictureDisplay;
vd->control = Control;
+ vd->close = Close;
if (OSX_SIERRA_AND_HIGHER) {
/* request our screen's HDR mode (introduced in OS X 10.11, but correctly supported in 10.12 only) */
diff --git a/modules/video_output/decklink.cpp b/modules/video_output/decklink.cpp
index 1516f2182d..f4d01fb81d 100644
--- a/modules/video_output/decklink.cpp
+++ b/modules/video_output/decklink.cpp
@@ -254,7 +254,7 @@ vlc_module_begin()
set_description (N_("DeckLink Video Output module"))
set_category(CAT_VIDEO)
set_subcategory(SUBCAT_VIDEO_VOUT)
- set_callbacks_display (OpenVideo, CloseVideo, 0)
+ set_callback_display(OpenVideo, 0)
set_section(N_("DeckLink Video Options"), NULL)
add_string(VIDEO_CFG_PREFIX "video-connection", "sdi",
VIDEO_CONNECTION_TEXT, VIDEO_CONNECTION_LONGTEXT, true)
@@ -808,6 +808,7 @@ static int OpenVideo(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = PrepareVideo;
vd->display = NULL;
vd->control = ControlVideo;
+ vd->close = CloseVideo;
vd->sys = (vout_display_sys_t*) sys;
diff --git a/modules/video_output/fb.c b/modules/video_output/fb.c
index d585945192..1538af3465 100644
--- a/modules/video_output/fb.c
+++ b/modules/video_output/fb.c
@@ -87,7 +87,7 @@ vlc_module_begin ()
true)
add_obsolete_bool("fb-hw-accel") /* since 4.0.0 */
set_description(N_("GNU/Linux framebuffer video output"))
- set_callbacks_display(Open, Close, 30)
+ set_callback_display(Open, 30)
vlc_module_end ()
/*****************************************************************************
@@ -295,6 +295,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = NULL;
vd->display = Display;
vd->control = Control;
+ vd->close = Close;
(void) context;
return VLC_SUCCESS;
diff --git a/modules/video_output/flaschen.c b/modules/video_output/flaschen.c
index b316b5b065..00e1e66a34 100644
--- a/modules/video_output/flaschen.c
+++ b/modules/video_output/flaschen.c
@@ -61,7 +61,7 @@ static void Close(vout_display_t *vd);
vlc_module_begin ()
set_shortname( N_("Flaschen") )
set_description( N_("Flaschen-Taschen video output") )
- set_callbacks_display( Open, Close, 0 )
+ set_callback_display( Open, 0 )
add_shortcut( "flaschen" )
set_category( CAT_VIDEO )
@@ -141,6 +141,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = NULL;
vd->display = Display;
vd->control = Control;
+ vd->close = Close;
(void) cfg; (void) context;
return VLC_SUCCESS;
diff --git a/modules/video_output/ios.m b/modules/video_output/ios.m
index e77cc93ea5..b5456cb3e8 100644
--- a/modules/video_output/ios.m
+++ b/modules/video_output/ios.m
@@ -73,7 +73,7 @@ vlc_module_begin ()
set_description("iOS OpenGL video output")
set_category(CAT_VIDEO)
set_subcategory(SUBCAT_VIDEO_VOUT)
- set_callbacks_display(Open, Close, 300)
+ set_callback_display(Open, 300)
add_shortcut("vout_ios2", "vout_ios")
add_glopts()
@@ -211,6 +211,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = PictureRender;
vd->display = PictureDisplay;
vd->control = Control;
+ vd->close = Close;
return VLC_SUCCESS;
diff --git a/modules/video_output/kms.c b/modules/video_output/kms.c
index 4304235c92..025a4a2f79 100644
--- a/modules/video_output/kms.c
+++ b/modules/video_output/kms.c
@@ -768,6 +768,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = NULL;
vd->display = Display;
vd->control = Control;
+ vd->close = Close;
(void) context;
return VLC_SUCCESS;
@@ -788,5 +789,5 @@ vlc_module_begin ()
add_string( "kms-drm-chroma", NULL, DRM_CHROMA_TEXT, DRM_CHROMA_LONGTEXT,
true)
set_description("Linux kernel mode setting video output")
- set_callbacks_display(Open, Close, 30)
+ set_callback_display(Open, 30)
vlc_module_end ()
diff --git a/modules/video_output/kva.c b/modules/video_output/kva.c
index 13161cc5e9..185e826960 100644
--- a/modules/video_output/kva.c
+++ b/modules/video_output/kva.c
@@ -71,7 +71,7 @@ vlc_module_begin ()
add_bool( "kva-fixt23", false, KVA_FIXT23_TEXT, KVA_FIXT23_LONGTEXT, true )
set_description( N_("K Video Acceleration video output") )
add_shortcut( "kva" )
- set_callbacks_display( Open, Close, 100 )
+ set_callback_display( Open, 100 )
vlc_module_end ()
/*****************************************************************************
@@ -274,6 +274,7 @@ static void PMThread( void *arg )
vd->prepare = Prepare;
vd->display = Display;
vd->control = Control;
+ vd->close = Close;
/* Prevent SIG_FPE */
_control87(MCW_EM, MCW_EM);
diff --git a/modules/video_output/macosx.m b/modules/video_output/macosx.m
index 49596aa0d2..6290bbf763 100644
--- a/modules/video_output/macosx.m
+++ b/modules/video_output/macosx.m
@@ -76,7 +76,7 @@ vlc_module_begin ()
set_description (N_("Mac OS X OpenGL video output"))
set_category (CAT_VIDEO)
set_subcategory (SUBCAT_VIDEO_VOUT)
- set_callbacks_display (Open, Close, 300)
+ set_callback_display(Open, 300)
add_shortcut ("macosx", "vout_macosx")
add_glopts ()
vlc_module_end ()
@@ -243,6 +243,7 @@ static int Open (vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = PictureRender;
vd->display = PictureDisplay;
vd->control = Control;
+ vd->close = Close;
/* */
// FIXME: this call leads to a fatal mutex locking error in vout_ChangeDisplaySize()
diff --git a/modules/video_output/opengl/display.c b/modules/video_output/opengl/display.c
index afec7b5c42..456304ebdf 100644
--- a/modules/video_output/opengl/display.c
+++ b/modules/video_output/opengl/display.c
@@ -49,7 +49,7 @@ vlc_module_begin ()
# define MODULE_VARNAME "gles2"
set_shortname (N_("OpenGL ES2"))
set_description (N_("OpenGL for Embedded Systems 2 video output"))
- set_callbacks_display (Open, Close, 265)
+ set_callback_display(Open, 265)
add_shortcut ("opengles2", "gles2")
add_module("gles2", "opengl es2", NULL, GLES2_TEXT, PROVIDER_LONGTEXT)
@@ -61,7 +61,7 @@ vlc_module_begin ()
set_description (N_("OpenGL video output"))
set_category (CAT_VIDEO)
set_subcategory (SUBCAT_VIDEO_VOUT)
- set_callbacks_display (Open, Close, 270)
+ set_callback_display(Open, 270)
add_shortcut ("opengl", "gl")
add_module("gl", "opengl", NULL, GL_TEXT, PROVIDER_LONGTEXT)
#endif
@@ -147,6 +147,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = PictureRender;
vd->display = PictureDisplay;
vd->control = Control;
+ vd->close = Close;
return VLC_SUCCESS;
error:
diff --git a/modules/video_output/splitter.c b/modules/video_output/splitter.c
index 04cf26b7a6..401de4853d 100644
--- a/modules/video_output/splitter.c
+++ b/modules/video_output/splitter.c
@@ -318,6 +318,7 @@ static int vlc_vidsplit_Open(vout_display_t *vd,
vd->prepare = vlc_vidsplit_Prepare;
vd->display = vlc_vidsplit_Display;
vd->control = vlc_vidsplit_Control;
+ vd->close = vlc_vidsplit_Close;
(void) cfg; (void) fmtp; (void) ctx;
return VLC_SUCCESS;
}
@@ -327,7 +328,7 @@ vlc_module_begin()
set_description(N_("Video splitter display plugin"))
set_category(CAT_VIDEO)
set_subcategory(SUBCAT_VIDEO_VOUT)
- set_callbacks_display(vlc_vidsplit_Open, vlc_vidsplit_Close, 0)
+ set_callback_display(vlc_vidsplit_Open, 0)
add_module("video-splitter", "video splitter", NULL,
N_("Video splitter module"), N_("Video splitter module"))
vlc_module_end()
diff --git a/modules/video_output/vmem.c b/modules/video_output/vmem.c
index f8e0fbee1a..2bdcd63d9e 100644
--- a/modules/video_output/vmem.c
+++ b/modules/video_output/vmem.c
@@ -74,7 +74,7 @@ vlc_module_begin()
add_obsolete_string("vmem-unlock") /* obsoleted since 1.1.1 */
add_obsolete_string("vmem-data") /* obsoleted since 1.1.1 */
- set_callbacks_display(Open, Close, 0)
+ set_callback_display(Open, 0)
vlc_module_end()
/*****************************************************************************
@@ -219,6 +219,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = Prepare;
vd->display = Display;
vd->control = Control;
+ vd->close = Close;
(void) cfg; (void) context;
return VLC_SUCCESS;
diff --git a/modules/video_output/vulkan/display.c b/modules/video_output/vulkan/display.c
index 79f6f93964..174627d67d 100644
--- a/modules/video_output/vulkan/display.c
+++ b/modules/video_output/vulkan/display.c
@@ -74,6 +74,7 @@ struct vout_display_sys_t
static void PictureRender(vout_display_t *, picture_t *, subpicture_t *, mtime_t);
static void PictureDisplay(vout_display_t *, picture_t *);
static int Control(vout_display_t *, int, va_list);
+static void Close(vout_display_t *);
static void UpdateParams(vout_display_t *);
// Allocates a Vulkan surface and instance for video output.
@@ -141,6 +142,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = PictureRender;
vd->display = PictureDisplay;
vd->control = Control;
+ vd->close = Close;
UpdateParams(vd);
(void) cfg; (void) context;
@@ -373,7 +375,7 @@ vlc_module_begin ()
set_description (N_("Vulkan video output"))
set_category (CAT_VIDEO)
set_subcategory (SUBCAT_VIDEO_VOUT)
- set_callbacks_display (Open, Close, 0)
+ set_callback_display(Open, 0)
add_shortcut ("vulkan", "vk")
add_module ("vk", "vulkan", NULL, VK_TEXT, PROVIDER_LONGTEXT)
diff --git a/modules/video_output/wayland/shm.c b/modules/video_output/wayland/shm.c
index 43e45f2dd8..cf75931aa5 100644
--- a/modules/video_output/wayland/shm.c
+++ b/modules/video_output/wayland/shm.c
@@ -377,6 +377,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = Prepare;
vd->display = Display;
vd->control = Control;
+ vd->close = Close;
(void) context;
return VLC_SUCCESS;
@@ -399,6 +400,6 @@ vlc_module_begin()
set_description(N_("Wayland shared memory video output"))
set_category(CAT_VIDEO)
set_subcategory(SUBCAT_VIDEO_VOUT)
- set_callbacks_display(Open, Close, 170)
+ set_callback_display(Open, 170)
add_shortcut("wl")
vlc_module_end()
diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index 7b5f19d2de..3ef9dd24a0 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -85,7 +85,7 @@ vlc_module_begin ()
#endif
add_shortcut("direct3d11")
- set_callbacks_display(Open, Close,300)
+ set_callback_display(Open, 300)
vlc_module_end ()
struct vout_display_sys_t
@@ -384,6 +384,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = Prepare;
vd->display = Display;
vd->control = Control;
+ vd->close = Close;
msg_Dbg(vd, "Direct3D11 Open Succeeded");
diff --git a/modules/video_output/win32/direct3d9.c b/modules/video_output/win32/direct3d9.c
index 215b727846..9c1cf01064 100644
--- a/modules/video_output/win32/direct3d9.c
+++ b/modules/video_output/win32/direct3d9.c
@@ -111,7 +111,7 @@ vlc_module_begin ()
PIXEL_SHADER_FILE_TEXT, PIXEL_SHADER_FILE_LONGTEXT)
add_shortcut("direct3d9", "direct3d")
- set_callbacks_display(Open, Close, 280)
+ set_callback_display(Open, 280)
#ifdef HAVE_GL
add_submodule()
@@ -1758,6 +1758,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = Prepare;
vd->display = Display;
vd->control = Control;
+ vd->close = Close;
return VLC_SUCCESS;
error:
diff --git a/modules/video_output/win32/glwin32.c b/modules/video_output/win32/glwin32.c
index 4b03e0ea25..2cc9cadba3 100644
--- a/modules/video_output/win32/glwin32.c
+++ b/modules/video_output/win32/glwin32.c
@@ -50,7 +50,7 @@ vlc_module_begin()
set_shortname("OpenGL")
set_description(N_("OpenGL video output for Windows"))
add_shortcut("glwin32", "opengl")
- set_callbacks_display(Open, Close, 275)
+ set_callback_display(Open, 275)
add_glopts()
vlc_module_end()
@@ -166,6 +166,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = Prepare;
vd->display = Display;
vd->control = Control;
+ vd->close = Close;
return VLC_SUCCESS;
diff --git a/modules/video_output/win32/wingdi.c b/modules/video_output/win32/wingdi.c
index be0556b245..6653401b78 100644
--- a/modules/video_output/win32/wingdi.c
+++ b/modules/video_output/win32/wingdi.c
@@ -51,7 +51,7 @@ vlc_module_begin ()
set_subcategory(SUBCAT_VIDEO_VOUT)
set_shortname("GDI")
set_description(N_("Windows GDI video output"))
- set_callbacks_display(Open, Close, 110)
+ set_callback_display(Open, 110)
vlc_module_end ()
@@ -128,6 +128,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = Prepare;
vd->display = Display;
vd->control = Control;
+ vd->close = Close;
return VLC_SUCCESS;
error:
diff --git a/modules/video_output/xcb/render.c b/modules/video_output/xcb/render.c
index 524eb1d4a1..a88cdfcbbc 100644
--- a/modules/video_output/xcb/render.c
+++ b/modules/video_output/xcb/render.c
@@ -690,6 +690,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = Prepare;
vd->display = Display;
vd->control = Control;
+ vd->close = Close;
(void) ctx;
return VLC_SUCCESS;
@@ -713,7 +714,7 @@ vlc_module_begin()
set_description(N_("X11 RENDER video output (XCB)"))
set_category(CAT_VIDEO)
set_subcategory(SUBCAT_VIDEO_VOUT)
- set_callbacks_display(Open, Close, 200)
+ set_callback_display(Open, 200)
add_shortcut("x11-render", "xcb-render", "render")
add_string("x11-render-filter", "good", N_("Scaling mode"),
N_("Scaling mode"), true)
diff --git a/modules/video_output/xcb/x11.c b/modules/video_output/xcb/x11.c
index dd1e9f7a66..0f7cf49eb1 100644
--- a/modules/video_output/xcb/x11.c
+++ b/modules/video_output/xcb/x11.c
@@ -337,6 +337,7 @@ static int Open (vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = Prepare;
vd->display = Display;
vd->control = Control;
+ vd->close = Close;
(void) context;
return VLC_SUCCESS;
@@ -354,7 +355,7 @@ vlc_module_begin()
set_description(N_("X11 video output (XCB)"))
set_category(CAT_VIDEO)
set_subcategory(SUBCAT_VIDEO_VOUT)
- set_callbacks_display(Open, Close, 100)
+ set_callback_display(Open, 100)
add_shortcut("xcb-x11", "x11")
add_obsolete_bool("x11-shm") /* obsoleted since 2.0.0 */
diff --git a/modules/video_output/yuv.c b/modules/video_output/yuv.c
index 7f4c4333a3..c20b93d133 100644
--- a/modules/video_output/yuv.c
+++ b/modules/video_output/yuv.c
@@ -66,7 +66,7 @@ vlc_module_begin()
add_bool (CFG_PREFIX "yuv4mpeg2", false,
YUV4MPEG2_TEXT, YUV4MPEG2_LONGTEXT, true)
- set_callbacks_display(Open, Close, 0)
+ set_callback_display(Open, 0)
vlc_module_end()
/*****************************************************************************
@@ -152,6 +152,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
vd->prepare = NULL;
vd->display = Display;
vd->control = Control;
+ vd->close = Close;
(void) cfg; (void) context;
return VLC_SUCCESS;
diff --git a/src/video_output/display.c b/src/video_output/display.c
index 1b84060d5e..b8d72e7543 100644
--- a/src/video_output/display.c
+++ b/src/video_output/display.c
@@ -87,13 +87,6 @@ static int vout_display_start(void *func, bool forced, va_list ap)
return ret;
}
-static void vout_display_stop(void *func, va_list ap)
-{
- vout_display_close_cb deactivate = func;
-
- deactivate(va_arg(ap, vout_display_t *));
-}
-
/* */
void vout_display_GetDefaultDisplaySize(unsigned *width, unsigned *height,
const video_format_t *source,
@@ -774,6 +767,7 @@ vout_display_t *vout_display_New(vlc_object_t *parent,
vd->prepare = NULL;
vd->display = NULL;
vd->control = NULL;
+ vd->close = NULL;
vd->sys = NULL;
if (owner)
vd->owner = *owner;
@@ -803,7 +797,8 @@ vout_display_t *vout_display_New(vlc_object_t *parent,
if (VoutDisplayCreateRender(vd)) {
if (vd->module != NULL) {
- vlc_module_unload(vd->module, vout_display_stop, vd);
+ if (vd->close != NULL)
+ vd->close(vd);
vlc_objres_clear(VLC_OBJECT(vd));
}
video_format_Clean(&vd->fmt);
@@ -829,7 +824,8 @@ void vout_display_Delete(vout_display_t *vd)
picture_pool_Release(osys->pool);
if (vd->module != NULL) {
- vlc_module_unload(vd->module, vout_display_stop, vd);
+ if (vd->close != NULL)
+ vd->close(vd);
vlc_objres_clear(VLC_OBJECT(vd));
}
--
2.22.0
More information about the vlc-devel
mailing list