diff options
| -rw-r--r-- | include/wlr/types/wlr_compositor.h | 1 | ||||
| -rw-r--r-- | types/wlr_compositor.c | 3 | 
2 files changed, 4 insertions, 0 deletions
diff --git a/include/wlr/types/wlr_compositor.h b/include/wlr/types/wlr_compositor.h index 55d83fe8..75d6605f 100644 --- a/include/wlr/types/wlr_compositor.h +++ b/include/wlr/types/wlr_compositor.h @@ -140,6 +140,7 @@ struct wlr_surface {  	struct {  		struct wl_signal client_commit; +		struct wl_signal precommit; // const struct wlr_surface_state *  		struct wl_signal commit;  		struct wl_signal new_subsurface;  		struct wl_signal destroy; diff --git a/types/wlr_compositor.c b/types/wlr_compositor.c index 996a046d..83c98ffc 100644 --- a/types/wlr_compositor.c +++ b/types/wlr_compositor.c @@ -438,6 +438,8 @@ static void surface_commit_state(struct wlr_surface *surface,  		surface->role->precommit(surface, next);  	} +	wl_signal_emit_mutable(&surface->events.precommit, next); +  	bool invalid_buffer = next->committed & WLR_SURFACE_STATE_BUFFER;  	surface_update_damage(&surface->buffer_damage, &surface->current, next); @@ -692,6 +694,7 @@ static struct wlr_surface *surface_create(struct wl_client *client,  	surface->pending.seq = 1;  	wl_signal_init(&surface->events.client_commit); +	wl_signal_init(&surface->events.precommit);  	wl_signal_init(&surface->events.commit);  	wl_signal_init(&surface->events.destroy);  	wl_signal_init(&surface->events.new_subsurface);  | 
