]> git.sesse.net Git - vlc/commitdiff
vout: remove the picture lock (fixes #11669)
authorRémi Denis-Courmont <remi@remlab.net>
Sat, 1 Nov 2014 12:11:34 +0000 (14:11 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Sat, 1 Nov 2014 12:30:07 +0000 (14:30 +0200)
This is no longer necessary as picture pools are locked internally.

src/video_output/video_output.c
src/video_output/vout_internal.h

index 16054d63a013f7ef02271c736235e835737bb9fb..887e7e04e1c4c381e69db3ce1168f290f2998e65 100644 (file)
@@ -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);
     }
index 346fb95043866a87fd854ce9357488876b260f5b..3b01567b83e0d76c5df72f93b3b76d5b75a8757b 100644 (file)
@@ -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;