mirror of https://github.com/encounter/SDL.git
wayland: zxdg_shell_v6 needs a configure event before using a surface at all.
Fixes Bugzilla #4109. Fixes Bugzilla #4119.
This commit is contained in:
parent
5e8c81673f
commit
2df59062dc
|
@ -113,6 +113,9 @@ handle_configure_zxdg_shell_surface(void *data, struct zxdg_surface_v6 *zxdg, ui
|
||||||
SDL_WindowData *wind = (SDL_WindowData *)data;
|
SDL_WindowData *wind = (SDL_WindowData *)data;
|
||||||
SDL_Window *window = wind->sdlwindow;
|
SDL_Window *window = wind->sdlwindow;
|
||||||
struct wl_region *region;
|
struct wl_region *region;
|
||||||
|
|
||||||
|
wind->shell_surface.zxdg.initial_configure_seen = SDL_TRUE;
|
||||||
|
|
||||||
WAYLAND_wl_egl_window_resize(wind->egl_window, window->w, window->h, 0, 0);
|
WAYLAND_wl_egl_window_resize(wind->egl_window, window->w, window->h, 0, 0);
|
||||||
|
|
||||||
region = wl_compositor_create_region(wind->waylandData->compositor);
|
region = wl_compositor_create_region(wind->waylandData->compositor);
|
||||||
|
@ -477,6 +480,17 @@ int Wayland_CreateWindow(_THIS, SDL_Window *window)
|
||||||
wl_surface_commit(data->surface);
|
wl_surface_commit(data->surface);
|
||||||
WAYLAND_wl_display_flush(c->display);
|
WAYLAND_wl_display_flush(c->display);
|
||||||
|
|
||||||
|
/* we have to wait until the surface gets a "configure" event, or
|
||||||
|
use of this surface will fail. This is a new rule for xdg_shell. */
|
||||||
|
if (c->shell.zxdg) {
|
||||||
|
if (data->shell_surface.zxdg.surface) {
|
||||||
|
while (!data->shell_surface.zxdg.initial_configure_seen) {
|
||||||
|
WAYLAND_wl_display_flush(c->display);
|
||||||
|
WAYLAND_wl_display_dispatch(c->display);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@ typedef struct {
|
||||||
struct zxdg_toplevel_v6 *toplevel;
|
struct zxdg_toplevel_v6 *toplevel;
|
||||||
struct zxdg_popup_v6 *popup;
|
struct zxdg_popup_v6 *popup;
|
||||||
} roleobj;
|
} roleobj;
|
||||||
|
SDL_bool initial_configure_seen;
|
||||||
} SDL_zxdg_shell_surface;
|
} SDL_zxdg_shell_surface;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
Loading…
Reference in New Issue