handle the x11 configure event

This fixes the window size of old games in Wine.
This commit is contained in:
Guido Cella 2020-12-08 15:10:41 +01:00
parent 0016a209e4
commit 0f48c9552e

13
dwl.c
View file

@ -96,6 +96,7 @@ typedef struct {
} surface; } surface;
#ifdef XWAYLAND #ifdef XWAYLAND
struct wl_listener activate; struct wl_listener activate;
struct wl_listener configure;
#endif #endif
struct wl_listener commit; struct wl_listener commit;
struct wl_listener map; struct wl_listener map;
@ -335,6 +336,7 @@ static struct wl_listener request_set_sel = {.notify = setsel};
#ifdef XWAYLAND #ifdef XWAYLAND
static void activatex11(struct wl_listener *listener, void *data); static void activatex11(struct wl_listener *listener, void *data);
static void configurex11(struct wl_listener *listener, void *data);
static void createnotifyx11(struct wl_listener *listener, void *data); static void createnotifyx11(struct wl_listener *listener, void *data);
static Atom getatom(xcb_connection_t *xc, const char *name); static Atom getatom(xcb_connection_t *xc, const char *name);
static void renderindependents(struct wlr_output *output, struct timespec *now); static void renderindependents(struct wlr_output *output, struct timespec *now);
@ -2388,6 +2390,15 @@ activatex11(struct wl_listener *listener, void *data)
wlr_xwayland_surface_activate(c->surface.xwayland, 1); wlr_xwayland_surface_activate(c->surface.xwayland, 1);
} }
void
configurex11(struct wl_listener *listener, void *data)
{
Client *c = wl_container_of(listener, c, configure);
struct wlr_xwayland_surface_configure_event *event = data;
wlr_xwayland_surface_configure(c->surface.xwayland,
event->x, event->y, event->width, event->height);
}
void void
createnotifyx11(struct wl_listener *listener, void *data) createnotifyx11(struct wl_listener *listener, void *data)
{ {
@ -2407,6 +2418,8 @@ createnotifyx11(struct wl_listener *listener, void *data)
wl_signal_add(&xwayland_surface->events.unmap, &c->unmap); wl_signal_add(&xwayland_surface->events.unmap, &c->unmap);
c->activate.notify = activatex11; c->activate.notify = activatex11;
wl_signal_add(&xwayland_surface->events.request_activate, &c->activate); wl_signal_add(&xwayland_surface->events.request_activate, &c->activate);
c->configure.notify = configurex11;
wl_signal_add(&xwayland_surface->events.request_configure, &c->configure);
c->destroy.notify = destroynotify; c->destroy.notify = destroynotify;
wl_signal_add(&xwayland_surface->events.destroy, &c->destroy); wl_signal_add(&xwayland_surface->events.destroy, &c->destroy);
} }