fix deadlock 04/74804/1
authorRoman Marchenko <r.marchenko@samsung.com>
Wed, 15 Jun 2016 14:15:47 +0000 (17:15 +0300)
committerRoman Marchenko <r.marchenko@samsung.com>
Wed, 15 Jun 2016 14:15:47 +0000 (17:15 +0300)
Change-Id: I426b1067f729db754611824642b13e9ced8a7a9b
Signed-off-by: Roman Marchenko <r.marchenko@samsung.com>
src/tdm_display.c

index ef0b1ca..11e09bc 100644 (file)
@@ -949,8 +949,10 @@ tdm_output_cb_commit(tdm_output *output_backend, unsigned int sequence,
                        _pthread_mutex_lock(&private_display->lock);
 
                        if (private_layer->buffer_queue) {
+                               _pthread_mutex_unlock(&private_display->lock);
                                tbm_surface_queue_release(private_layer->buffer_queue,
                                                                                  private_layer->showing_buffer);
+                               _pthread_mutex_lock(&private_display->lock);
                        }
                }
 
@@ -1624,6 +1626,7 @@ _tbm_layer_queue_acquirable_cb(tbm_surface_queue_h surface_queue, void *data)
 
        if (ret == TDM_ERROR_NONE) {
                if (private_layer->waiting_buffer) {
+                       TDM_DBG("layer(%p) drop waiting_buffer(%p)", private_layer, private_layer->waiting_buffer);
                        _pthread_mutex_unlock(&private_display->lock);
                        tdm_buffer_unref_backend(private_layer->waiting_buffer);
                        tbm_surface_queue_release(private_layer->buffer_queue,