[vlc-devel] [PATCH 2/2] vout/wrapper: pass display explicitly
RĂ©mi Denis-Courmont
remi at remlab.net
Thu Jun 13 12:07:42 CEST 2019
---
src/video_output/video_output.c | 6 +++---
src/video_output/vout_internal.h | 4 ++--
src/video_output/vout_wrapper.c | 20 +++++++++-----------
3 files changed, 14 insertions(+), 16 deletions(-)
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index dea2d82f98..14333044dc 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -1505,8 +1505,8 @@ static int vout_Start(vout_thread_t *vout, const vout_configuration_t *cfg)
vlc_mutex_lock(&sys->display_lock);
vlc_mutex_unlock(&sys->window_lock);
- if (vout_OpenWrapper(vout, sys->splitter_name, &dcfg)) {
- assert(sys->display == NULL);
+ sys->display = vout_OpenWrapper(vout, sys->splitter_name, &dcfg);
+ if (sys->display == NULL) {
vlc_mutex_unlock(&sys->display_lock);
goto error;
}
@@ -1648,7 +1648,7 @@ void vout_StopDisplay(vout_thread_t *vout)
vout_FlushUnlocked(vout, true, INT64_MAX);
vlc_mutex_lock(&sys->display_lock);
- vout_CloseWrapper(vout);
+ vout_CloseWrapper(vout, sys->display);
sys->display = NULL;
vlc_mutex_unlock(&sys->display_lock);
}
diff --git a/src/video_output/vout_internal.h b/src/video_output/vout_internal.h
index 021716ac0c..5490b2b12c 100644
--- a/src/video_output/vout_internal.h
+++ b/src/video_output/vout_internal.h
@@ -256,9 +256,9 @@ void vout_IntfReinit( vout_thread_t * );
void vout_IntfDeinit(vlc_object_t *);
/* */
-int vout_OpenWrapper(vout_thread_t *, const char *,
+vout_display_t *vout_OpenWrapper(vout_thread_t *, const char *,
const vout_display_cfg_t *);
-void vout_CloseWrapper(vout_thread_t *);
+void vout_CloseWrapper(vout_thread_t *, vout_display_t *vd);
/* */
ssize_t vout_RegisterSubpictureChannelInternal( vout_thread_t *, vlc_clock_t *clock );
diff --git a/src/video_output/vout_wrapper.c b/src/video_output/vout_wrapper.c
index 494da61dc5..61046f2be0 100644
--- a/src/video_output/vout_wrapper.c
+++ b/src/video_output/vout_wrapper.c
@@ -64,7 +64,7 @@ static void VoutDisplayEvent(vout_display_t *vd, int event, va_list args)
/*****************************************************************************
*
*****************************************************************************/
-int vout_OpenWrapper(vout_thread_t *vout,
+vout_display_t *vout_OpenWrapper(vout_thread_t *vout,
const char *splitter_name, const vout_display_cfg_t *cfg)
{
vout_thread_sys_t *sys = vout->p;
@@ -87,7 +87,7 @@ int vout_OpenWrapper(vout_thread_t *vout,
free(modlistbuf);
if (vd == NULL)
- return VLC_EGENERIC;
+ return NULL;
sys->decoder_pool = NULL;
sys->display_pool = NULL;
@@ -142,25 +142,23 @@ int vout_OpenWrapper(vout_thread_t *vout,
goto error;
}
- sys->display = vd;
-
#ifdef _WIN32
var_Create(vout, "video-wallpaper", VLC_VAR_BOOL|VLC_VAR_DOINHERIT);
var_AddCallback(vout, "video-wallpaper", Forward, vd);
#endif
var_SetBool(VLC_OBJECT(vout), "viewpoint-changeable",
- sys->display->fmt.projection_mode != PROJECTION_MODE_RECTANGULAR);
- return VLC_SUCCESS;
+ vd->fmt.projection_mode != PROJECTION_MODE_RECTANGULAR);
+ return vd;
error:
vout_display_Delete(vd);
- return VLC_EGENERIC;
+ return NULL;
}
/*****************************************************************************
*
*****************************************************************************/
-void vout_CloseWrapper(vout_thread_t *vout)
+void vout_CloseWrapper(vout_thread_t *vout, vout_display_t *vd)
{
vout_thread_sys_t *sys = vout->p;
@@ -168,15 +166,15 @@ void vout_CloseWrapper(vout_thread_t *vout)
picture_pool_Release(sys->private_pool);
- if (sys->display_pool != NULL || vout_IsDisplayFiltered(sys->display))
+ if (sys->display_pool != NULL || vout_IsDisplayFiltered(vd))
picture_pool_Release(sys->decoder_pool);
#ifdef _WIN32
- var_DelCallback(vout, "video-wallpaper", Forward, sys->display);
+ var_DelCallback(vout, "video-wallpaper", Forward, vd);
#endif
sys->decoder_pool = NULL; /* FIXME remove */
- vout_display_Delete(sys->display);
+ vout_display_Delete(vd);
}
#ifdef _WIN32
--
2.20.1
More information about the vlc-devel
mailing list