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 + */ + +#define _GNU_SOURCE + +#include "config.h" + +#include +#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 . + * + * Author: Carlos Garnacho + */ + +#ifndef META_WAYLAND_POINTER_GESTURES_H +#define META_WAYLAND_POINTER_GESTURES_H + +#include +#include + +#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);