From 97a69cee5a12e11912b09f6617001a7da005f264 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Fri, 18 Apr 2014 18:19:02 -0400 Subject: [PATCH] wayland-surface: Simplify move_double_buffered_state The majority of the data we can simply copy from one to the other. --- src/wayland/meta-wayland-surface.c | 38 +++++++----------------------- 1 file changed, 8 insertions(+), 30 deletions(-) diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c index 596286823..b9219fc99 100644 --- a/src/wayland/meta-wayland-surface.c +++ b/src/wayland/meta-wayland-surface.c @@ -117,13 +117,6 @@ surface_process_damage (MetaWaylandSurface *surface, } } -static void -empty_region (cairo_region_t *region) -{ - cairo_rectangle_int_t rectangle = { 0, 0, 0, 0 }; - cairo_region_intersect_rectangle (region, &rectangle); -} - static void ensure_buffer_texture (MetaWaylandBuffer *buffer) { @@ -198,9 +191,11 @@ pending_state_init (MetaWaylandPendingState *state) state->dx = 0; state->dy = 0; + state->input_region = NULL; + state->opaque_region = NULL; + state->damage = cairo_region_create (); - state->buffer_destroy_listener.notify = - surface_handle_pending_buffer_destroy; + state->buffer_destroy_listener.notify = surface_handle_pending_buffer_destroy; wl_list_init (&state->frame_callback_list); state->frame_extents_changed = FALSE; @@ -235,31 +230,14 @@ move_pending_state (MetaWaylandPendingState *from, if (from->buffer) wl_list_remove (&from->buffer_destroy_listener.link); - to->newly_attached = from->newly_attached; - from->newly_attached = FALSE; + wl_list_insert_list (&to->frame_callback_list, &from->frame_callback_list); + + *to = *from; - to->buffer = from->buffer; - from->buffer = NULL; if (to->buffer) wl_signal_add (&to->buffer->destroy_signal, &to->buffer_destroy_listener); - to->dx = from->dx; - to->dy = from->dy; - from->dx = from->dy = 0; - - empty_region (to->damage); - cairo_region_union (to->damage, from->damage); - empty_region (from->damage); - - g_clear_pointer (&to->input_region, cairo_region_destroy); - g_clear_pointer (&to->opaque_region, cairo_region_destroy); - to->input_region = from->input_region; - to->opaque_region = from->opaque_region; - from->input_region = from->opaque_region = NULL; - - wl_list_init (&to->frame_callback_list); - wl_list_insert_list (&to->frame_callback_list, &from->frame_callback_list); - wl_list_init (&from->frame_callback_list); + pending_state_init (from); } static void