mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-12-23 18:39:48 +01:00
add role-committed hook
This commit is contained in:
parent
4d744aeb23
commit
5a18f62fee
2 changed files with 23 additions and 0 deletions
|
@ -77,6 +77,10 @@ struct wlr_surface {
|
||||||
struct wl_listener compositor_listener;
|
struct wl_listener compositor_listener;
|
||||||
void *compositor_data;
|
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
|
// subsurface properties
|
||||||
struct wlr_subsurface *subsurface;
|
struct wlr_subsurface *subsurface;
|
||||||
struct wl_list subsurface_list; // wlr_subsurface::parent_link
|
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,
|
void wlr_surface_send_frame_done(struct wlr_surface *surface,
|
||||||
const struct timespec *when);
|
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
|
#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
|
// TODO: add the invalid bitfield to this callback
|
||||||
wl_signal_emit(&surface->events.commit, surface);
|
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);
|
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 a new issue