[gtk+/gtk-3-22] gdkwindow: Avoid re-setting the opaque region if it doesn't change
- From: Rui Matos <rtcm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-22] gdkwindow: Avoid re-setting the opaque region if it doesn't change
- Date: Fri, 18 Aug 2017 17:24:59 +0000 (UTC)
commit d17aeec08cb1ae633583c79f3015e635c943981b
Author: Rui Matos <tiagomatos gmail com>
Date: Fri Aug 18 12:01:54 2017 +0200
gdkwindow: Avoid re-setting the opaque region if it doesn't change
This avoids, at least, needless chatter with the compositor and the X
server in X11's case.
https://bugzilla.gnome.org/show_bug.cgi?id=786469
gdk/gdkinternals.h | 2 ++
gdk/gdkwindow.c | 11 +++++++++++
2 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h
index 8949dae..47d340b 100644
--- a/gdk/gdkinternals.h
+++ b/gdk/gdkinternals.h
@@ -386,6 +386,8 @@ struct _GdkWindow
GdkWindowInvalidateHandlerFunc invalidate_handler;
GdkDrawingContext *drawing_context;
+
+ cairo_region_t *opaque_region;
};
#define GDK_WINDOW_TYPE(d) ((((GdkWindow *)(d)))->window_type)
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 1c7ea53..c0e0a7d 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -588,6 +588,9 @@ gdk_window_finalize (GObject *object)
if (window->devices_inside)
g_list_free (window->devices_inside);
+ if (window->opaque_region)
+ cairo_region_destroy (window->opaque_region);
+
G_OBJECT_CLASS (gdk_window_parent_class)->finalize (object);
}
@@ -11879,6 +11882,14 @@ gdk_window_set_opaque_region (GdkWindow *window,
g_return_if_fail (GDK_IS_WINDOW (window));
g_return_if_fail (!GDK_WINDOW_DESTROYED (window));
+ if (cairo_region_equal (window->opaque_region, region))
+ return;
+
+ g_clear_pointer (&window->opaque_region, cairo_region_destroy);
+
+ if (region != NULL)
+ window->opaque_region = cairo_region_reference (region);
+
impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl);
if (impl_class->set_opaque_region)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]