ev->states |= ECORE_WL2_WINDOW_STATE_MAXIMIZED;
win->req_config = win->def_config;
+ win->pending.configure_event = EINA_TRUE;
ERR("[WINDOW] Generate WINDOW_CONFIGURE event.. win:%d, states:%d, geo(%d,%d,%dx%d), type:%d", win->resource_id, ev->states, ev->x, ev->y, ev->w, ev->h, size_type);
ecore_event_add(ECORE_WL2_EVENT_WINDOW_CONFIGURE, ev, NULL, NULL);
//
static void
-_ecore_evas_wl_common_resize(Ecore_Evas *ee, int w, int h)
+_ecore_evas_wl_common_resize_job(void *data)
{
+ Ecore_Evas *ee = data;
Ecore_Evas_Engine_Wl_Data *wdata;
int ow, oh, ew, eh;
int diff = 0;
if (!ee) return;
+ int w = ee->expecting_resize.w;
+ int h = ee->expecting_resize.h;
+
wdata = ee->engine.data;
if (!wdata) return;
+ wdata->resize_job = NULL;
+
ee->req.w = w;
ee->req.h = h;
if (ee->func.fn_resize) ee->func.fn_resize(ee);
}
ecore_wl2_window_geometry_set(wdata->win, ee->x, ee->y, w, h);
+
+}
+
+static void
+_ecore_evas_wl_common_resize(Ecore_Evas *ee, int w, int h)
+{
+ Ecore_Evas_Engine_Wl_Data *wdata;
+
+ if (!ee) return;
+
+ ee->expecting_resize.w = w;
+ ee->expecting_resize.h = h;
+
+ wdata = ee->engine.data;
+ if (!wdata) return;
+
+ if (wdata->win->pending.configure_event)
+ {
+ if (wdata->resize_job) ecore_job_del(wdata->resize_job);
+ wdata->resize_job = ecore_job_add(_ecore_evas_wl_common_resize_job, ee);
+ }
+ else _ecore_evas_wl_common_resize_job(ee);
}
static void
wdata = ee->engine.data;
if (!wdata) return ECORE_CALLBACK_PASS_ON;
- if (wdata->win->pending.geom) return ECORE_CALLBACK_PASS_ON;
+
+ wdata->win->pending.configure_event = EINA_FALSE;
if (!ecore_wl2_window_resizing_get(wdata->win) && !wdata->resizing)
wdata->cw = wdata->ch = 0;