[mutter] wayland: Move MetaWaylandRegion into a new file as well



commit ead0e902edf5f178f8366f2a6772767fadeb40ac
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Tue Oct 7 20:12:36 2014 -0700

    wayland: Move MetaWaylandRegion into a new file as well

 src/Makefile.am                    |    2 +
 src/wayland/meta-wayland-private.h |    7 ---
 src/wayland/meta-wayland-region.c  |   93 ++++++++++++++++++++++++++++++++++++
 src/wayland/meta-wayland-region.h  |   44 +++++++++++++++++
 src/wayland/meta-wayland-surface.c |    1 +
 src/wayland/meta-wayland.c         |   61 ++----------------------
 6 files changed, 144 insertions(+), 64 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index e8ff00a..e73a053 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -236,6 +236,8 @@ libmutter_la_SOURCES +=                             \
        wayland/meta-xwayland-private.h         \
        wayland/meta-wayland-buffer.c           \
        wayland/meta-wayland-buffer.h           \
+       wayland/meta-wayland-region.c           \
+       wayland/meta-wayland-region.h           \
        wayland/meta-wayland-data-device.c      \
        wayland/meta-wayland-data-device.h      \
        wayland/meta-wayland-keyboard.c         \
diff --git a/src/wayland/meta-wayland-private.h b/src/wayland/meta-wayland-private.h
index 5d1a62b..0e7c083 100644
--- a/src/wayland/meta-wayland-private.h
+++ b/src/wayland/meta-wayland-private.h
@@ -24,7 +24,6 @@
 #include <clutter/clutter.h>
 
 #include <glib.h>
-#include <cairo.h>
 
 #include "window-private.h"
 #include <meta/meta-cursor-tracker.h>
@@ -36,12 +35,6 @@
 
 typedef struct
 {
-  struct wl_resource *resource;
-  cairo_region_t *region;
-} MetaWaylandRegion;
-
-typedef struct
-{
   GSource source;
   GPollFD pfd;
   struct wl_display *display;
diff --git a/src/wayland/meta-wayland-region.c b/src/wayland/meta-wayland-region.c
new file mode 100644
index 0000000..fcfcbd9
--- /dev/null
+++ b/src/wayland/meta-wayland-region.c
@@ -0,0 +1,93 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
+/*
+ * Copyright (C) 2014 Endless Mobile
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Written by:
+ *     Jasper St. Pierre <jstpierre mecheye net>
+ */
+
+#include "config.h"
+
+#include "meta-wayland-region.h"
+
+static void
+wl_region_destroy (struct wl_client *client,
+                   struct wl_resource *resource)
+{
+  wl_resource_destroy (resource);
+}
+
+static void
+wl_region_add (struct wl_client *client,
+               struct wl_resource *resource,
+               gint32 x,
+               gint32 y,
+               gint32 width,
+               gint32 height)
+{
+  MetaWaylandRegion *region = wl_resource_get_user_data (resource);
+  cairo_rectangle_int_t rectangle = { x, y, width, height };
+
+  cairo_region_union_rectangle (region->region, &rectangle);
+}
+
+static void
+wl_region_subtract (struct wl_client *client,
+                    struct wl_resource *resource,
+                    gint32 x,
+                    gint32 y,
+                    gint32 width,
+                    gint32 height)
+{
+  MetaWaylandRegion *region = wl_resource_get_user_data (resource);
+  cairo_rectangle_int_t rectangle = { x, y, width, height };
+
+  cairo_region_subtract_rectangle (region->region, &rectangle);
+}
+
+static const struct wl_region_interface meta_wayland_wl_region_interface = {
+  wl_region_destroy,
+  wl_region_add,
+  wl_region_subtract
+};
+
+static void
+wl_region_destructor (struct wl_resource *resource)
+{
+  MetaWaylandRegion *region = wl_resource_get_user_data (resource);
+
+  cairo_region_destroy (region->region);
+  g_slice_free (MetaWaylandRegion, region);
+}
+
+MetaWaylandRegion *
+meta_wayland_region_create (MetaWaylandCompositor *compositor,
+                            struct wl_client      *client,
+                            struct wl_resource    *compositor_resource,
+                            guint32                id)
+{
+  MetaWaylandRegion *region = g_slice_new0 (MetaWaylandRegion);
+
+  region->resource = wl_resource_create (client, &wl_region_interface, wl_resource_get_version 
(compositor_resource), id);
+  wl_resource_set_implementation (region->resource, &meta_wayland_wl_region_interface, region, 
wl_region_destructor);
+
+  region->region = cairo_region_create ();
+
+  return region;
+}
diff --git a/src/wayland/meta-wayland-region.h b/src/wayland/meta-wayland-region.h
new file mode 100644
index 0000000..830785d
--- /dev/null
+++ b/src/wayland/meta-wayland-region.h
@@ -0,0 +1,44 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
+/*
+ * Copyright (C) 2014 Endless Mobile
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Written by:
+ *     Jasper St. Pierre <jstpierre mecheye net>
+ */
+
+#ifndef META_WAYLAND_REGION_H
+#define META_WAYLAND_REGION_H
+
+#include <glib.h>
+#include <cairo.h>
+#include <wayland-server.h>
+#include "meta-wayland-types.h"
+
+typedef struct
+{
+  struct wl_resource *resource;
+  cairo_region_t *region;
+} MetaWaylandRegion;
+
+MetaWaylandRegion * meta_wayland_region_create (MetaWaylandCompositor *compositor,
+                                                struct wl_client      *client,
+                                                struct wl_resource    *compositor_resource,
+                                                guint32                id);
+
+#endif /* META_WAYLAND_REGION_H */
diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c
index 2b74572..c929ca0 100644
--- a/src/wayland/meta-wayland-surface.c
+++ b/src/wayland/meta-wayland-surface.c
@@ -36,6 +36,7 @@
 #include "meta-wayland-private.h"
 #include "meta-xwayland-private.h"
 #include "meta-wayland-buffer.h"
+#include "meta-wayland-region.h"
 #include "meta-wayland-seat.h"
 #include "meta-wayland-keyboard.h"
 #include "meta-wayland-pointer.h"
diff --git a/src/wayland/meta-wayland.c b/src/wayland/meta-wayland.c
index 09ef91a..5b61762 100644
--- a/src/wayland/meta-wayland.c
+++ b/src/wayland/meta-wayland.c
@@ -35,6 +35,7 @@
 
 #include "meta-wayland-private.h"
 #include "meta-xwayland-private.h"
+#include "meta-wayland-region.h"
 #include "meta-wayland-seat.h"
 #include "meta-wayland-outputs.h"
 #include "meta-wayland-data-device.h"
@@ -127,56 +128,6 @@ meta_wayland_compositor_repick (MetaWaylandCompositor *compositor)
 }
 
 static void
