mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2024-10-30 15:40:45 +00:00
add role-committed hook
This commit is contained in:
parent
4d744aeb23
commit
5a18f62fee
@ -77,6 +77,10 @@ struct wlr_surface {
|
||||
struct wl_listener compositor_listener;
|
||||
void *compositor_data;
|
||||
|
||||
// surface commit callback for the role that runs before all others
|
||||
void (*role_committed)(struct wlr_surface *surface, void *role_data);
|
||||
void *role_data;
|
||||
|
||||
// subsurface properties
|
||||
struct wlr_subsurface *subsurface;
|
||||
struct wl_list subsurface_list; // wlr_subsurface::parent_link
|
||||
@ -146,4 +150,12 @@ void wlr_surface_send_leave(struct wlr_surface *surface,
|
||||
void wlr_surface_send_frame_done(struct wlr_surface *surface,
|
||||
const struct timespec *when);
|
||||
|
||||
/**
|
||||
* Set a callback for surface commit that runs before all the other callbacks.
|
||||
* This is intended for use by the surface role.
|
||||
*/
|
||||
void wlr_surface_set_role_committed(struct wlr_surface *surface,
|
||||
void (*role_committed)(struct wlr_surface *surface, void *role_data),
|
||||
void *role_data);
|
||||
|
||||
#endif
|
||||
|
@ -428,6 +428,10 @@ static void wlr_surface_commit_pending(struct wlr_surface *surface) {
|
||||
}
|
||||
}
|
||||
|
||||
if (surface->role_committed) {
|
||||
surface->role_committed(surface, surface->role_data);
|
||||
}
|
||||
|
||||
// TODO: add the invalid bitfield to this callback
|
||||
wl_signal_emit(&surface->events.commit, surface);
|
||||
}
|
||||
@ -943,3 +947,10 @@ void wlr_surface_send_frame_done(struct wlr_surface *surface,
|
||||
wl_resource_destroy(cb->resource);
|
||||
}
|
||||
}
|
||||
|
||||
void wlr_surface_set_role_committed(struct wlr_surface *surface,
|
||||
void (*role_committed)(struct wlr_surface *surface, void *role_data),
|
||||
void *role_data) {
|
||||
surface->role_committed = role_committed;
|
||||
surface->role_data = role_data;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user