From: RĂ©mi Denis-Courmont Date: Sat, 1 Nov 2014 12:11:34 +0000 (+0200) Subject: vout: remove the picture lock (fixes #11669) X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=b8c35c764a0bcceedf07a438e2b025743cf47eb3;p=vlc vout: remove the picture lock (fixes #11669) This is no longer necessary as picture pools are locked internally. --- diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c index 16054d63a0..887e7e04e1 100644 --- a/src/video_output/video_output.c +++ b/src/video_output/video_output.c @@ -140,7 +140,6 @@ static vout_thread_t *VoutCreate(vlc_object_t *object, vout_snapshot_Init(&vout->p->snapshot); /* Initialize locks */ - vlc_mutex_init(&vout->p->picture_lock); vlc_mutex_init(&vout->p->filter.lock); vlc_mutex_init(&vout->p->spu_lock); @@ -286,7 +285,6 @@ static void VoutDestructor(vlc_object_t *object) /* Destroy the locks */ vlc_mutex_destroy(&vout->p->spu_lock); - vlc_mutex_destroy(&vout->p->picture_lock); vlc_mutex_destroy(&vout->p->filter.lock); vout_control_Clean(&vout->p->control); @@ -346,7 +344,6 @@ void vout_FixLeaks( vout_thread_t *vout ) } - vlc_mutex_lock(&vout->p->picture_lock); picture = picture_pool_Get(vout->p->decoder_pool); if (picture != NULL) @@ -357,7 +354,6 @@ void vout_FixLeaks( vout_thread_t *vout ) msg_Err(vout, "pictures leaked, trying to workaround"); picture_pool_NonEmpty(vout->p->decoder_pool); } - vlc_mutex_unlock(&vout->p->picture_lock); } void vout_NextPicture(vout_thread_t *vout, mtime_t *duration) @@ -412,14 +408,11 @@ void vout_FlushSubpictureChannel( vout_thread_t *vout, int channel ) */ picture_t *vout_GetPicture(vout_thread_t *vout) { - /* Get lock */ - vlc_mutex_lock(&vout->p->picture_lock); picture_t *picture = picture_pool_Get(vout->p->decoder_pool); if (picture) { picture_Reset(picture); VideoFormatCopyCropAr(&picture->format, &vout->p->original); } - vlc_mutex_unlock(&vout->p->picture_lock); return picture; } @@ -445,11 +438,7 @@ void vout_PutPicture(vout_thread_t *vout, picture_t *picture) */ void vout_ReleasePicture(vout_thread_t *vout, picture_t *picture) { - vlc_mutex_lock(&vout->p->picture_lock); - picture_Release(picture); - - vlc_mutex_unlock(&vout->p->picture_lock); } /* */ @@ -1578,16 +1567,12 @@ static void *Thread(void *object) if (ThreadControl(vout, cmd)) return NULL; - vlc_mutex_lock(&sys->picture_lock); - deadline = VLC_TS_INVALID; while (!ThreadDisplayPicture(vout, &deadline)) ; const bool picture_interlaced = sys->displayed.is_interlaced; - vlc_mutex_unlock(&sys->picture_lock); - vout_SetInterlacingState(vout, &interlacing, picture_interlaced); vout_ManageWrapper(vout); } diff --git a/src/video_output/vout_internal.h b/src/video_output/vout_internal.h index 346fb95043..3b01567b83 100644 --- a/src/video_output/vout_internal.h +++ b/src/video_output/vout_internal.h @@ -126,7 +126,6 @@ struct vout_thread_sys_t vlc_mouse_t mouse; /* */ - vlc_mutex_t picture_lock; /**< picture heap lock */ picture_pool_t *private_pool; picture_pool_t *display_pool; picture_pool_t *decoder_pool;