summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2016-04-04 13:08:55 -0500
committerDerek Foreman <derekf@osg.samsung.com>2016-04-04 13:08:55 -0500
commitfe73aa59a2c27e5c3359b073629c6779e19c004c (patch)
tree03eef5bc4774c4e1ab8f76cd2766392b0358b18a
parentc937248eac0d0996f3cbc31a348b92c8baac2ec3 (diff)
downloadefl-fe73aa59a2c27e5c3359b073629c6779e19c004c.tar.gz
wayland-egl: Fix use after freedevs/derekf/www_fixes
eng_window_use() uses outbuf->redirect, so the clever code in eng_outbuf_reconfigure that avoided setting it to NULL to check if we needed to recreate the redirect was not very clever at all.
-rw-r--r--src/modules/evas/engines/wayland_egl/evas_wl_main.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/modules/evas/engines/wayland_egl/evas_wl_main.c b/src/modules/evas/engines/wayland_egl/evas_wl_main.c
index 00c0f9086e..532e749bf2 100644
--- a/src/modules/evas/engines/wayland_egl/evas_wl_main.c
+++ b/src/modules/evas/engines/wayland_egl/evas_wl_main.c
@@ -317,17 +317,22 @@ eng_window_resurf(Outbuf *gw)
void
eng_outbuf_reconfigure(Outbuf *ob, int w, int h, int rot, Outbuf_Depth depth EINA_UNUSED)
{
+ Eina_Bool redirected;
+
if (!ob->model) ob->model = wobbly_create(0, 0, w, h);
wobbly_resize(ob->model, w, h);
+
+ redirected = !!ob->redirect;
if (ob->redirect)
glsym_evas_gl_common_context_unredirect(ob->redirect);
+ ob->redirect = NULL;
ob->w = w;
ob->h = h;
ob->rot = rot;
eng_window_use(ob);
glsym_evas_gl_common_context_resize(ob->gl_context, w, h, rot);
- if (ob->redirect)
+ if (redirected)
ob->redirect = glsym_evas_gl_common_context_redirect(ob->gl_context);
if (ob->win)