Commit 5ac9185d authored by Thomas Guillem's avatar Thomas Guillem Committed by Rémi Denis-Courmont

vout: add vout_Cancel

This function will cancel the decoder picture pool.
Signed-off-by: default avatarRémi Denis-Courmont <remi@remlab.net>
parent e4752428
...@@ -29,6 +29,7 @@ enum { ...@@ -29,6 +29,7 @@ enum {
VOUT_CONTROL_INIT, VOUT_CONTROL_INIT,
VOUT_CONTROL_CLEAN, VOUT_CONTROL_CLEAN,
VOUT_CONTROL_REINIT, /* cfg */ VOUT_CONTROL_REINIT, /* cfg */
VOUT_CONTROL_CANCEL,
#if 0 #if 0
/* */ /* */
......
...@@ -303,6 +303,12 @@ static void VoutDestructor(vlc_object_t *object) ...@@ -303,6 +303,12 @@ static void VoutDestructor(vlc_object_t *object)
} }
/* */ /* */
void vout_Cancel(vout_thread_t *vout)
{
vout_control_PushVoid(&vout->p->control, VOUT_CONTROL_CANCEL);
vout_control_WaitEmpty(&vout->p->control);
}
void vout_ChangePause(vout_thread_t *vout, bool is_paused, mtime_t date) void vout_ChangePause(vout_thread_t *vout, bool is_paused, mtime_t date)
{ {
vout_control_cmd_t cmd; vout_control_cmd_t cmd;
...@@ -1447,6 +1453,11 @@ static int ThreadReinit(vout_thread_t *vout, ...@@ -1447,6 +1453,11 @@ static int ThreadReinit(vout_thread_t *vout,
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static void ThreadCancel(vout_thread_t *vout)
{
picture_pool_Cancel(vout->p->decoder_pool);
}
static int ThreadControl(vout_thread_t *vout, vout_control_cmd_t cmd) static int ThreadControl(vout_thread_t *vout, vout_control_cmd_t cmd)
{ {
switch(cmd.type) { switch(cmd.type) {
...@@ -1466,6 +1477,9 @@ static int ThreadControl(vout_thread_t *vout, vout_control_cmd_t cmd) ...@@ -1466,6 +1477,9 @@ static int ThreadControl(vout_thread_t *vout, vout_control_cmd_t cmd)
if (ThreadReinit(vout, cmd.u.cfg)) if (ThreadReinit(vout, cmd.u.cfg))
return 1; return 1;
break; break;
case VOUT_CONTROL_CANCEL:
ThreadCancel(vout);
break;
case VOUT_CONTROL_SUBPICTURE: case VOUT_CONTROL_SUBPICTURE:
ThreadDisplaySubpicture(vout, cmd.u.subpicture); ThreadDisplaySubpicture(vout, cmd.u.subpicture);
cmd.u.subpicture = NULL; cmd.u.subpicture = NULL;
......
...@@ -52,6 +52,11 @@ void vout_Flush( vout_thread_t *p_vout, mtime_t i_date ); ...@@ -52,6 +52,11 @@ void vout_Flush( vout_thread_t *p_vout, mtime_t i_date );
*/ */
void vout_Reset( vout_thread_t *p_vout ); void vout_Reset( vout_thread_t *p_vout );
/*
* Cancel the vout, it won't return any pictures after this call.
*/
void vout_Cancel( vout_thread_t *p_vout );
/** /**
* This function will force to display the next picture while paused * This function will force to display the next picture while paused
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment