summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-02-20 23:09:03 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-02-20 23:09:03 +0900
commitab31424ea612adf7eb00dc3b9bdf8df7757f0414 (patch)
tree9bb4bd47b0cc7669087f0888a7da1ba3ff92118f
parentf7cd6677666e9944a2df04edea9743fce9d9bc26 (diff)
downloadefl-ab31424ea612adf7eb00dc3b9bdf8df7757f0414.tar.gz
ecore evas: fix configure request queue count to only count changes
we counted more requests outstanding than actually existed for x11 as we sometimes sized to the SAME size or position. this keeps that number more correct only incremeting outstanding count if we change. @fix
-rw-r--r--src/modules/ecore_evas/engines/x/ecore_evas_x.c50
1 files changed, 35 insertions, 15 deletions
diff --git a/src/modules/ecore_evas/engines/x/ecore_evas_x.c b/src/modules/ecore_evas/engines/x/ecore_evas_x.c
index 418cdaa04f..4ecac62ac1 100644
--- a/src/modules/ecore_evas/engines/x/ecore_evas_x.c
+++ b/src/modules/ecore_evas/engines/x/ecore_evas_x.c
@@ -1578,9 +1578,11 @@ _ecore_evas_x_event_window_configure(void *data EINA_UNUSED, int type EINA_UNUSE
if (e->win != ee->prop.window) return ECORE_CALLBACK_PASS_ON;
if (edata->direct_resize) return ECORE_CALLBACK_PASS_ON;
+ printf("REQS OUTSTANDING: %i\n", edata->configure_reqs);
if (edata->configure_reqs > 0) edata->configure_reqs--;
edata->configure_coming = 0;
+ printf("CONFIG EV: %ix%i from wm: %i\n", e->w, e->h, (int)e->from_wm);
if ((e->from_wm) || (ee->prop.override))
{
if ((ee->x != e->x) || (ee->y != e->y))
@@ -1631,6 +1633,7 @@ _ecore_evas_x_event_window_configure(void *data EINA_UNUSED, int type EINA_UNUSE
ee->expecting_resize.w = 0;
ee->expecting_resize.h = 0;
}
+ printf(" RESIZE CB: %ix%i\n", e->w, e->h);
if (ee->func.fn_resize) ee->func.fn_resize(ee);
if (ee->prop.wm_rot.supported)
@@ -2033,9 +2036,15 @@ static void
_ecore_evas_x_move(Ecore_Evas *ee, int x, int y)
{
Ecore_Evas_Engine_Data_X11 *edata = ee->engine.data;
+ Eina_Bool changed = EINA_FALSE;
+
+ if ((ee->req.x != x) || (ee->req.y != y))
+ {
+ changed = EINA_TRUE;
+ ee->req.x = x;
+ ee->req.y = y;
+ }
- ee->req.x = x;
- ee->req.y = y;
if (edata->direct_resize)
{
if (!edata->managed)
@@ -2044,7 +2053,7 @@ _ecore_evas_x_move(Ecore_Evas *ee, int x, int y)
{
ee->x = x;
ee->y = y;
- edata->configure_reqs++;
+ if (changed) edata->configure_reqs++;
ecore_x_window_move(ee->prop.window, x, y);
if (!ee->should_be_visible)
{
@@ -2067,7 +2076,7 @@ _ecore_evas_x_move(Ecore_Evas *ee, int x, int y)
ee->x = x;
ee->y = y;
}
- edata->configure_reqs++;
+ if (changed) edata->configure_reqs++;
ecore_x_window_move(ee->prop.window, x, y);
}
if (!ee->should_be_visible)
@@ -2102,9 +2111,14 @@ static void
_ecore_evas_x_resize(Ecore_Evas *ee, int w, int h)
{
Ecore_Evas_Engine_Data_X11 *edata = ee->engine.data;
+ Eina_Bool changed = EINA_FALSE;
- ee->req.w = w;
- ee->req.h = h;
+ if ((ee->req.w != w) || (ee->req.h != h))
+ {
+ changed = EINA_TRUE;
+ ee->req.w = w;
+ ee->req.h = h;
+ }
/* check for valid property window
*
@@ -2126,7 +2140,7 @@ _ecore_evas_x_resize(Ecore_Evas *ee, int w, int h)
{
ee->w = w;
ee->h = h;
- edata->configure_reqs++;
+ if (changed) edata->configure_reqs++;
if (ee->prop.window) ecore_x_window_resize(ee->prop.window, w, h);
if (ECORE_EVAS_PORTRAIT(ee))
{
@@ -2154,7 +2168,7 @@ _ecore_evas_x_resize(Ecore_Evas *ee, int w, int h)
else
{
edata->configure_coming = 1;
- edata->configure_reqs++;
+ if (changed) edata->configure_reqs++;
if (ee->prop.window) ecore_x_window_resize(ee->prop.window, w, h);
}
}
@@ -2163,11 +2177,17 @@ static void
_ecore_evas_x_move_resize(Ecore_Evas *ee, int x, int y, int w, int h)
{
Ecore_Evas_Engine_Data_X11 *edata = ee->engine.data;
+ Eina_Bool changed = EINA_FALSE;
- ee->req.x = x;
- ee->req.y = y;
- ee->req.w = w;
- ee->req.h = h;
+ if ((ee->req.x != x) || (ee->req.y != y) ||
+ (ee->req.w != w) || (ee->req.h != h))
+ {
+ changed = EINA_TRUE;
+ ee->req.x = x;
+ ee->req.y = y;
+ ee->req.w = w;
+ ee->req.h = h;
+ }
if (edata->direct_resize)
{
@@ -2180,7 +2200,7 @@ _ecore_evas_x_move_resize(Ecore_Evas *ee, int x, int y, int w, int h)
{
if ((x != ee->x) || (y != ee->y)) change_pos = 1;
}
- edata->configure_reqs++;
+ if (changed) edata->configure_reqs++;
ecore_x_window_move_resize(ee->prop.window, x, y, w, h);
if (!edata->managed)
{
@@ -2224,7 +2244,7 @@ _ecore_evas_x_move_resize(Ecore_Evas *ee, int x, int y, int w, int h)
if ((ee->x != x) || (ee->y != y) || (edata->configure_coming))
{
edata->configure_coming = 1;
- edata->configure_reqs++;
+ if (changed) edata->configure_reqs++;
ecore_x_window_move_resize(ee->prop.window, x, y, w, h);
if (!edata->managed)
{
@@ -2235,7 +2255,7 @@ _ecore_evas_x_move_resize(Ecore_Evas *ee, int x, int y, int w, int h)
else
{
edata->configure_coming = 1;
- edata->configure_reqs++;
+ if (changed) edata->configure_reqs++;
if (ee->prop.window) ecore_x_window_resize(ee->prop.window, w, h);
}
}