Waylandsink : fix the null pointer input to g_hash_table_remove 67/47867/2
authorHyunil <hyunil46.park@samsung.com>
Wed, 9 Sep 2015 11:41:25 +0000 (20:41 +0900)
committerHyunil <hyunil46.park@samsung.com>
Wed, 9 Sep 2015 11:51:56 +0000 (20:51 +0900)
Change-Id: I6ac3d81275cfee923db0475c87e41021551dfb0e
Signed-off-by: Hyunil <hyunil46.park@samsung.com>
ext/wayland/waylandpool.c

index 67dfca2..ee6457c 100755 (executable)
@@ -179,16 +179,17 @@ buffer_release (void *data, struct wl_buffer *wl_buffer)
   GstWlMeta *meta;
 
   g_mutex_lock (&self->buffers_map_mutex);
+#ifdef GST_WLSINK_ENHANCEMENT
 
+  buffer = g_hash_table_lookup (self->buffers_map, wl_buffer);
+  if (buffer) {
+    meta = gst_buffer_get_wl_meta (buffer);
+  }
   /*remove displaying buffer */
   gst_wayland_buffer_pool_remove_displaying_buffer (self, meta, wl_buffer);
 
-  buffer = g_hash_table_lookup (self->buffers_map, wl_buffer);
-
   GST_LOG_OBJECT (self, "wl_buffer::release (GstBuffer: %p)", buffer);
-
-  if (buffer) {
-    meta = gst_buffer_get_wl_meta (buffer);
+  if (meta) {
     if (meta->used_by_compositor) {
       meta->used_by_compositor = FALSE;
       /* unlock before unref because stop() may be called from here */
@@ -196,6 +197,19 @@ buffer_release (void *data, struct wl_buffer *wl_buffer)
       gst_buffer_unref (buffer);
     }
   }
+ #else
+ GST_LOG_OBJECT (self, "wl_buffer::release (GstBuffer: %p)", buffer);
+
+ if (buffer) {
+   meta = gst_buffer_get_wl_meta (buffer);
+   if (meta->used_by_compositor) {
+        meta->used_by_compositor = FALSE;
+        /* unlock before unref because stop() may be called from here */
+        GST_LOG_OBJECT (self, "Decrease ref count of buffer");
+        gst_buffer_unref (buffer);
+   }
+ }
+ #endif
   g_mutex_unlock (&self->buffers_map_mutex);
 }