mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-04-21 06:46:46 -04:00
scene: use wlr_frame_scheduler
This commit is contained in:
parent
374a4a8d7e
commit
5424b2d44d
3 changed files with 16 additions and 7 deletions
|
|
@ -185,7 +185,7 @@ static void scene_node_get_size(struct wlr_scene_node *node, int *lx, int *ly);
|
|||
typedef bool (*scene_node_box_iterator_func_t)(struct wlr_scene_node *node,
|
||||
int sx, int sy, void *data);
|
||||
|
||||
static bool _scene_nodes_in_box(struct wlr_scene_node *node, struct wlr_box *box,
|
||||
static bool _scene_nodes_in_box(struct wlr_scene_node *node, struct wlr_box *box,
|
||||
scene_node_box_iterator_func_t iterator, void *user_data, int lx, int ly) {
|
||||
if (!node->enabled) {
|
||||
return false;
|
||||
|
|
@ -216,7 +216,7 @@ static bool _scene_nodes_in_box(struct wlr_scene_node *node, struct wlr_box *box
|
|||
return false;
|
||||
}
|
||||
|
||||
static bool scene_nodes_in_box(struct wlr_scene_node *node, struct wlr_box *box,
|
||||
static bool scene_nodes_in_box(struct wlr_scene_node *node, struct wlr_box *box,
|
||||
scene_node_box_iterator_func_t iterator, void *user_data) {
|
||||
int x, y;
|
||||
wlr_scene_node_coords(node, &x, &y);
|
||||
|
|
@ -341,7 +341,7 @@ static void update_node_update_outputs(struct wlr_scene_node *node,
|
|||
|
||||
active_outputs |= 1ull << scene_output->index;
|
||||
}
|
||||
|
||||
|
||||
pixman_region32_fini(&intersection);
|
||||
}
|
||||
|
||||
|
|
@ -556,7 +556,7 @@ void wlr_scene_buffer_set_buffer_with_damage(struct wlr_scene_buffer *scene_buff
|
|||
struct wlr_buffer *buffer, pixman_region32_t *damage) {
|
||||
// specifying a region for a NULL buffer doesn't make sense. We need to know
|
||||
// about the buffer to scale the buffer local coordinates down to scene
|
||||
// coordinates.
|
||||
// coordinates.
|
||||
assert(buffer || !damage);
|
||||
|
||||
if (buffer == scene_buffer->buffer) {
|
||||
|
|
@ -1204,6 +1204,7 @@ struct wlr_scene_output *wlr_scene_output_create(struct wlr_scene *scene,
|
|||
wlr_addon_init(&scene_output->addon, &output->addons, scene, &output_addon_impl);
|
||||
|
||||
wlr_damage_ring_init(&scene_output->damage_ring);
|
||||
wlr_frame_scheduler_init(&scene_output->frame_scheduler, output);
|
||||
wl_list_init(&scene_output->damage_highlight_regions);
|
||||
|
||||
int prev_output_index = -1;
|
||||
|
|
@ -1265,6 +1266,7 @@ void wlr_scene_output_destroy(struct wlr_scene_output *scene_output) {
|
|||
|
||||
wlr_addon_finish(&scene_output->addon);
|
||||
wlr_damage_ring_finish(&scene_output->damage_ring);
|
||||
wlr_frame_scheduler_finish(&scene_output->frame_scheduler);
|
||||
wl_list_remove(&scene_output->link);
|
||||
wl_list_remove(&scene_output->output_commit.link);
|
||||
wl_list_remove(&scene_output->output_mode.link);
|
||||
|
|
@ -1597,6 +1599,8 @@ bool wlr_scene_output_commit(struct wlr_scene_output *scene_output) {
|
|||
|
||||
wlr_output_render_software_cursors(output, &damage);
|
||||
|
||||
wlr_frame_scheduler_mark_render_submitted(&scene_output->frame_scheduler,
|
||||
renderer);
|
||||
wlr_renderer_end(renderer);
|
||||
pixman_region32_fini(&damage);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue