examples: added missing release of previous buffer in a handler of buffer changed... 06/210306/1
authorGwanglim Lee <gl77.lee@samsung.com>
Thu, 18 Jul 2019 05:04:08 +0000 (14:04 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Thu, 18 Jul 2019 05:04:08 +0000 (14:04 +0900)
Change-Id: If15869a368cb883ecc8e03ea0fbc73fc5ff8eea1

src/examples/tzrs-consumer.c

index 715abb9276b58430fe107f61761d85dba0f59a23..97e047bae189f32fc570824e3ecb05c5e47a8ab7 100644 (file)
@@ -3,6 +3,7 @@
 #include <tizen-remote-surface-client-protocol.h>
 #include <wayland-tbm-client.h>
 #include <tbm_surface.h>
+#include <tbm_surface_internal.h>
 #include <sys/mman.h>
 
 static struct tizen_remote_surface_manager *tzrs_mng   = NULL;
@@ -326,6 +327,8 @@ _tzrs_cb_changed_buffer(void *data EINA_UNUSED,
                         uint32_t time EINA_UNUSED,
                         struct wl_array *keys EINA_UNUSED)
 {
+   tbm_surface_h tbm_surface_pre;
+
    switch (type)
      {
       case TIZEN_REMOTE_SURFACE_BUFFER_TYPE_TBM:
@@ -341,13 +344,15 @@ _tzrs_cb_changed_buffer(void *data EINA_UNUSED,
      }
 
    if (pre_buff)
-     tizen_remote_surface_release(tzrs, pre_buff);
+     {
+        tizen_remote_surface_release(tzrs, pre_buff);
+        tbm_surface_pre = wl_buffer_get_user_data(pre_buff);
+        tbm_surface_internal_unref(tbm_surface_pre);
+        wl_buffer_destroy(pre_buff);
+     }
 
    pre_buff = tbm;
-
-   /* close passed fd */
-   printf("FD: %d\n", fd);
-   close(fd);
+   close(fd); /* close passed fd */
 }
 
 static void