diff options
| author | Kirill Primak <vyivel@eclair.cafe> | 2023-11-23 16:10:54 +0300 | 
|---|---|---|
| committer | Kirill Primak <vyivel@eclair.cafe> | 2023-12-07 12:43:39 +0300 | 
| commit | 1cc7ab3e2927d6efb7659905ad4cdd37d816e436 (patch) | |
| tree | 0efc713371125cd265c0bfbf77456cf9c53d60bd /tinywl | |
| parent | 1f64f3925c384e9bf20ad813ee3a9195403606ea (diff) | |
| download | wlroots-1cc7ab3e2927d6efb7659905ad4cdd37d816e436.tar.xz | |
tinywl: don't send configures to uninitialized xdg_surfaces
Diffstat (limited to 'tinywl')
| -rw-r--r-- | tinywl/tinywl.c | 18 | 
1 files changed, 12 insertions, 6 deletions
diff --git a/tinywl/tinywl.c b/tinywl/tinywl.c index 1dfca170..d620e682 100644 --- a/tinywl/tinywl.c +++ b/tinywl/tinywl.c @@ -751,13 +751,17 @@ static void xdg_toplevel_request_resize(  static void xdg_toplevel_request_maximize(  		struct wl_listener *listener, void *data) {  	/* This event is raised when a client would like to maximize itself, -	 * typically because the user clicked on the maximize button on -	 * client-side decorations. tinywl doesn't support maximization, but -	 * to conform to xdg-shell protocol we still must send a configure. -	 * wlr_xdg_surface_schedule_configure() is used to send an empty reply. */ +	 * typically because the user clicked on the maximize button on client-side +	 * decorations. tinywl doesn't support maximization, but to conform to +	 * xdg-shell protocol we still must send a configure. +	 * wlr_xdg_surface_schedule_configure() is used to send an empty reply. +	 * However, if the request was sent before an initial commit, we don't do +	 * anything and let the client finish the initial surface setup. */  	struct tinywl_toplevel *toplevel =  		wl_container_of(listener, toplevel, request_maximize); -	wlr_xdg_surface_schedule_configure(toplevel->xdg_toplevel->base); +	if (toplevel->xdg_toplevel->base->initial_commit) { +		wlr_xdg_surface_schedule_configure(toplevel->xdg_toplevel->base); +	}  }  static void xdg_toplevel_request_fullscreen( @@ -765,7 +769,9 @@ static void xdg_toplevel_request_fullscreen(  	/* Just as with request_maximize, we must send a configure here. */  	struct tinywl_toplevel *toplevel =  		wl_container_of(listener, toplevel, request_fullscreen); -	wlr_xdg_surface_schedule_configure(toplevel->xdg_toplevel->base); +	if (toplevel->xdg_toplevel->base->initial_commit) { +		wlr_xdg_surface_schedule_configure(toplevel->xdg_toplevel->base); +	}  }  static void server_new_xdg_toplevel(struct wl_listener *listener, void *data) {  | 