-wl_region_destroy (struct wl_client *client,
-                   struct wl_resource *resource)
-{
-  wl_resource_destroy (resource);
-}
-
-static void
-wl_region_add (struct wl_client *client,
-               struct wl_resource *resource,
-               gint32 x,
-               gint32 y,
-               gint32 width,
-               gint32 height)
-{
-  MetaWaylandRegion *region = wl_resource_get_user_data (resource);
-  cairo_rectangle_int_t rectangle = { x, y, width, height };
-
-  cairo_region_union_rectangle (region->region, &rectangle);
-}
-
-static void
-wl_region_subtract (struct wl_client *client,
-                    struct wl_resource *resource,
-                    gint32 x,
-                    gint32 y,
-                    gint32 width,
-                    gint32 height)
-{
-  MetaWaylandRegion *region = wl_resource_get_user_data (resource);
-  cairo_rectangle_int_t rectangle = { x, y, width, height };
-
-  cairo_region_subtract_rectangle (region->region, &rectangle);
-}
-
-static const struct wl_region_interface meta_wayland_wl_region_interface = {
-  wl_region_destroy,
-  wl_region_add,
-  wl_region_subtract
-};
-
-static void
-wl_region_destructor (struct wl_resource *resource)
-{
-  MetaWaylandRegion *region = wl_resource_get_user_data (resource);
-
-  cairo_region_destroy (region->region);
-  g_slice_free (MetaWaylandRegion, region);
-}
-
-static void
 wl_compositor_create_surface (struct wl_client *client,
                               struct wl_resource *resource,
                               guint32 id)
@@ -187,15 +138,11 @@ wl_compositor_create_surface (struct wl_client *client,
 
 static void
 wl_compositor_create_region (struct wl_client *client,
-                             struct wl_resource *compositor_resource,
+                             struct wl_resource *resource,
                              uint32_t id)
 {
-  MetaWaylandRegion *region = g_slice_new0 (MetaWaylandRegion);
-
-  region->resource = wl_resource_create (client, &wl_region_interface, wl_resource_get_version 
(compositor_resource), id);
-  wl_resource_set_implementation (region->resource, &meta_wayland_wl_region_interface, region, 
wl_region_destructor);
-
-  region->region = cairo_region_create ();
+  MetaWaylandCompositor *compositor = wl_resource_get_user_data (resource);
+  meta_wayland_region_create (compositor, client, resource, id);
 }
 
 const static struct wl_compositor_interface meta_wayland_wl_compositor_interface = {


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