screenshooter: do not execute _e_tz_screenmirror_buffer_free in _e_tz_screenmirror_bu... 78/91078/4
authorJunkyeong Kim <jk0430.kim@samsung.com>
Wed, 5 Oct 2016 13:22:11 +0000 (22:22 +0900)
committerBoram Park <boram1288.park@samsung.com>
Fri, 7 Oct 2016 06:55:22 +0000 (15:55 +0900)
Change-Id: I675a2ffb7f156c294d62d5e2b78be5dab563713f
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
src/e_devicemgr_screenshooter.c

index 430e12b027c29234675644e0c6e357409ab56390..14182137baf655a4a4f158021afbcd8219cded5f 100644 (file)
@@ -73,6 +73,7 @@ static E_Mirror *keep_mirror;
 
 static void _e_tz_screenmirror_destroy(E_Mirror *mirror);
 static void _e_tz_screenmirror_buffer_dequeue(E_Mirror_Buffer *buffer);
+static void _e_tz_screenmirror_buffer_cb_free(E_Devmgr_Buf *mbuf, void *data);
 static void _e_tz_screenmirror_vblank_handler(void *data);
 
 static void
@@ -517,18 +518,19 @@ _e_tz_screenmirror_buffer_free(E_Mirror_Buffer *buffer)
    wl_list_remove(&buffer->destroy_listener.link);
 
    if (buffer->mbuf)
-     e_devmgr_buffer_unref(buffer->mbuf);
+     {
+        e_devmgr_buffer_free_func_del(buffer->mbuf, _e_tz_screenmirror_buffer_cb_free, buffer);
+        e_devmgr_buffer_unref(buffer->mbuf);
+
+        mirror->buffer_clear_check = eina_list_remove(mirror->buffer_clear_check, buffer->mbuf);
+     }
 
-   mirror->buffer_clear_check = eina_list_remove(mirror->buffer_clear_check, buffer->mbuf);
    E_FREE(buffer);
 }
 
 static void
 _e_tz_screenmirror_buffer_cb_destroy(struct wl_listener *listener, void *data)
 {
-   E_Mirror_Buffer *buffer = container_of(listener, E_Mirror_Buffer, destroy_listener);
-
-   _e_tz_screenmirror_buffer_free(buffer);
 }
 
 static void