pepper: Correctly manage buffer ref count when keep_buffer is TRUE
authorTaekyun Kim <tkq.kim@samsung.com>
Tue, 20 Oct 2015 06:51:06 +0000 (15:51 +0900)
committerTaekyun Kim <tkq.kim@samsung.com>
Tue, 20 Oct 2015 06:51:06 +0000 (15:51 +0900)
Change-Id: I445af4554951b7a94dc24623aae503669477ef04

src/lib/pepper/surface.c

index a9e8979..6bfe789 100644 (file)
@@ -381,8 +381,12 @@ pepper_surface_commit(pepper_surface_t *surface)
         if (surface->buffer.buffer)
         {
             pepper_event_listener_remove(surface->buffer.destroy_listener);
-            pepper_event_listener_remove(surface->buffer.release_listener);
-            pepper_buffer_unreference(surface->buffer.buffer);
+
+            if (surface->buffer.keep_buffer)
+            {
+                pepper_event_listener_remove(surface->buffer.release_listener);
+                pepper_buffer_unreference(surface->buffer.buffer);
+            }
         }
 
         if (surface->pending.buffer)
@@ -559,8 +563,5 @@ pepper_surface_flush_damage(pepper_surface_t *surface)
     pixman_region32_clear(&surface->damage_region);
 
     if (surface->buffer.buffer && !surface->buffer.keep_buffer)
-    {
         pepper_buffer_unreference(surface->buffer.buffer);
-        pepper_event_listener_remove(surface->buffer.destroy_listener);
-    }
 }