[mutter] wayland: Move MetaWaylandRegion into a new file as well
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] wayland: Move MetaWaylandRegion into a new file as well
- Date: Wed, 8 Oct 2014 03:57:59 +0000 (UTC)
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]