forked from enlightenment/efl
ecore-wl2: Implement function pointer for configure acknowledge
We need a way to store the configure serial, and make the xdg_surface_ack_configure callback be callable by Ecore_Evas at the appropriate time. This fixes an issue where previously we were (potentially) sending a configure acknowledgment while not applying the configure due to deferred rendering. @fix Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
This commit is contained in:
parent
49e645d695
commit
298d66377e
|
@ -117,6 +117,9 @@ struct _Ecore_Wl2_Window
|
||||||
struct xdg_surface *xdg_surface;
|
struct xdg_surface *xdg_surface;
|
||||||
struct xdg_popup *xdg_popup;
|
struct xdg_popup *xdg_popup;
|
||||||
|
|
||||||
|
uint32_t configure_serial;
|
||||||
|
void (*configure_ack)(struct xdg_surface *surface, uint32_t serial);
|
||||||
|
|
||||||
Eina_Rectangle saved;
|
Eina_Rectangle saved;
|
||||||
Eina_Rectangle geometry;
|
Eina_Rectangle geometry;
|
||||||
Eina_Rectangle opaque;
|
Eina_Rectangle opaque;
|
||||||
|
|
|
@ -112,10 +112,10 @@ _xdg_surface_cb_configure(void *data, struct xdg_surface *xdg_surface EINA_UNUSE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
win->configure_serial = serial;
|
||||||
|
|
||||||
if ((w > 0) && (h > 0))
|
if ((w > 0) && (h > 0))
|
||||||
_ecore_wl2_window_configure_send(win, w, h, 0);
|
_ecore_wl2_window_configure_send(win, w, h, 0);
|
||||||
|
|
||||||
xdg_surface_ack_configure(win->xdg_surface, serial);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -314,6 +314,8 @@ ecore_wl2_window_show(Ecore_Wl2_Window *window)
|
||||||
xdg_surface_set_user_data(window->xdg_surface, window);
|
xdg_surface_set_user_data(window->xdg_surface, window);
|
||||||
xdg_surface_add_listener(window->xdg_surface,
|
xdg_surface_add_listener(window->xdg_surface,
|
||||||
&_xdg_surface_listener, window);
|
&_xdg_surface_listener, window);
|
||||||
|
|
||||||
|
window->configure_ack = xdg_surface_ack_configure;
|
||||||
}
|
}
|
||||||
else if ((disp->wl.wl_shell) && (!window->wl_shell_surface))
|
else if ((disp->wl.wl_shell) && (!window->wl_shell_surface))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue