From a5df8468b0e6e59b25c16607c35944a012fe7210 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Mon, 13 Aug 2012 14:33:05 +0000 Subject: [PATCH] Ecore_Evas (wayland): Fix ecore_evas egl windows to properly resize from the top when asked too (this is akin to the wayland_shm resize fix). Also, when we update the ecore_wl_window size, we should be sure to call the buffer attach function so that server size allocation can be kept in sync with the window allocation. SVN revision: 75214 --- .../src/lib/ecore_evas/ecore_evas_wayland_egl.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_egl.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_egl.c index 0ab2703814..e94eca894f 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_egl.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_egl.c @@ -492,7 +492,7 @@ _ecore_evas_wl_resize(Ecore_Evas *ee, int w, int h) } if (ee->engine.wl.frame) - evas_object_resize(ee->engine.wl.frame, ee->w, ee->h); + evas_object_resize(ee->engine.wl.frame, w, h); /* set new engine destination */ /* evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo); */ @@ -503,7 +503,10 @@ _ecore_evas_wl_resize(Ecore_Evas *ee, int w, int h) /* ecore_wl_flush(); */ if (ee->engine.wl.win) - ecore_wl_window_update_size(ee->engine.wl.win, ee->w, ee->h); + { + ecore_wl_window_update_size(ee->engine.wl.win, w, h); + ecore_wl_window_buffer_attach(ee->engine.wl.win, NULL, 0, 0); + } if (ee->func.fn_resize) ee->func.fn_resize(ee); } @@ -859,6 +862,15 @@ _ecore_evas_wayland_egl_resize(Ecore_Evas *ee, int location) if (!ee) return; if (ee->engine.wl.win) { + Evas_Engine_Info_Wayland_Egl *einfo; + + if ((einfo = (Evas_Engine_Info_Wayland_Egl *)evas_engine_info_get(ee->evas))) + { + einfo->info.edges = location; + if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo)) + ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver); + } + ee->engine.wl.win->resizing = EINA_TRUE; ecore_wl_window_resize(ee->engine.wl.win, ee->w, ee->h, location); }