Commit 18a6976e authored by Benjamin Otte's avatar Benjamin Otte
Browse files

API: gdk: Don't track outstanding surfaces

You are not allowed to track surfaces from GDK or draw outside of expose
events. So we can remove ugly hacks needed previously. See for the introduction
of this workaround.
parent fe6f76a5
......@@ -267,7 +267,6 @@ struct _GdkWindowObject
cairo_region_t *input_shape;
cairo_surface_t *cairo_surface;
guint outstanding_surfaces; /* only set on impl window */
GList *devices_inside;
GHashTable *device_events;
......@@ -2784,9 +2784,6 @@ gdk_window_begin_implicit_paint (GdkWindow *window, GdkRectangle *rect)
private->implicit_paint != NULL)
return FALSE; /* Don't stack implicit paints */
if (private->outstanding_surfaces != 0)
return FALSE; /* May conflict with direct drawing to cairo surface */
/* Never do implicit paints for foreign windows, they don't need
* double buffer combination since they have no client side children,
* and creating surfaces for them is risky since they could disappear
......@@ -3393,11 +3390,7 @@ move_region_on_impl (GdkWindowObject *impl_window,
cairo_region_destroy (exposing);
if (impl_window->outstanding_surfaces == 0) /* Enable flicker free handling of moves. */
append_move_region (impl_window, region, dx, dy);
do_move_region_bits_on_impl (impl_window,
region, dx, dy);
append_move_region (impl_window, region, dx, dy);
cairo_region_destroy (region);
......@@ -3702,7 +3695,6 @@ gdk_window_cairo_surface_destroy (void *data)
GdkWindowObject *private = (GdkWindowObject*) data;
private->cairo_surface = NULL;
static cairo_surface_t *
......@@ -3754,8 +3746,6 @@ gdk_window_ref_cairo_surface (GdkDrawable *drawable)
if (private->cairo_surface)
cairo_surface_set_user_data (private->cairo_surface, &gdk_window_cairo_key,
drawable, gdk_window_cairo_surface_destroy);
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment