diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2015-07-22 16:50:20 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2015-08-10 16:48:31 +0200 |
commit | 3b17f67b971791d09c21fdb5dffeef18963f3c68 (patch) | |
tree | a1de364d9b2e89d7bbce0fb4f24d0f0b1d97977e | |
parent | 0db347d642968b672aae70abe90e2811302a1589 (diff) | |
download | mutter-wip/garnacho/touchpad-gestures.tar.gz |
wayland: Implement wl_pointer_gestureswip/garnacho/touchpad-gestures
The global wl_pointer_gestures object is now created, effectively
bridging pinch/swipe gestures with clients, so they're now
accessible to clients implementing the protocol.
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/wayland/meta-wayland-pointer-gestures.c | 82 | ||||
-rw-r--r-- | src/wayland/meta-wayland-pointer-gestures.h | 32 | ||||
-rw-r--r-- | src/wayland/meta-wayland-private.h | 1 | ||||
-rw-r--r-- | src/wayland/meta-wayland-versions.h | 1 | ||||
-rw-r--r-- | src/wayland/meta-wayland.c | 1 |
6 files changed, 119 insertions, 0 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 74b5a33b1..04671e742 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -255,6 +255,8 @@ libmutter_la_SOURCES += \ wayland/meta-wayland-data-device.c \ wayland/meta-wayland-data-device.h \ wayland/meta-wayland-data-device-private.h \ + wayland/meta-wayland-pointer-gestures.c \ + wayland/meta-wayland-pointer-gestures.h \ wayland/meta-wayland-pointer-gesture-swipe.c \ wayland/meta-wayland-pointer-gesture-swipe.h \ wayland/meta-wayland-pointer-gesture-pinch.c \ diff --git a/src/wayland/meta-wayland-pointer-gestures.c b/src/wayland/meta-wayland-pointer-gestures.c new file mode 100644 index 000000000..0fbdfebf1 --- /dev/null +++ b/src/wayland/meta-wayland-pointer-gestures.c @@ -0,0 +1,82 @@ +/* + * Wayland Support + * + * Copyright (C) 2015 Red Hat + * + * 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. + * + * Author: Carlos Garnacho <carlosg@gnome.org> + */ + +#define _GNU_SOURCE + +#include "config.h" + +#include <glib.h> +#include "meta-wayland-pointer-gestures.h" +#include "pointer-gestures-server-protocol.h" +#include "meta-wayland-versions.h" +#include "meta-wayland-private.h" + +static void +gestures_get_swipe (struct wl_client *client, + struct wl_resource *resource, + uint32_t id, + struct wl_resource *pointer_resource) +{ + MetaWaylandPointer *pointer = wl_resource_get_user_data (pointer_resource); + + meta_wayland_pointer_gesture_swipe_create_new_resource (pointer, client, resource, id); +} + +static void +gestures_get_pinch (struct wl_client *client, + struct wl_resource *resource, + uint32_t id, + struct wl_resource *pointer_resource) +{ + MetaWaylandPointer *pointer = wl_resource_get_user_data (pointer_resource); + + meta_wayland_pointer_gesture_pinch_create_new_resource (pointer, client, resource, id); +} + +static const struct _wl_pointer_gestures_interface pointer_gestures_interface = { + gestures_get_swipe, + gestures_get_pinch +}; + +static void +bind_pointer_gestures (struct wl_client *client, + void *data, + guint32 version, + guint32 id) +{ + MetaWaylandPointerGestures *gestures = data; + struct wl_resource *resource; + + resource = wl_resource_create (client, &_wl_pointer_gestures_interface, version, id); + wl_resource_set_implementation (resource, &pointer_gestures_interface, + gestures, NULL); +} + +void +meta_wayland_pointer_gestures_init (MetaWaylandCompositor *compositor) +{ + wl_global_create (compositor->wayland_display, + &_wl_pointer_gestures_interface, + META_WL_POINTER_GESTURES_VERSION, + gestures, bind_pointer_gestures); +} diff --git a/src/wayland/meta-wayland-pointer-gestures.h b/src/wayland/meta-wayland-pointer-gestures.h new file mode 100644 index 000000000..6c605a80b --- /dev/null +++ b/src/wayland/meta-wayland-pointer-gestures.h @@ -0,0 +1,32 @@ +/* + * Wayland Support + * + * Copyright (C) 2015 Red Hat + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + * Author: Carlos Garnacho <carlosg@gnome.org> + */ + +#ifndef META_WAYLAND_POINTER_GESTURES_H +#define META_WAYLAND_POINTER_GESTURES_H + +#include <wayland-server.h> +#include <glib.h> + +#include "meta-wayland-types.h" + +void meta_wayland_pointer_gestures_init (MetaWaylandCompositor *compositor); + +#endif /* META_WAYLAND_POINTER_GESTURES_H */ diff --git a/src/wayland/meta-wayland-private.h b/src/wayland/meta-wayland-private.h index c93fcf26d..313dc8546 100644 --- a/src/wayland/meta-wayland-private.h +++ b/src/wayland/meta-wayland-private.h @@ -32,6 +32,7 @@ #include "meta-wayland-versions.h" #include "meta-wayland-surface.h" #include "meta-wayland-seat.h" +#include "meta-wayland-pointer-gestures.h" typedef struct _MetaXWaylandSelection MetaXWaylandSelection; diff --git a/src/wayland/meta-wayland-versions.h b/src/wayland/meta-wayland-versions.h index 08ceaca10..e2030d6b2 100644 --- a/src/wayland/meta-wayland-versions.h +++ b/src/wayland/meta-wayland-versions.h @@ -44,5 +44,6 @@ #define META_XSERVER_VERSION 1 #define META_GTK_SHELL_VERSION 2 #define META_WL_SUBCOMPOSITOR_VERSION 1 +#define META_WL_POINTER_GESTURES_VERSION 1 #endif diff --git a/src/wayland/meta-wayland.c b/src/wayland/meta-wayland.c index f11f8c593..13709f15c 100644 --- a/src/wayland/meta-wayland.c +++ b/src/wayland/meta-wayland.c @@ -310,6 +310,7 @@ meta_wayland_init (void) meta_wayland_outputs_init (compositor); meta_wayland_data_device_manager_init (compositor); meta_wayland_shell_init (compositor); + meta_wayland_pointer_gestures_init (compositor); meta_wayland_seat_init (compositor); compositor->display_name = wl_display_add_socket_auto (compositor->wayland_display); |