mirror of
				https://gitlab.alpinelinux.org/alpine/aports.git
				synced 2025-11-04 02:11:39 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- 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.
 |