From 4ce081859afa6415ab4cbf69c40dcdc95f358e2b Mon Sep 17 00:00:00 2001 From: Jiyoun Park Date: Tue, 25 Oct 2011 16:44:54 +0900 Subject: [PATCH] [*] ecore evas util can send resize request even though X relpy This code related with xresize request, currently ecore evas cannot send resize request before X reply Change-Id: Ic984486bd718ff5538697ded212095d5a4bfa19b --- src/lib/ecore_evas/ecore_evas_private.h | 1 + src/lib/ecore_evas/ecore_evas_util.c | 2 +- src/lib/ecore_evas/ecore_evas_x.c | 19 +++++++++++++++---- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h index 93948a7..62f43f3 100644 --- a/src/lib/ecore_evas/ecore_evas_private.h +++ b/src/lib/ecore_evas/ecore_evas_private.h @@ -208,6 +208,7 @@ struct _Ecore_Evas_Engine unsigned char sync_began : 1; unsigned char sync_cancel : 1; unsigned char netwm_sync_set : 1; + unsigned char configure_coming : 1; struct { unsigned char modal : 1; unsigned char sticky : 1; diff --git a/src/lib/ecore_evas/ecore_evas_util.c b/src/lib/ecore_evas/ecore_evas_util.c index 96ccae3..12a0cc5 100644 --- a/src/lib/ecore_evas/ecore_evas_util.c +++ b/src/lib/ecore_evas/ecore_evas_util.c @@ -122,7 +122,7 @@ _ecore_evas_obj_callback_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj evas_object_geometry_get(obj, NULL, NULL, &ow, &oh); ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); - if ((w != ow) || (h != oh)) /* avoid recursion on ecore_evas_resize side */ + /*if ((w != ow) || (h != oh)) /* avoid recursion on ecore_evas_resize side */ ecore_evas_resize(ee, ow, oh); } diff --git a/src/lib/ecore_evas/ecore_evas_x.c b/src/lib/ecore_evas/ecore_evas_x.c index dd7314b..01120ff 100644 --- a/src/lib/ecore_evas/ecore_evas_x.c +++ b/src/lib/ecore_evas/ecore_evas_x.c @@ -917,6 +917,8 @@ _ecore_evas_x_event_window_configure(void *data __UNUSED__, int type __UNUSED__, if (e->win != ee->prop.window) return ECORE_CALLBACK_PASS_ON; if (ee->engine.x.direct_resize) return ECORE_CALLBACK_PASS_ON; + ee->engine.x.configure_coming = 0; + if ((e->from_wm) || (ee->prop.override)) { if ((ee->x != e->x) || (ee->y != e->y)) @@ -1302,8 +1304,10 @@ _ecore_evas_x_move(Ecore_Evas *ee, int x, int y) } else { - if ((ee->x != x) || (ee->y != y)) + if (((ee->x != x) || (ee->y != y)) || + (ee->engine.x.configure_coming)) { + ee->engine.x.configure_coming = 1; if (!ee->engine.x.managed) { ee->x = x; @@ -1372,8 +1376,12 @@ _ecore_evas_x_resize(Ecore_Evas *ee, int w, int h) if (ee->func.fn_resize) ee->func.fn_resize(ee); } } - else if ((ee->w != w) || (ee->h != h)) - ecore_x_window_resize(ee->prop.window, w, h); + else if (((ee->w != w) || (ee->h != h)) || + (ee->engine.x.configure_coming)) + { + ee->engine.x.configure_coming = 1; + ecore_x_window_resize(ee->prop.window, w, h); + } } static void @@ -1432,8 +1440,10 @@ _ecore_evas_x_move_resize(Ecore_Evas *ee, int x, int y, int w, int h) } } } - else + else if (((ee->w != w) || (ee->h != h) || (ee->x != x) || (ee->y != y)) || + (ee->engine.x.configure_coming)) { + ee->engine.x.configure_coming = 1; ecore_x_window_move_resize(ee->prop.window, x, y, w, h); if (!ee->engine.x.managed) { @@ -1463,6 +1473,7 @@ _ecore_evas_x_rotation_set_internal(Ecore_Evas *ee, int rotation, int resize, if (!resize) { + ee->engine.x.configure_coming = 1; if (!ee->prop.fullscreen) { ecore_x_window_resize(ee->prop.window, ee->req.h, ee->req.w); -- 2.7.4