e_comp_wl: clear pixmap image when client is unmapped and its object is hidden
authorMinJeong Kim <minjjj.kim@samsung.com>
Tue, 3 Jan 2017 05:53:45 +0000 (14:53 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Tue, 3 Jan 2017 10:29:03 +0000 (19:29 +0900)
 Uncommonly some clients's final buffer can be skipped if the client requests
unmap of its surface right after wl_surface@commit.
 So if evas_object of the client was hidden state and client was already
unmmapped, we can clear pixmap image mandatorily for preventing client
side rendering block(by absence of frame done event(wl_callback@done)).

Change-Id: Ibd2589f21dd46216ae2aef92a25cff6dde26c8b8
Signed-off-by: MinJeong Kim <minjjj.kim@samsung.com>
src/bin/e_comp_wl.c

index f8deb7f..bc91cd4 100644 (file)
@@ -571,6 +571,14 @@ _e_comp_wl_evas_cb_hide(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EIN
    if (!(ec = data)) return;
    if (e_object_is_del(E_OBJECT(ec))) return;
 
+   /* Uncommonly some clients's final buffer can be skipped if the client
+    * requests unmap of its surface right after wl_surface@commit.
+    * So if this client evas object is hidden state and client is already
+    * unmmapped, we can consider to clear pixmap image here mandatorily.
+    */
+   if (!ec->comp_data->mapped)
+     e_pixmap_image_clear(ec->pixmap, 1);
+
    EINA_LIST_FOREACH(ec->e.state.video_child, l, tmp)
      evas_object_hide(tmp->frame);