aboutsummaryrefslogtreecommitdiffstats
path: root/unmaintained/mutter/mutter-gtk2.patch
diff options
context:
space:
mode:
authorCarlo Landmeter <clandmeter@gmail.com>2014-10-28 00:08:19 +0100
committerCarlo Landmeter <clandmeter@gmail.com>2014-10-28 00:08:19 +0100
commit2186453f9065ae150bb231d6416a5db0a15186c4 (patch)
tree5f7d5eed84cc687cd290c546a14eb4317889e735 /unmaintained/mutter/mutter-gtk2.patch
parentc8816801350a7647d55cfa64d3150ded02fc52a1 (diff)
downloadaports-2186453f9065ae150bb231d6416a5db0a15186c4.tar.bz2
aports-2186453f9065ae150bb231d6416a5db0a15186c4.tar.xz
testing/mutter: unmaintained
Diffstat (limited to 'unmaintained/mutter/mutter-gtk2.patch')
-rw-r--r--unmaintained/mutter/mutter-gtk2.patch82
1 files changed, 82 insertions, 0 deletions
diff --git a/unmaintained/mutter/mutter-gtk2.patch b/unmaintained/mutter/mutter-gtk2.patch
new file mode 100644
index 0000000000..70f7c6fd28
--- /dev/null
+++ b/unmaintained/mutter/mutter-gtk2.patch
@@ -0,0 +1,82 @@
+--- mutter-2.31.5.orig/src/ui/frames.c
++++ mutter-2.31.5/src/ui/frames.c
+@@ -2004,47 +2004,26 @@
+ return TRUE;
+ }
+
+-/* Cut and paste from GDK */
+-static GdkGC *
+-get_bg_gc (GdkWindow *window, int x_offset, int y_offset)
++static void
++setup_bg_cr (cairo_t *cr, GdkWindow *window, int x_offset, int y_offset)
+ {
+ GdkWindow *parent = gdk_window_get_parent (window);
+- GdkPixmap *back_pixmap;
+- gboolean parent_relative;
+- guint gc_mask = 0;
+- GdkGCValues gc_values;
++ cairo_pattern_t *bg_pattern;
+
+- gdk_window_get_back_pixmap (window, &back_pixmap, &parent_relative);
+- if (parent_relative && parent)
++ bg_pattern = gdk_window_get_background_pattern (window);
++ if (bg_pattern == NULL && parent)
+ {
+ gint window_x, window_y;
+
+ gdk_window_get_position (window, &window_x, &window_y);
+- return get_bg_gc (parent,
+- x_offset + window_x,
+- y_offset + window_y);
++ setup_bg_cr (cr, parent, x_offset + window_x, y_offset + window_y);
+ }
+- else if (back_pixmap)
++ else if (bg_pattern)
+ {
+- gc_values.fill = GDK_TILED;
+- gc_values.tile = back_pixmap;
+- gc_values.ts_x_origin = x_offset;
+- gc_values.ts_y_origin = y_offset;
+-
+- gc_mask = GDK_GC_FILL | GDK_GC_TILE | GDK_GC_TS_X_ORIGIN | GDK_GC_TS_Y_ORIGIN;
+-
+- return gdk_gc_new_with_values (window, &gc_values, gc_mask);
++ cairo_translate (cr, - x_offset, - y_offset);
++ cairo_set_source (cr, bg_pattern);
++ cairo_translate (cr, x_offset, y_offset);
+ }
+- else
+- {
+- GdkColor bg_color;
+- GdkGC *gc = gdk_gc_new (window);
+-
+- gdk_window_get_background (window, &bg_color);
+- gdk_gc_set_foreground (gc, &bg_color);
+-
+- return gc;
+- }
+ }
+
+ static void
+@@ -2052,12 +2031,16 @@
+ GdkWindow *window,
+ int xoffset, int yoffset)
+ {
+- GdkGC *tmp_gc = get_bg_gc (window, xoffset, yoffset);
++ int width, height;
++ cairo_t *cr = gdk_cairo_create (pixmap);
+
+- gdk_draw_rectangle (pixmap, tmp_gc, TRUE,
+- 0, 0, -1, -1);
+-
+- g_object_unref (tmp_gc);
++ setup_bg_cr (cr, window, xoffset, yoffset);
++
++ gdk_drawable_get_size (GDK_DRAWABLE (pixmap), &width, &height);
++ cairo_rectangle (cr, 0, 0, width, height);
++ cairo_fill (cr);
++
++ cairo_destroy (cr);
+ }
+
+ /* Returns a pixmap with a piece of the windows frame painted on it.