[metacity] surface-xrender: make create_mask_pixmap static



commit 3d666ac47d9eea4f0934e12fe3262dcd226a315c
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Sat Oct 12 00:26:17 2019 +0300

    surface-xrender: make create_mask_pixmap static

 src/compositor/meta-surface-xrender.c | 226 +++++++++++++++++-----------------
 src/compositor/meta-surface-xrender.h |   9 +-
 2 files changed, 116 insertions(+), 119 deletions(-)
---
diff --git a/src/compositor/meta-surface-xrender.c b/src/compositor/meta-surface-xrender.c
index edbd6218..0532e312 100644
--- a/src/compositor/meta-surface-xrender.c
+++ b/src/compositor/meta-surface-xrender.c
@@ -41,6 +41,117 @@ struct _MetaSurfaceXRender
 
 G_DEFINE_TYPE (MetaSurfaceXRender, meta_surface_xrender, META_TYPE_SURFACE)
 
+static Pixmap
+create_mask_pixmap (MetaSurfaceXRender *self,
+                    gboolean            with_opacity)
+{
+  MetaWindow *window;
+  MetaFrame *frame;
+  MetaDisplay *display;
+  Display *xdisplay;
+  int width;
+  int height;
+  XRenderPictFormat *format;
+  double opacity;
+  cairo_surface_t *surface;
+  cairo_t *cr;
+  Pixmap pixmap;
+
+  window = meta_surface_get_window (META_SURFACE (self));
+
+  frame = meta_window_get_frame (window);
+  if (frame == NULL && window->opacity == OPAQUE)
+    return None;
+
+  display = meta_window_get_display (window);
+  xdisplay = meta_display_get_xdisplay (display);
+
+  width = frame != NULL ? meta_surface_get_width (META_SURFACE (self)) : 1;
+  height = frame != NULL ? meta_surface_get_height (META_SURFACE (self)) : 1;
+
+  format = XRenderFindStandardFormat (xdisplay, PictStandardA8);
+
+  meta_error_trap_push (display);
+  pixmap = XCreatePixmap (xdisplay,
+                          DefaultRootWindow (xdisplay),
+                          width,
+                          height,
+                          format->depth);
+
+  if (meta_error_trap_pop_with_return (display) != 0)
+    return None;
+
+  opacity = 1.0;
+  if (with_opacity)
+    opacity = (double) window->opacity / OPAQUE;
+
+  surface = cairo_xlib_surface_create_with_xrender_format (xdisplay,
+                                                           pixmap,
+                                                           DefaultScreenOfDisplay (xdisplay),
+                                                           format,
+                                                           width,
+                                                           height);
+
+  cr = cairo_create (surface);
+
+  cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
+  cairo_set_source_rgba (cr, 0, 0, 0, 1);
+  cairo_paint (cr);
+
+  if (frame != NULL)
+    {
+      cairo_rectangle_int_t rect;
+      cairo_region_t *frame_paint_region;
+      MetaFrameBorders borders;
+
+      rect.x = 0;
+      rect.y = 0;
+      rect.width = width;
+      rect.height = height;
+
+      frame_paint_region = cairo_region_create_rectangle (&rect);
+      meta_frame_calc_borders (frame, &borders);
+
+      rect.x += borders.total.left;
+      rect.y += borders.total.top;
+      rect.width -= borders.total.left + borders.total.right;
+      rect.height -= borders.total.top + borders.total.bottom;
+
+      cairo_region_subtract_rectangle (frame_paint_region, &rect);
+
+      cairo_rectangle (cr, rect.x, rect.y, rect.width, rect.height);
+      cairo_clip (cr);
+
+      cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
+      cairo_set_source_rgba (cr, 0, 0, 0, opacity);
+      cairo_paint (cr);
+
+      cairo_reset_clip (cr);
+      gdk_cairo_region (cr, frame_paint_region);
+      cairo_region_destroy (frame_paint_region);
+      cairo_clip (cr);
+
+      cairo_push_group (cr);
+
+      cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
+      meta_frame_get_mask (frame, cr);
+
+      cairo_pop_group_to_source (cr);
+      cairo_paint_with_alpha (cr, opacity);
+    }
+  else
+    {
+      cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
+      cairo_set_source_rgba (cr, 0, 0, 0, opacity);
+      cairo_paint (cr);
+    }
+
+  cairo_destroy (cr);
+  cairo_surface_destroy (surface);
+
+  return pixmap;
+}
+
 static void
 free_picture (MetaSurfaceXRender *self)
 {
@@ -216,7 +327,7 @@ meta_surface_xrender_get_image (MetaSurface *surface)
 
   if (window->opacity != OPAQUE)
     {
-      mask_pixmap = meta_surface_xrender_create_mask_pixmap (self, FALSE);
+      mask_pixmap = create_mask_pixmap (self, FALSE);
       free_pixmap = TRUE;
     }
 
@@ -355,7 +466,7 @@ meta_surface_xrender_pre_paint (MetaSurface *surface)
     self->picture = get_window_picture (self);
 
   if (self->mask_pixmap == None)
-    self->mask_pixmap = meta_surface_xrender_create_mask_pixmap (self, TRUE);
+    self->mask_pixmap = create_mask_pixmap (self, TRUE);
 
   if (self->mask_picture == None)
     self->mask_picture = get_window_mask_picture (self);
@@ -385,117 +496,6 @@ meta_surface_xrender_init (MetaSurfaceXRender *self)
 {
 }
 
-Pixmap
-meta_surface_xrender_create_mask_pixmap (MetaSurfaceXRender *self,
-                                         gboolean            with_opacity)
-{
-  MetaWindow *window;
-  MetaFrame *frame;
-  MetaDisplay *display;
-  Display *xdisplay;
-  int width;
-  int height;
-  XRenderPictFormat *format;
-  double opacity;
-  cairo_surface_t *surface;
-  cairo_t *cr;
-  Pixmap pixmap;
-
-  window = meta_surface_get_window (META_SURFACE (self));
-
-  frame = meta_window_get_frame (window);
-  if (frame == NULL && window->opacity == OPAQUE)
-    return None;
-
-  display = meta_window_get_display (window);
-  xdisplay = meta_display_get_xdisplay (display);
-
-  width = frame != NULL ? meta_surface_get_width (META_SURFACE (self)) : 1;
-  height = frame != NULL ? meta_surface_get_height (META_SURFACE (self)) : 1;
-
-  format = XRenderFindStandardFormat (xdisplay, PictStandardA8);
-
-  meta_error_trap_push (display);
-  pixmap = XCreatePixmap (xdisplay,
-                          DefaultRootWindow (xdisplay),
-                          width,
-                          height,
-                          format->depth);
-
-  if (meta_error_trap_pop_with_return (display) != 0)
-    return None;
-
-  opacity = 1.0;
-  if (with_opacity)
-    opacity = (double) window->opacity / OPAQUE;
-
-  surface = cairo_xlib_surface_create_with_xrender_format (xdisplay,
-                                                           pixmap,
-                                                           DefaultScreenOfDisplay (xdisplay),
-                                                           format,
-                                                           width,
-                                                           height);
-
-  cr = cairo_create (surface);
-
-  cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
-  cairo_set_source_rgba (cr, 0, 0, 0, 1);
-  cairo_paint (cr);
-
-  if (frame != NULL)
-    {
-      cairo_rectangle_int_t rect;
-      cairo_region_t *frame_paint_region;
-      MetaFrameBorders borders;
-
-      rect.x = 0;
-      rect.y = 0;
-      rect.width = width;
-      rect.height = height;
-
-      frame_paint_region = cairo_region_create_rectangle (&rect);
-      meta_frame_calc_borders (frame, &borders);
-
-      rect.x += borders.total.left;
-      rect.y += borders.total.top;
-      rect.width -= borders.total.left + borders.total.right;
-      rect.height -= borders.total.top + borders.total.bottom;
-
-      cairo_region_subtract_rectangle (frame_paint_region, &rect);
-
-      cairo_rectangle (cr, rect.x, rect.y, rect.width, rect.height);
-      cairo_clip (cr);
-
-      cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
-      cairo_set_source_rgba (cr, 0, 0, 0, opacity);
-      cairo_paint (cr);
-
-      cairo_reset_clip (cr);
-      gdk_cairo_region (cr, frame_paint_region);
-      cairo_region_destroy (frame_paint_region);
-      cairo_clip (cr);
-
-      cairo_push_group (cr);
-
-      cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
-      meta_frame_get_mask (frame, cr);
-
-      cairo_pop_group_to_source (cr);
-      cairo_paint_with_alpha (cr, opacity);
-    }
-  else
-    {
-      cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
-      cairo_set_source_rgba (cr, 0, 0, 0, opacity);
-      cairo_paint (cr);
-    }
-
-  cairo_destroy (cr);
-  cairo_surface_destroy (surface);
-
-  return pixmap;
-}
-
 Picture
 meta_surface_xrender_get_picture (MetaSurfaceXRender *self)
 {
diff --git a/src/compositor/meta-surface-xrender.h b/src/compositor/meta-surface-xrender.h
index ea0b1987..a402749e 100644
--- a/src/compositor/meta-surface-xrender.h
+++ b/src/compositor/meta-surface-xrender.h
@@ -27,14 +27,11 @@ G_BEGIN_DECLS
 G_DECLARE_FINAL_TYPE (MetaSurfaceXRender, meta_surface_xrender,
                       META, SURFACE_XRENDER, MetaSurface)
 
-Pixmap  meta_surface_xrender_create_mask_pixmap (MetaSurfaceXRender *self,
-                                                 gboolean            with_opacity);
+Picture meta_surface_xrender_get_picture      (MetaSurfaceXRender *self);
 
-Picture meta_surface_xrender_get_picture        (MetaSurfaceXRender *self);
+Pixmap  meta_surface_xrender_get_mask_pixmap  (MetaSurfaceXRender *self);
 
-Pixmap  meta_surface_xrender_get_mask_pixmap    (MetaSurfaceXRender *self);
-
-Picture meta_surface_xrender_get_mask_picture   (MetaSurfaceXRender *self);
+Picture meta_surface_xrender_get_mask_picture (MetaSurfaceXRender *self);
 
 G_END_DECLS
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]