X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fvideo_output%2Fvideo_output.c;h=d827b41db8816593d6fbed133a6c463cdfc116fd;hb=4b9c63a36eded246ad9ef1ea0de0cf7b38d29ad9;hp=cb17af39d47505407bbc24470f39447d71138e4e;hpb=37a27cc6447a51b5780adf0917ab7b22a4456a5b;p=vlc diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c index cb17af39d4..d827b41db8 100644 --- a/src/video_output/video_output.c +++ b/src/video_output/video_output.c @@ -157,7 +157,6 @@ static vout_thread_t *VoutCreate(vlc_object_t *object, vlc_object_release(vout); return NULL; } - spu_Attach(vout->p->p_spu, VLC_OBJECT(vout), true); vout_control_WaitEmpty(&vout->p->control); @@ -167,6 +166,10 @@ static vout_thread_t *VoutCreate(vlc_object_t *object, return NULL; } + vout->p->input = cfg->input; + if (vout->p->input) + spu_Attach(vout->p->p_spu, vout->p->input, true); + return vout; } @@ -182,10 +185,16 @@ vout_thread_t *(vout_Request)(vlc_object_t *object, /* If a vout is provided, try reusing it */ if (vout) { - spu_Attach(vout->p->p_spu, VLC_OBJECT(vout), false); vlc_object_detach(vout); vlc_object_attach(vout, object); - spu_Attach(vout->p->p_spu, VLC_OBJECT(vout), true); + + if (vout->p->input != cfg->input) { + if (vout->p->input) + spu_Attach(vout->p->p_spu, vout->p->input, false); + vout->p->input = cfg->input; + if (vout->p->input) + spu_Attach(vout->p->p_spu, vout->p->input, true); + } vout_control_cmd_t cmd; vout_control_cmd_Init(&cmd, VOUT_CONTROL_REINIT); @@ -216,7 +225,8 @@ void vout_Close(vout_thread_t *vout) { assert(vout); - spu_Attach(vout->p->p_spu, VLC_OBJECT(vout), false); + if (vout->p->input) + spu_Attach(vout->p->p_spu, vout->p->input, false); vlc_object_detach(vout->p->p_spu); vout_snapshot_End(&vout->p->snapshot);