diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c index 686b259df..eadbffb58 100644 --- a/hw/xwayland/xwayland.c +++ b/hw/xwayland/xwayland.c @@ -1092,6 +1092,14 @@ static const struct wl_callback_listener frame_listener = { frame_callback }; +void +xwl_window_create_frame_callback(struct xwl_window *xwl_window) +{ + xwl_window->frame_callback = wl_surface_frame(xwl_window->surface); + wl_callback_add_listener(xwl_window->frame_callback, &frame_listener, + xwl_window); +} + static Bool xwl_destroy_window(WindowPtr window) { @@ -1177,9 +1185,7 @@ xwl_window_post_damage(struct xwl_window *xwl_window) } } - xwl_window->frame_callback = wl_surface_frame(xwl_window->surface); - wl_callback_add_listener(xwl_window->frame_callback, &frame_listener, xwl_window); - + xwl_window_create_frame_callback(xwl_window); wl_surface_commit(xwl_window->surface); DamageEmpty(window_get_damage(xwl_window->window)); diff --git a/hw/xwayland/xwayland.h b/hw/xwayland/xwayland.h index 132dfc10a..e6ff02a5b 100644 --- a/hw/xwayland/xwayland.h +++ b/hw/xwayland/xwayland.h @@ -418,6 +418,7 @@ struct xwl_screen *xwl_screen_get(ScreenPtr screen); Bool xwl_screen_has_resolution_change_emulation(struct xwl_screen *xwl_screen); struct xwl_output *xwl_screen_get_first_output(struct xwl_screen *xwl_screen); void xwl_screen_check_resolution_change_emulation(struct xwl_screen *xwl_screen); +void xwl_window_create_frame_callback(struct xwl_window *xwl_window); Bool xwl_window_has_viewport_enabled(struct xwl_window *xwl_window); Bool xwl_window_is_toplevel(WindowPtr window);