Browse Source

vout: use vout_DisplayStarted to check started state

vout_Stop() is stopping the display, but it wasn't accounted the same
way and a decoder video format update could actually try to stop the
display a second time.
Alexandre Janniaux 5 years ago
parent
commit
2c05fe2a13
  1. 1
      include/vlc_vout.h
  2. 6
      src/input/resource.c
  3. 8
      src/video_output/video_output.c

1
include/vlc_vout.h

@ -126,6 +126,7 @@ vout_CaptionsToDisplay(vout_thread_t *vout, const void *p_cc, size_t i_cc)
* \param vout the vout to close
*/
VLC_API void vout_Close(vout_thread_t *vout);
VLC_API bool vout_DisplayStarted(vout_thread_t *vout);
/**
* This function will handle a snapshot request.

6
src/input/resource.c

@ -370,9 +370,9 @@ static void input_resource_PutVoutLocked(input_resource_t *p_resource,
assert(vout_rsc != NULL);
if (has_stopped != NULL)
*has_stopped = vout_rsc->started;
*has_stopped = vout_DisplayStarted(vout_rsc->vout);
if (vout_rsc->started)
if (vout_DisplayStarted(vout_rsc->vout))
{
vout_StopDisplay(vout_rsc->vout);
vout_rsc->started = false;
@ -500,7 +500,7 @@ vout_thread_t *input_resource_RequestVout(input_resource_t *p_resource,
return dcfg.vout;
}
if (vout_rsc->started)
if (vout_DisplayStarted(dcfg.vout))
{
assert(cfg->vout != NULL);
int ret = vout_ChangeSource(dcfg.vout, dcfg.fmt);

8
src/video_output/video_output.c

@ -2351,6 +2351,14 @@ static void vout_DisableWindow(vout_thread_sys_t *sys)
vlc_mutex_unlock(&sys->window_lock);
}
bool vout_DisplayStarted(vout_thread_t *vout)
{
vout_thread_sys_t *sys = VOUT_THREAD_TO_SYS(vout);
assert(!sys->dummy);
return sys->display != NULL;
}
void vout_Stop(vout_thread_t *vout)
{
vout_thread_sys_t *sys = VOUT_THREAD_TO_SYS(vout);

Loading…
Cancel
Save