evas-wayland-shm: Don't post updates to surface if no surface
authorChris Michael <cp.michael@samsung.com>
Fri, 28 Oct 2016 12:57:10 +0000 (08:57 -0400)
committerChris Michael <cp.michael@samsung.com>
Fri, 28 Oct 2016 13:55:27 +0000 (09:55 -0400)
In the event that an ecore_evas (using wayland_shm) gets hidden then
the corresponding wl_surface gets destroyed. If evas_norender is
called after that, the outbuf_redraws_clear function follows.
Outbuf_redraw_clear function ends up trying to post updates to the
wl_surface however if that wl_surface is gone, then we end up crashing.

This patch addresses that issue by checking for a valid wl_surface
inside the engine before trying to post updates to that wl_surface.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
src/modules/evas/engines/wayland_shm/evas_outbuf.c

index d1cc7bb..c0f5368 100644 (file)
@@ -625,7 +625,8 @@ void
 _evas_outbuf_redraws_clear(Outbuf *ob)
 {
    if (!ob->priv.rect_count) return;
-   ob->surface->funcs.post(ob->surface, ob->priv.rects, ob->priv.rect_count);
+   if (ob->info->info.wl_surface)
+     ob->surface->funcs.post(ob->surface, ob->priv.rects, ob->priv.rect_count);
    free(ob->priv.rects);
    ob->priv.rect_count = 0;
 }