guibuilder_pel7x64builder0
6 years ago
28 changed files with 5854 additions and 0 deletions
@ -0,0 +1,46 @@ |
|||||||
|
From 23f4b91105c4fa9fa2231d2e1049728a6383cd65 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Olivier Fourdan <ofourdan@redhat.com> |
||||||
|
Date: Fri, 15 Sep 2017 09:39:18 +0200 |
||||||
|
Subject: [PATCH] Revert "build: Require libgudev >= 232" |
||||||
|
|
||||||
|
This reverts commit 361bf847af82c7dca097302fe64c575079280c9c. |
||||||
|
--- |
||||||
|
configure.ac | 4 ++-- |
||||||
|
src/backends/native/meta-launcher.c | 4 ++++ |
||||||
|
2 files changed, 6 insertions(+), 2 deletions(-) |
||||||
|
|
||||||
|
diff --git a/configure.ac b/configure.ac |
||||||
|
index 805707933..813ca008a 100644 |
||||||
|
--- a/configure.ac |
||||||
|
+++ b/configure.ac |
||||||
|
@@ -225,10 +225,10 @@ AC_MSG_CHECKING([gudev]) |
||||||
|
if test x$with_gudev = xno ; then |
||||||
|
AC_MSG_RESULT([disabled]) |
||||||
|
else |
||||||
|
- if $PKG_CONFIG --exists "gudev-1.0 >= 232"; then |
||||||
|
+ if $PKG_CONFIG --exists gudev-1.0; then |
||||||
|
have_gudev=yes |
||||||
|
AC_MSG_RESULT(yes) |
||||||
|
- MUTTER_PC_MODULES="$MUTTER_PC_MODULES gudev-1.0 >= 232" |
||||||
|
+ MUTTER_PC_MODULES="$MUTTER_PC_MODULES gudev-1.0" |
||||||
|
AC_DEFINE([HAVE_LIBGUDEV], 1, [Building with gudev for device type detection]) |
||||||
|
else |
||||||
|
AC_MSG_RESULT(no) |
||||||
|
diff --git a/src/backends/native/meta-launcher.c b/src/backends/native/meta-launcher.c |
||||||
|
index eb35f88be..90b4b98ba 100644 |
||||||
|
--- a/src/backends/native/meta-launcher.c |
||||||
|
+++ b/src/backends/native/meta-launcher.c |
||||||
|
@@ -49,6 +49,10 @@ |
||||||
|
|
||||||
|
#define DRM_CARD_UDEV_DEVICE_TYPE "drm_minor" |
||||||
|
|
||||||
|
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GUdevDevice, g_object_unref) |
||||||
|
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GUdevClient, g_object_unref) |
||||||
|
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GUdevEnumerator, g_object_unref) |
||||||
|
+ |
||||||
|
struct _MetaLauncher |
||||||
|
{ |
||||||
|
Login1Session *session_proxy; |
||||||
|
-- |
||||||
|
2.13.5 |
||||||
|
|
@ -0,0 +1,142 @@ |
|||||||
|
From 62f0fb12b1fa946779f0efa406159a355811fdc5 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Carlos Garnacho <carlosg@gnome.org> |
||||||
|
Date: Mon, 19 Feb 2018 16:50:52 +0100 |
||||||
|
Subject: [PATCH] backends: Monitor changes in active tools' settings |
||||||
|
|
||||||
|
So the changes can be instantly applied while the tool is in proximity. |
||||||
|
Before we would just do it on proximity-in, which doesn't provide a |
||||||
|
good look&feel while modifying the tool settings in g-c-c. |
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/mutter/issues/38 |
||||||
|
|
||||||
|
Closes: #38 |
||||||
|
--- |
||||||
|
src/backends/meta-input-settings.c | 71 ++++++++++++++++++++++++++++++++++++-- |
||||||
|
1 file changed, 68 insertions(+), 3 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/backends/meta-input-settings.c b/src/backends/meta-input-settings.c |
||||||
|
index 0658755..ec0fc9f 100644 |
||||||
|
--- a/src/backends/meta-input-settings.c |
||||||
|
+++ b/src/backends/meta-input-settings.c |
||||||
|
@@ -41,6 +41,16 @@ static GQuark quark_tool_settings = 0; |
||||||
|
|
||||||
|
typedef struct _MetaInputSettingsPrivate MetaInputSettingsPrivate; |
||||||
|
typedef struct _DeviceMappingInfo DeviceMappingInfo; |
||||||
|
+typedef struct _CurrentToolInfo CurrentToolInfo; |
||||||
|
+ |
||||||
|
+struct _CurrentToolInfo |
||||||
|
+{ |
||||||
|
+ MetaInputSettings *input_settings; |
||||||
|
+ ClutterInputDevice *device; |
||||||
|
+ ClutterInputDeviceTool *tool; |
||||||
|
+ GSettings *settings; |
||||||
|
+ guint changed_id; |
||||||
|
+}; |
||||||
|
|
||||||
|
struct _DeviceMappingInfo |
||||||
|
{ |
||||||
|
@@ -68,6 +78,8 @@ struct _MetaInputSettingsPrivate |
||||||
|
|
||||||
|
GHashTable *mappable_devices; |
||||||
|
|
||||||
|
+ GHashTable *current_tools; |
||||||
|
+ |
||||||
|
ClutterVirtualInputDevice *virtual_pad_keyboard; |
||||||
|
|
||||||
|
#ifdef HAVE_LIBWACOM |
||||||
|
@@ -144,6 +156,7 @@ meta_input_settings_dispose (GObject *object) |
||||||
|
g_clear_object (&priv->keyboard_settings); |
||||||
|
g_clear_object (&priv->gsd_settings); |
||||||
|
g_clear_pointer (&priv->mappable_devices, g_hash_table_unref); |
||||||
|
+ g_clear_pointer (&priv->current_tools, g_hash_table_unref); |
||||||
|
|
||||||
|
if (priv->monitors_changed_id && priv->monitor_manager) |
||||||
|
{ |
||||||
|
@@ -1510,22 +1523,71 @@ meta_input_settings_device_removed (ClutterDeviceManager *device_manager, |
||||||
|
|
||||||
|
priv = meta_input_settings_get_instance_private (input_settings); |
||||||
|
g_hash_table_remove (priv->mappable_devices, device); |
||||||
|
+ g_hash_table_remove (priv->current_tools, device); |
||||||
|
|
||||||
|
if (g_hash_table_remove (priv->two_finger_devices, device) && |
||||||
|
g_hash_table_size (priv->two_finger_devices) == 0) |
||||||
|
apply_device_settings (input_settings, NULL); |
||||||
|
} |
||||||
|
|
||||||
|
+static void |
||||||
|
+current_tool_changed_cb (GSettings *settings, |
||||||
|
+ const char *key, |
||||||
|
+ gpointer user_data) |
||||||
|
+{ |
||||||
|
+ CurrentToolInfo *info = user_data; |
||||||
|
+ |
||||||
|
+ apply_stylus_settings (info->input_settings, info->device, info->tool); |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static CurrentToolInfo * |
||||||
|
+current_tool_info_new (MetaInputSettings *input_settings, |
||||||
|
+ ClutterInputDevice *device, |
||||||
|
+ ClutterInputDeviceTool *tool) |
||||||
|
+{ |
||||||
|
+ CurrentToolInfo *info; |
||||||
|
+ |
||||||
|
+ info = g_new0 (CurrentToolInfo, 1); |
||||||
|
+ info->input_settings = input_settings; |
||||||
|
+ info->device = device; |
||||||
|
+ info->tool = tool; |
||||||
|
+ info->settings = lookup_tool_settings (tool, device); |
||||||
|
+ info->changed_id = |
||||||
|
+ g_signal_connect (info->settings, "changed", |
||||||
|
+ G_CALLBACK (current_tool_changed_cb), |
||||||
|
+ info); |
||||||
|
+ return info; |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static void |
||||||
|
+current_tool_info_free (CurrentToolInfo *info) |
||||||
|
+{ |
||||||
|
+ g_signal_handler_disconnect (info->settings, info->changed_id); |
||||||
|
+ g_free (info); |
||||||
|
+} |
||||||
|
+ |
||||||
|
static void |
||||||
|
meta_input_settings_tool_changed (ClutterDeviceManager *device_manager, |
||||||
|
ClutterInputDevice *device, |
||||||
|
ClutterInputDeviceTool *tool, |
||||||
|
MetaInputSettings *input_settings) |
||||||
|
{ |
||||||
|
- if (!tool) |
||||||
|
- return; |
||||||
|
+ MetaInputSettingsPrivate *priv; |
||||||
|
|
||||||
|
- apply_stylus_settings (input_settings, device, tool); |
||||||
|
+ priv = meta_input_settings_get_instance_private (input_settings); |
||||||
|
+ |
||||||
|
+ if (tool) |
||||||
|
+ { |
||||||
|
+ CurrentToolInfo *current_tool; |
||||||
|
+ |
||||||
|
+ current_tool = current_tool_info_new (input_settings, device, tool); |
||||||
|
+ g_hash_table_insert (priv->current_tools, device, current_tool); |
||||||
|
+ apply_stylus_settings (input_settings, device, tool); |
||||||
|
+ } |
||||||
|
+ else |
||||||
|
+ { |
||||||
|
+ g_hash_table_remove (priv->current_tools, device); |
||||||
|
+ } |
||||||
|
} |
||||||
|
|
||||||
|
static void |
||||||
|
@@ -1616,6 +1678,9 @@ meta_input_settings_init (MetaInputSettings *settings) |
||||||
|
priv->mappable_devices = |
||||||
|
g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) device_mapping_info_free); |
||||||
|
|
||||||
|
+ priv->current_tools = |
||||||
|
+ g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) current_tool_info_free); |
||||||
|
+ |
||||||
|
priv->monitor_manager = g_object_ref (meta_monitor_manager_get ()); |
||||||
|
g_signal_connect (priv->monitor_manager, "monitors-changed-internal", |
||||||
|
G_CALLBACK (monitors_changed_cb), settings); |
||||||
|
-- |
||||||
|
2.16.1 |
||||||
|
|
@ -0,0 +1,127 @@ |
|||||||
|
From bc17d94ef058564c1a1adf28a8696164455fea1b Mon Sep 17 00:00:00 2001 |
||||||
|
From: Carlos Garnacho <carlosg@gnome.org> |
||||||
|
Date: Tue, 30 Jan 2018 13:07:32 +0100 |
||||||
|
Subject: [PATCH] backends/x11: Preserve XI1 XDevice throughout |
||||||
|
ClutterInputDevice lifetime |
||||||
|
|
||||||
|
Opening and closing the device may result into XI2 grabs being cut short, |
||||||
|
resulting into pad buttons being rendered ineffective, and other possible |
||||||
|
misbehaviors. This is an XInput flaw that fell in the gap between XI1 and |
||||||
|
XI2, and has no easy fix. It pays us for mixing both versions, I guess... |
||||||
|
|
||||||
|
Work this around by keeping the XI1 XDevice attached to the |
||||||
|
ClutterInputDevice, this way it will live long enough that this is not |
||||||
|
a concern. |
||||||
|
|
||||||
|
Investigation of this bug was mostly carried by Peter Hutterer, I'm just |
||||||
|
the executing hand. |
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/mutter/issues/7 |
||||||
|
|
||||||
|
Closes: #7 |
||||||
|
--- |
||||||
|
src/backends/x11/meta-input-settings-x11.c | 48 ++++++++++++++++++++++++++---- |
||||||
|
1 file changed, 42 insertions(+), 6 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/backends/x11/meta-input-settings-x11.c b/src/backends/x11/meta-input-settings-x11.c |
||||||
|
index d1ee37a..7a876ef 100644 |
||||||
|
--- a/src/backends/x11/meta-input-settings-x11.c |
||||||
|
+++ b/src/backends/x11/meta-input-settings-x11.c |
||||||
|
@@ -55,6 +55,46 @@ enum { |
||||||
|
SCROLL_METHOD_NUM_FIELDS |
||||||
|
}; |
||||||
|
|
||||||
|
+static void |
||||||
|
+device_free_xdevice (gpointer user_data) |
||||||
|
+{ |
||||||
|
+ MetaDisplay *display = meta_get_display (); |
||||||
|
+ MetaBackend *backend = meta_get_backend (); |
||||||
|
+ Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend)); |
||||||
|
+ XDevice *xdev = user_data; |
||||||
|
+ |
||||||
|
+ meta_error_trap_push (display); |
||||||
|
+ XCloseDevice (xdisplay, xdev); |
||||||
|
+ meta_error_trap_pop (display); |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static XDevice * |
||||||
|
+device_ensure_xdevice (ClutterInputDevice *device) |
||||||
|
+{ |
||||||
|
+ MetaDisplay *display = meta_get_display (); |
||||||
|
+ MetaBackend *backend = meta_get_backend (); |
||||||
|
+ Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend)); |
||||||
|
+ int device_id = clutter_input_device_get_device_id (device); |
||||||
|
+ XDevice *xdev = NULL; |
||||||
|
+ |
||||||
|
+ xdev = g_object_get_data (G_OBJECT (device), "meta-input-settings-xdevice"); |
||||||
|
+ if (xdev) |
||||||
|
+ return xdev; |
||||||
|
+ |
||||||
|
+ meta_error_trap_push (display); |
||||||
|
+ xdev = XOpenDevice (xdisplay, device_id); |
||||||
|
+ meta_error_trap_pop (display); |
||||||
|
+ |
||||||
|
+ if (xdev) |
||||||
|
+ { |
||||||
|
+ g_object_set_data_full (G_OBJECT (device), |
||||||
|
+ "meta-input-settings-xdevice", |
||||||
|
+ xdev, (GDestroyNotify) device_free_xdevice); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ return xdev; |
||||||
|
+} |
||||||
|
+ |
||||||
|
static void * |
||||||
|
get_property (ClutterInputDevice *device, |
||||||
|
const gchar *property, |
||||||
|
@@ -540,7 +580,6 @@ meta_input_settings_x11_set_tablet_mapping (MetaInputSettings *settings, |
||||||
|
MetaDisplay *display = meta_get_display (); |
||||||
|
MetaBackend *backend = meta_get_backend (); |
||||||
|
Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend)); |
||||||
|
- int device_id = clutter_input_device_get_device_id (device); |
||||||
|
XDevice *xdev; |
||||||
|
|
||||||
|
if (!display) |
||||||
|
@@ -548,13 +587,12 @@ meta_input_settings_x11_set_tablet_mapping (MetaInputSettings *settings, |
||||||
|
|
||||||
|
/* Grab the puke bucket! */ |
||||||
|
meta_error_trap_push (display); |
||||||
|
- xdev = XOpenDevice (xdisplay, device_id); |
||||||
|
+ xdev = device_ensure_xdevice (device); |
||||||
|
if (xdev) |
||||||
|
{ |
||||||
|
XSetDeviceMode (xdisplay, xdev, |
||||||
|
mapping == G_DESKTOP_TABLET_MAPPING_ABSOLUTE ? |
||||||
|
Absolute : Relative); |
||||||
|
- XCloseDevice (xdisplay, xdev); |
||||||
|
} |
||||||
|
|
||||||
|
if (meta_error_trap_pop_with_return (display)) |
||||||
|
@@ -737,7 +775,6 @@ meta_input_settings_x11_set_stylus_button_map (MetaInputSettings *setti |
||||||
|
MetaDisplay *display = meta_get_display (); |
||||||
|
MetaBackend *backend = meta_get_backend (); |
||||||
|
Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend)); |
||||||
|
- int device_id = clutter_input_device_get_device_id (device); |
||||||
|
XDevice *xdev; |
||||||
|
|
||||||
|
if (!display) |
||||||
|
@@ -745,7 +782,7 @@ meta_input_settings_x11_set_stylus_button_map (MetaInputSettings *setti |
||||||
|
|
||||||
|
/* Grab the puke bucket! */ |
||||||
|
meta_error_trap_push (display); |
||||||
|
- xdev = XOpenDevice (xdisplay, device_id); |
||||||
|
+ xdev = device_ensure_xdevice (device); |
||||||
|
if (xdev) |
||||||
|
{ |
||||||
|
guchar map[3] = { |
||||||
|
@@ -755,7 +792,6 @@ meta_input_settings_x11_set_stylus_button_map (MetaInputSettings *setti |
||||||
|
}; |
||||||
|
|
||||||
|
XSetDeviceButtonMapping (xdisplay, xdev, map, G_N_ELEMENTS (map)); |
||||||
|
- XCloseDevice (xdisplay, xdev); |
||||||
|
} |
||||||
|
|
||||||
|
if (meta_error_trap_pop_with_return (display)) |
||||||
|
-- |
||||||
|
1.8.3.1 |
||||||
|
|
@ -0,0 +1,342 @@ |
|||||||
|
From 647de5a802627809486fe760c657b05297470683 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Carlos Garnacho <carlosg@gnome.org> |
||||||
|
Date: Thu, 19 Jan 2017 15:03:41 +0100 |
||||||
|
Subject: [PATCH] backends/x11: Support synaptics configuration |
||||||
|
|
||||||
|
The code is taken mostly as-is from g-s-d, so we can drag the |
||||||
|
dead horse a bit longer. |
||||||
|
--- |
||||||
|
src/backends/x11/meta-input-settings-x11.c | 261 +++++++++++++++++++++++++++++ |
||||||
|
1 file changed, 261 insertions(+) |
||||||
|
|
||||||
|
diff --git a/src/backends/x11/meta-input-settings-x11.c b/src/backends/x11/meta-input-settings-x11.c |
||||||
|
index 7a876ef..467a9b7 100644 |
||||||
|
--- a/src/backends/x11/meta-input-settings-x11.c |
||||||
|
+++ b/src/backends/x11/meta-input-settings-x11.c |
||||||
|
@@ -26,6 +26,7 @@ |
||||||
|
#include "meta-backend-x11.h" |
||||||
|
#include "meta-input-settings-x11.h" |
||||||
|
|
||||||
|
+#include <stdlib.h> |
||||||
|
#include <string.h> |
||||||
|
#include <gdk/gdkx.h> |
||||||
|
#include <X11/Xatom.h> |
||||||
|
@@ -159,6 +160,173 @@ change_property (ClutterInputDevice *device, |
||||||
|
meta_XFree (data_ret); |
||||||
|
} |
||||||
|
|
||||||
|
+static gboolean |
||||||
|
+is_device_synaptics (ClutterInputDevice *device) |
||||||
|
+{ |
||||||
|
+ guchar *has_setting; |
||||||
|
+ |
||||||
|
+ /* We just need looking for a synaptics-specific property */ |
||||||
|
+ has_setting = get_property (device, "Synaptics Off", XA_INTEGER, 8, 1); |
||||||
|
+ if (!has_setting) |
||||||
|
+ return FALSE; |
||||||
|
+ |
||||||
|
+ meta_XFree (has_setting); |
||||||
|
+ return TRUE; |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static void |
||||||
|
+change_synaptics_tap_left_handed (ClutterInputDevice *device, |
||||||
|
+ gboolean tap_enabled, |
||||||
|
+ gboolean left_handed) |
||||||
|
+{ |
||||||
|
+ MetaDisplay *display = meta_get_display (); |
||||||
|
+ MetaBackend *backend = meta_get_backend (); |
||||||
|
+ Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend)); |
||||||
|
+ XDevice *xdevice; |
||||||
|
+ guchar *tap_action, *buttons; |
||||||
|
+ guint buttons_capacity = 16, n_buttons; |
||||||
|
+ |
||||||
|
+ xdevice = device_ensure_xdevice (device); |
||||||
|
+ if (!xdevice) |
||||||
|
+ return; |
||||||
|
+ |
||||||
|
+ tap_action = get_property (device, "Synaptics Tap Action", |
||||||
|
+ XA_INTEGER, 8, 7); |
||||||
|
+ if (!tap_action) |
||||||
|
+ return; |
||||||
|
+ |
||||||
|
+ tap_action[4] = tap_enabled ? (left_handed ? 3 : 1) : 0; |
||||||
|
+ tap_action[5] = tap_enabled ? (left_handed ? 1 : 3) : 0; |
||||||
|
+ tap_action[6] = tap_enabled ? 2 : 0; |
||||||
|
+ |
||||||
|
+ change_property (device, "Synaptics Tap Action", |
||||||
|
+ XA_INTEGER, 8, tap_action, 7); |
||||||
|
+ meta_XFree (tap_action); |
||||||
|
+ |
||||||
|
+ if (display) |
||||||
|
+ meta_error_trap_push (display); |
||||||
|
+ buttons = g_new (guchar, buttons_capacity); |
||||||
|
+ n_buttons = XGetDeviceButtonMapping (xdisplay, xdevice, |
||||||
|
+ buttons, buttons_capacity); |
||||||
|
+ |
||||||
|
+ while (n_buttons > buttons_capacity) |
||||||
|
+ { |
||||||
|
+ buttons_capacity = n_buttons; |
||||||
|
+ buttons = (guchar *) g_realloc (buttons, |
||||||
|
+ buttons_capacity * sizeof (guchar)); |
||||||
|
+ |
||||||
|
+ n_buttons = XGetDeviceButtonMapping (xdisplay, xdevice, |
||||||
|
+ buttons, buttons_capacity); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ buttons[0] = left_handed ? 3 : 1; |
||||||
|
+ buttons[2] = left_handed ? 1 : 3; |
||||||
|
+ XSetDeviceButtonMapping (xdisplay, xdevice, buttons, n_buttons); |
||||||
|
+ |
||||||
|
+ if (display && meta_error_trap_pop_with_return (display)) |
||||||
|
+ { |
||||||
|
+ g_warning ("Could not set synaptics touchpad left-handed for %s", |
||||||
|
+ clutter_input_device_get_device_name (device)); |
||||||
|
+ } |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static void |
||||||
|
+change_synaptics_speed (ClutterInputDevice *device, |
||||||
|
+ gdouble speed) |
||||||
|
+{ |
||||||
|
+ MetaDisplay *display = meta_get_display (); |
||||||
|
+ MetaBackend *backend = meta_get_backend (); |
||||||
|
+ Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend)); |
||||||
|
+ XDevice *xdevice; |
||||||
|
+ XPtrFeedbackControl feedback; |
||||||
|
+ XFeedbackState *states, *state; |
||||||
|
+ int i, num_feedbacks, motion_threshold, numerator, denominator; |
||||||
|
+ gfloat motion_acceleration; |
||||||
|
+ |
||||||
|
+ xdevice = device_ensure_xdevice (device); |
||||||
|
+ if (!xdevice) |
||||||
|
+ return; |
||||||
|
+ /* Get the list of feedbacks for the device */ |
||||||
|
+ states = XGetFeedbackControl (xdisplay, xdevice, &num_feedbacks); |
||||||
|
+ if (!states) |
||||||
|
+ return; |
||||||
|
+ |
||||||
|
+ /* Calculate acceleration and threshold */ |
||||||
|
+ motion_acceleration = (speed + 1) * 5; /* speed is [-1..1], map to [0..10] */ |
||||||
|
+ motion_threshold = CLAMP (10 - floor (motion_acceleration), 1, 10); |
||||||
|
+ |
||||||
|
+ if (motion_acceleration >= 1.0) |
||||||
|
+ { |
||||||
|
+ /* we want to get the acceleration, with a resolution of 0.5 |
||||||
|
+ */ |
||||||
|
+ if ((motion_acceleration - floor (motion_acceleration)) < 0.25) |
||||||
|
+ { |
||||||
|
+ numerator = floor (motion_acceleration); |
||||||
|
+ denominator = 1; |
||||||
|
+ } |
||||||
|
+ else if ((motion_acceleration - floor (motion_acceleration)) < 0.5) |
||||||
|
+ { |
||||||
|
+ numerator = ceil (2.0 * motion_acceleration); |
||||||
|
+ denominator = 2; |
||||||
|
+ } |
||||||
|
+ else if ((motion_acceleration - floor (motion_acceleration)) < 0.75) |
||||||
|
+ { |
||||||
|
+ numerator = floor (2.0 *motion_acceleration); |
||||||
|
+ denominator = 2; |
||||||
|
+ } |
||||||
|
+ else |
||||||
|
+ { |
||||||
|
+ numerator = ceil (motion_acceleration); |
||||||
|
+ denominator = 1; |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ else if (motion_acceleration < 1.0 && motion_acceleration > 0) |
||||||
|
+ { |
||||||
|
+ /* This we do to 1/10ths */ |
||||||
|
+ numerator = floor (motion_acceleration * 10) + 1; |
||||||
|
+ denominator= 10; |
||||||
|
+ } |
||||||
|
+ else |
||||||
|
+ { |
||||||
|
+ numerator = -1; |
||||||
|
+ denominator = -1; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ if (display) |
||||||
|
+ meta_error_trap_push (display); |
||||||
|
+ |
||||||
|
+ state = (XFeedbackState *) states; |
||||||
|
+ |
||||||
|
+ for (i = 0; i < num_feedbacks; i++) |
||||||
|
+ { |
||||||
|
+ if (state->class == PtrFeedbackClass) |
||||||
|
+ { |
||||||
|
+ /* And tell the device */ |
||||||
|
+ feedback.class = PtrFeedbackClass; |
||||||
|
+ feedback.length = sizeof (XPtrFeedbackControl); |
||||||
|
+ feedback.id = state->id; |
||||||
|
+ feedback.threshold = motion_threshold; |
||||||
|
+ feedback.accelNum = numerator; |
||||||
|
+ feedback.accelDenom = denominator; |
||||||
|
+ |
||||||
|
+ XChangeFeedbackControl (xdisplay, xdevice, |
||||||
|
+ DvAccelNum | DvAccelDenom | DvThreshold, |
||||||
|
+ (XFeedbackControl *) &feedback); |
||||||
|
+ break; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ state = (XFeedbackState *) ((char *) state + state->length); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ if (display && meta_error_trap_pop_with_return (display)) |
||||||
|
+ { |
||||||
|
+ g_warning ("Could not set synaptics touchpad acceleration for %s", |
||||||
|
+ clutter_input_device_get_device_name (device)); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ XFreeFeedbackList (states); |
||||||
|
+} |
||||||
|
+ |
||||||
|
static void |
||||||
|
meta_input_settings_x11_set_send_events (MetaInputSettings *settings, |
||||||
|
ClutterInputDevice *device, |
||||||
|
@@ -167,6 +335,13 @@ meta_input_settings_x11_set_send_events (MetaInputSettings *settings, |
||||||
|
guchar values[2] = { 0 }; /* disabled, disabled-on-external-mouse */ |
||||||
|
guchar *available; |
||||||
|
|
||||||
|
+ if (is_device_synaptics (device)) |
||||||
|
+ { |
||||||
|
+ values[0] = mode != G_DESKTOP_DEVICE_SEND_EVENTS_ENABLED; |
||||||
|
+ change_property (device, "Synaptics Off", XA_INTEGER, 8, &values, 1); |
||||||
|
+ return; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
available = get_property (device, "libinput Send Events Modes Available", |
||||||
|
XA_INTEGER, 8, 2); |
||||||
|
if (!available) |
||||||
|
@@ -219,6 +394,12 @@ meta_input_settings_x11_set_speed (MetaInputSettings *settings, |
||||||
|
Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend)); |
||||||
|
gfloat value = speed; |
||||||
|
|
||||||
|
+ if (is_device_synaptics (device)) |
||||||
|
+ { |
||||||
|
+ change_synaptics_speed (device, speed); |
||||||
|
+ return; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
change_property (device, "libinput Accel Speed", |
||||||
|
XInternAtom (xdisplay, "FLOAT", False), |
||||||
|
32, &value, 1); |
||||||
|
@@ -245,6 +426,19 @@ meta_input_settings_x11_set_left_handed (MetaInputSettings *settings, |
||||||
|
else |
||||||
|
{ |
||||||
|
value = enabled ? 1 : 0; |
||||||
|
+ |
||||||
|
+ if (is_device_synaptics (device)) |
||||||
|
+ { |
||||||
|
+ GSettings *settings; |
||||||
|
+ |
||||||
|
+ settings = g_settings_new ("org.gnome.desktop.peripherals.touchpad"); |
||||||
|
+ change_synaptics_tap_left_handed (device, |
||||||
|
+ g_settings_get_boolean (settings, "tap-to-click"), |
||||||
|
+ enabled); |
||||||
|
+ g_object_unref (settings); |
||||||
|
+ return; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
change_property (device, "libinput Left Handed Enabled", |
||||||
|
XA_INTEGER, 8, &value, 1); |
||||||
|
} |
||||||
|
@@ -268,6 +462,20 @@ meta_input_settings_x11_set_tap_enabled (MetaInputSettings *settings, |
||||||
|
{ |
||||||
|
guchar value = (enabled) ? 1 : 0; |
||||||
|
|
||||||
|
+ if (is_device_synaptics (device)) |
||||||
|
+ { |
||||||
|
+ GDesktopTouchpadHandedness handedness; |
||||||
|
+ GSettings *settings; |
||||||
|
+ |
||||||
|
+ settings = g_settings_new ("org.gnome.desktop.peripherals.touchpad"); |
||||||
|
+ handedness = g_settings_get_enum (settings, "left-handed"); |
||||||
|
+ g_object_unref (settings); |
||||||
|
+ |
||||||
|
+ change_synaptics_tap_left_handed (device, enabled, |
||||||
|
+ handedness == G_DESKTOP_TOUCHPAD_HANDEDNESS_LEFT); |
||||||
|
+ return; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
change_property (device, "libinput Tapping Enabled", |
||||||
|
XA_INTEGER, 8, &value, 1); |
||||||
|
} |
||||||
|
@@ -290,6 +498,27 @@ meta_input_settings_x11_set_invert_scroll (MetaInputSettings *settings, |
||||||
|
{ |
||||||
|
guchar value = (inverted) ? 1 : 0; |
||||||
|
|
||||||
|
+ if (is_device_synaptics (device)) |
||||||
|
+ { |
||||||
|
+ gint32 *scrolling_distance; |
||||||
|
+ |
||||||
|
+ scrolling_distance = get_property (device, "Synaptics Scrolling Distance", |
||||||
|
+ XA_INTEGER, 32, 2); |
||||||
|
+ if (scrolling_distance) |
||||||
|
+ { |
||||||
|
+ scrolling_distance[0] = inverted ? |
||||||
|
+ -abs (scrolling_distance[0]) : abs (scrolling_distance[0]); |
||||||
|
+ scrolling_distance[1] = inverted ? |
||||||
|
+ -abs (scrolling_distance[1]) : abs (scrolling_distance[1]); |
||||||
|
+ |
||||||
|
+ change_property (device, "Synaptics Scrolling Distance", |
||||||
|
+ XA_INTEGER, 32, scrolling_distance, 2); |
||||||
|
+ meta_XFree (scrolling_distance); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ return; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
change_property (device, "libinput Natural Scrolling Enabled", |
||||||
|
XA_INTEGER, 8, &value, 1); |
||||||
|
} |
||||||
|
@@ -303,6 +532,22 @@ meta_input_settings_x11_set_edge_scroll (MetaInputSettings *settings, |
||||||
|
guchar *current = NULL; |
||||||
|
guchar *available = NULL; |
||||||
|
|
||||||
|
+ if (is_device_synaptics (device)) |
||||||
|
+ { |
||||||
|
+ current = get_property (device, "Synaptics Edge Scrolling", |
||||||
|
+ XA_INTEGER, 8, 3); |
||||||
|
+ if (current) |
||||||
|
+ { |
||||||
|
+ current[0] = !!edge_scroll_enabled; |
||||||
|
+ current[1] = !!edge_scroll_enabled; |
||||||
|
+ change_property (device, "Synaptics Edge Scrolling", |
||||||
|
+ XA_INTEGER, 8, current, 3); |
||||||
|
+ meta_XFree (current); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ return; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
available = get_property (device, "libinput Scroll Methods Available", |
||||||
|
XA_INTEGER, 8, SCROLL_METHOD_NUM_FIELDS); |
||||||
|
if (!available || !available[SCROLL_METHOD_FIELD_EDGE]) |
||||||
|
@@ -332,6 +577,22 @@ meta_input_settings_x11_set_two_finger_scroll (MetaInputSettings *set |
||||||
|
guchar *current = NULL; |
||||||
|
guchar *available = NULL; |
||||||
|
|
||||||
|
+ if (is_device_synaptics (device)) |
||||||
|
+ { |
||||||
|
+ current = get_property (device, "Synaptics Two-Finger Scrolling", |
||||||
|
+ XA_INTEGER, 8, 2); |
||||||
|
+ if (current) |
||||||
|
+ { |
||||||
|
+ current[0] = !!two_finger_scroll_enabled; |
||||||
|
+ current[1] = !!two_finger_scroll_enabled; |
||||||
|
+ change_property (device, "Synaptics Two-Finger Scrolling", |
||||||
|
+ XA_INTEGER, 8, current, 2); |
||||||
|
+ meta_XFree (current); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ return; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
available = get_property (device, "libinput Scroll Methods Available", |
||||||
|
XA_INTEGER, 8, SCROLL_METHOD_NUM_FIELDS); |
||||||
|
if (!available || !available[SCROLL_METHOD_FIELD_2FG]) |
||||||
|
-- |
||||||
|
1.8.3.1 |
||||||
|
|
@ -0,0 +1,35 @@ |
|||||||
|
From ac502c921d2e813e6e916a589a07bc58ca4c12e7 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Peter Hutterer <peter.hutterer@who-t.net> |
||||||
|
Date: Fri, 9 Feb 2018 11:53:17 +1000 |
||||||
|
Subject: [PATCH] backends/x11: wacom pressure curve is a 32-bit property |
||||||
|
|
||||||
|
The property has been 32 bits since around 2011 and has not changed, mutter |
||||||
|
expects it to be 8 bits. The mismatch causes change_property to never |
||||||
|
actually change the property. |
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/mutter/issues/26 |
||||||
|
|
||||||
|
Closes: #26 |
||||||
|
--- |
||||||
|
src/backends/x11/meta-input-settings-x11.c | 4 ++-- |
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/backends/x11/meta-input-settings-x11.c b/src/backends/x11/meta-input-settings-x11.c |
||||||
|
index 7d1d360a3..9687fb36f 100644 |
||||||
|
--- a/src/backends/x11/meta-input-settings-x11.c |
||||||
|
+++ b/src/backends/x11/meta-input-settings-x11.c |
||||||
|
@@ -813,9 +813,9 @@ meta_input_settings_x11_set_stylus_pressure (MetaInputSettings *settings, |
||||||
|
ClutterInputDeviceTool *tool, |
||||||
|
const gint32 pressure[4]) |
||||||
|
{ |
||||||
|
- guchar values[4] = { pressure[0], pressure[1], pressure[2], pressure[3] }; |
||||||
|
+ guint32 values[4] = { pressure[0], pressure[1], pressure[2], pressure[3] }; |
||||||
|
|
||||||
|
- change_property (device, "Wacom Pressurecurve", XA_INTEGER, 8, |
||||||
|
+ change_property (device, "Wacom Pressurecurve", XA_INTEGER, 32, |
||||||
|
&values, G_N_ELEMENTS (values)); |
||||||
|
} |
||||||
|
|
||||||
|
-- |
||||||
|
2.16.1 |
||||||
|
|
@ -0,0 +1,25 @@ |
|||||||
|
From e19b0723e829a102f930af735c9ff6d08ec9232f Mon Sep 17 00:00:00 2001 |
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org> |
||||||
|
Date: Fri, 17 Mar 2017 16:44:11 +0100 |
||||||
|
Subject: [PATCH] build: Lower automake requirement |
||||||
|
|
||||||
|
--- |
||||||
|
cogl/configure.ac | 2 +- |
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-) |
||||||
|
|
||||||
|
diff --git a/cogl/configure.ac b/cogl/configure.ac |
||||||
|
index 3ed761c57..1b259af58 100644 |
||||||
|
--- a/cogl/configure.ac |
||||||
|
+++ b/cogl/configure.ac |
||||||
|
@@ -113,7 +113,7 @@ AC_SUBST([WAYLAND_SERVER_REQ_VERSION], [wayland_server_req_version]) |
||||||
|
# want to know if the user specified custom cflags or not. |
||||||
|
cflags_set=${CFLAGS+set} |
||||||
|
|
||||||
|
-AM_INIT_AUTOMAKE([1.14 foreign -Wno-portability no-define no-dist-gzip dist-xz tar-ustar subdir-objects]) |
||||||
|
+AM_INIT_AUTOMAKE([1.11 foreign -Wno-portability no-define no-dist-gzip dist-xz tar-ustar]) |
||||||
|
AM_SILENT_RULES([yes]) |
||||||
|
|
||||||
|
AH_BOTTOM([#include "config-custom.h"]) |
||||||
|
-- |
||||||
|
2.12.0 |
||||||
|
|
@ -0,0 +1,61 @@ |
|||||||
|
From 424e37231a0930594d4363477e7515e006b3dac1 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Carlos Garnacho <carlosg@gnome.org> |
||||||
|
Date: Tue, 13 Feb 2018 11:44:40 +0100 |
||||||
|
Subject: [PATCH] clutter: Extend touchpad device property check for Synaptics |
||||||
|
|
||||||
|
So we reliably get CLUTTER_TOUCHPAD_DEVICE for those. The other heuristics |
||||||
|
to get the device type may fall short. |
||||||
|
--- |
||||||
|
clutter/clutter/x11/clutter-device-manager-xi2.c | 22 +++++++++++++++++++--- |
||||||
|
1 file changed, 19 insertions(+), 3 deletions(-) |
||||||
|
|
||||||
|
diff --git a/clutter/clutter/x11/clutter-device-manager-xi2.c b/clutter/clutter/x11/clutter-device-manager-xi2.c |
||||||
|
index d2610cc..fcba55c 100644 |
||||||
|
--- a/clutter/clutter/x11/clutter-device-manager-xi2.c |
||||||
|
+++ b/clutter/clutter/x11/clutter-device-manager-xi2.c |
||||||
|
@@ -267,8 +267,9 @@ is_touch_device (XIAnyClassInfo **classes, |
||||||
|
} |
||||||
|
|
||||||
|
static gboolean |
||||||
|
-is_touchpad_device (ClutterBackendX11 *backend_x11, |
||||||
|
- XIDeviceInfo *info) |
||||||
|
+query_exists_device_property (ClutterBackendX11 *backend_x11, |
||||||
|
+ XIDeviceInfo *info, |
||||||
|
+ const gchar *property) |
||||||
|
{ |
||||||
|
gulong nitems, bytes_after; |
||||||
|
guint32 *data = NULL; |
||||||
|
@@ -276,7 +277,7 @@ is_touchpad_device (ClutterBackendX11 *backend_x11, |
||||||
|
Atom type; |
||||||
|
Atom prop; |
||||||
|
|
||||||
|
- prop = XInternAtom (backend_x11->xdpy, "libinput Tapping Enabled", True); |
||||||
|
+ prop = XInternAtom (backend_x11->xdpy, property, True); |
||||||
|
if (prop == None) |
||||||
|
return FALSE; |
||||||
|
|
||||||
|
@@ -298,6 +299,21 @@ is_touchpad_device (ClutterBackendX11 *backend_x11, |
||||||
|
} |
||||||
|
|
||||||
|
static gboolean |
||||||
|
+is_touchpad_device (ClutterBackendX11 *backend_x11, |
||||||
|
+ XIDeviceInfo *info) |
||||||
|
+{ |
||||||
|
+ if (query_exists_device_property (backend_x11, info, |
||||||
|
+ "libinput Tapping Enabled")) |
||||||
|
+ return TRUE; |
||||||
|
+ |
||||||
|
+ if (query_exists_device_property (backend_x11, info, |
||||||
|
+ "Synaptics Off")) |
||||||
|
+ return TRUE; |
||||||
|
+ |
||||||
|
+ return FALSE; |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static gboolean |
||||||
|
get_device_ids (ClutterBackendX11 *backend_x11, |
||||||
|
XIDeviceInfo *info, |
||||||
|
gchar **vendor_id, |
||||||
|
-- |
||||||
|
1.8.3.1 |
||||||
|
|
@ -0,0 +1,217 @@ |
|||||||
|
From e69a6ac0e44e8d5fd72d7bc60f118044b0407e8f Mon Sep 17 00:00:00 2001 |
||||||
|
From: rpm-build <rpm-build> |
||||||
|
Date: Thu, 9 Nov 2017 16:18:02 -0500 |
||||||
|
Subject: [PATCH] 0001-clutter-stage-don-t-use-deprecated-api.patch |
||||||
|
|
||||||
|
--- |
||||||
|
clutter/clutter/clutter-stage.c | 21 ++++++++++++--------- |
||||||
|
1 file changed, 12 insertions(+), 9 deletions(-) |
||||||
|
|
||||||
|
diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c |
||||||
|
index 02ab07b..e4f9342 100644 |
||||||
|
--- a/clutter/clutter/clutter-stage.c |
||||||
|
+++ b/clutter/clutter/clutter-stage.c |
||||||
|
@@ -1459,64 +1459,65 @@ _clutter_stage_do_pick_on_view (ClutterStage *stage, |
||||||
|
fb_height = view_layout.height * fb_scale; |
||||||
|
cogl_push_framebuffer (fb); |
||||||
|
|
||||||
|
/* needed for when a context switch happens */ |
||||||
|
_clutter_stage_maybe_setup_viewport (stage, view); |
||||||
|
|
||||||
|
/* FIXME: For some reason leaving the cogl clip stack empty causes the |
||||||
|
* picking to not work at all, so setting it the whole framebuffer content |
||||||
|
* for now. */ |
||||||
|
cogl_framebuffer_push_scissor_clip (fb, 0, 0, |
||||||
|
view_layout.width * fb_scale, |
||||||
|
view_layout.height * fb_scale); |
||||||
|
|
||||||
|
_clutter_stage_window_get_dirty_pixel (priv->impl, view, &dirty_x, &dirty_y); |
||||||
|
|
||||||
|
if (G_LIKELY (!(clutter_pick_debug_flags & CLUTTER_DEBUG_DUMP_PICK_BUFFERS))) |
||||||
|
{ |
||||||
|
CLUTTER_NOTE (PICK, "Pushing pick scissor clip x: %d, y: %d, 1x1", |
||||||
|
(int) dirty_x * fb_scale, |
||||||
|
(int) dirty_y * fb_scale); |
||||||
|
cogl_framebuffer_push_scissor_clip (fb, dirty_x * fb_scale, dirty_y * fb_scale, 1, 1); |
||||||
|
} |
||||||
|
|
||||||
|
viewport_offset_x = x * fb_scale - dirty_x * fb_scale; |
||||||
|
viewport_offset_y = y * fb_scale - dirty_y * fb_scale; |
||||||
|
CLUTTER_NOTE (PICK, "Setting viewport to %f, %f, %f, %f", |
||||||
|
priv->viewport[0] * fb_scale - viewport_offset_x, |
||||||
|
priv->viewport[1] * fb_scale - viewport_offset_y, |
||||||
|
priv->viewport[2] * fb_scale, |
||||||
|
priv->viewport[3] * fb_scale); |
||||||
|
- cogl_set_viewport (priv->viewport[0] * fb_scale - viewport_offset_x, |
||||||
|
- priv->viewport[1] * fb_scale - viewport_offset_y, |
||||||
|
- priv->viewport[2] * fb_scale, |
||||||
|
- priv->viewport[3] * fb_scale); |
||||||
|
+ cogl_framebuffer_set_viewport (fb, |
||||||
|
+ priv->viewport[0] * fb_scale - viewport_offset_x, |
||||||
|
+ priv->viewport[1] * fb_scale - viewport_offset_y, |
||||||
|
+ priv->viewport[2] * fb_scale, |
||||||
|
+ priv->viewport[3] * fb_scale); |
||||||
|
|
||||||
|
read_x = dirty_x * fb_scale; |
||||||
|
read_y = dirty_y * fb_scale; |
||||||
|
|
||||||
|
CLUTTER_NOTE (PICK, "Performing pick at %i,%i on view %dx%d+%d+%d s: %d", |
||||||
|
x, y, |
||||||
|
view_layout.width, view_layout.height, |
||||||
|
view_layout.x, view_layout.y, fb_scale); |
||||||
|
|
||||||
|
cogl_color_init_from_4ub (&stage_pick_id, 255, 255, 255, 255); |
||||||
|
cogl_clear (&stage_pick_id, COGL_BUFFER_BIT_COLOR | COGL_BUFFER_BIT_DEPTH); |
||||||
|
|
||||||
|
/* Disable dithering (if any) when doing the painting in pick mode */ |
||||||
|
dither_enabled_save = cogl_framebuffer_get_dither_enabled (fb); |
||||||
|
cogl_framebuffer_set_dither_enabled (fb, FALSE); |
||||||
|
|
||||||
|
/* Render the entire scence in pick mode - just single colored silhouette's |
||||||
|
* are drawn offscreen (as we never swap buffers) |
||||||
|
*/ |
||||||
|
context->pick_mode = mode; |
||||||
|
_clutter_stage_paint_view (stage, view, NULL); |
||||||
|
context->pick_mode = CLUTTER_PICK_NONE; |
||||||
|
|
||||||
|
/* Read the color of the screen co-ords pixel. RGBA_8888_PRE is used |
||||||
|
even though we don't care about the alpha component because under |
||||||
|
GLES this is the only format that is guaranteed to work so Cogl |
||||||
|
will end up having to do a conversion if any other format is |
||||||
|
used. The format is requested as pre-multiplied because Cogl |
||||||
|
assumes that all pixels in the framebuffer are premultiplied so |
||||||
|
it avoids a conversion. */ |
||||||
|
@@ -3590,123 +3591,125 @@ calculate_z_translation (float z_near) |
||||||
|
* z_2d = --------------------------- + z_near |
||||||
|
* sin (0.5°) |
||||||
|
*/ |
||||||
|
|
||||||
|
/* We expect the compiler should boil this down to z_near * CONSTANT |
||||||
|
* already, but just in case we use precomputed constants |
||||||
|
*/ |
||||||
|
#if 0 |
||||||
|
# define A tanf (_DEG_TO_RAD (30.f)) |
||||||
|
# define B sinf (_DEG_TO_RAD (120.f)) |
||||||
|
# define C cosf (_DEG_TO_RAD (30.5f)) |
||||||
|
# define D sinf (_DEG_TO_RAD (.5f)) |
||||||
|
#else |
||||||
|
# define A 0.57735025882720947265625f |
||||||
|
# define B 0.866025388240814208984375f |
||||||
|
# define C 0.86162912845611572265625f |
||||||
|
# define D 0.00872653536498546600341796875f |
||||||
|
#endif |
||||||
|
|
||||||
|
return z_near |
||||||
|
* A * B * C |
||||||
|
/ D |
||||||
|
+ z_near; |
||||||
|
} |
||||||
|
|
||||||
|
void |
||||||
|
_clutter_stage_maybe_setup_viewport (ClutterStage *stage, |
||||||
|
ClutterStageView *view) |
||||||
|
{ |
||||||
|
ClutterStagePrivate *priv = stage->priv; |
||||||
|
+ CoglFramebuffer *fb = clutter_stage_view_get_framebuffer (view); |
||||||
|
|
||||||
|
if (clutter_stage_view_is_dirty_viewport (view)) |
||||||
|
{ |
||||||
|
cairo_rectangle_int_t view_layout; |
||||||
|
ClutterPerspective perspective; |
||||||
|
float fb_scale; |
||||||
|
float viewport_offset_x; |
||||||
|
float viewport_offset_y; |
||||||
|
float z_2d; |
||||||
|
|
||||||
|
CLUTTER_NOTE (PAINT, |
||||||
|
"Setting up the viewport { w:%f, h:%f }", |
||||||
|
priv->viewport[2], |
||||||
|
priv->viewport[3]); |
||||||
|
|
||||||
|
fb_scale = clutter_stage_view_get_scale (view); |
||||||
|
clutter_stage_view_get_layout (view, &view_layout); |
||||||
|
|
||||||
|
viewport_offset_x = view_layout.x * fb_scale; |
||||||
|
viewport_offset_y = view_layout.y * fb_scale; |
||||||
|
- cogl_set_viewport (priv->viewport[0] * fb_scale - viewport_offset_x, |
||||||
|
- priv->viewport[1] * fb_scale - viewport_offset_y, |
||||||
|
- priv->viewport[2] * fb_scale, |
||||||
|
- priv->viewport[3] * fb_scale); |
||||||
|
+ cogl_framebuffer_set_viewport (fb, |
||||||
|
+ priv->viewport[0] * fb_scale - viewport_offset_x, |
||||||
|
+ priv->viewport[1] * fb_scale - viewport_offset_y, |
||||||
|
+ priv->viewport[2] * fb_scale, |
||||||
|
+ priv->viewport[3] * fb_scale); |
||||||
|
|
||||||
|
perspective = priv->perspective; |
||||||
|
|
||||||
|
/* Ideally we want to regenerate the perspective matrix whenever |
||||||
|
* the size changes but if the user has provided a custom matrix |
||||||
|
* then we don't want to override it */ |
||||||
|
if (!priv->has_custom_perspective) |
||||||
|
{ |
||||||
|
perspective.aspect = priv->viewport[2] / priv->viewport[3]; |
||||||
|
z_2d = calculate_z_translation (perspective.z_near); |
||||||
|
|
||||||
|
/* NB: z_2d is only enough room for 85% of the stage_height between |
||||||
|
* the stage and the z_near plane. For behind the stage plane we |
||||||
|
* want a more consistent gap of 10 times the stage_height before |
||||||
|
* hitting the far plane so we calculate that relative to the final |
||||||
|
* height of the stage plane at the z_2d_distance we got... */ |
||||||
|
perspective.z_far = z_2d + |
||||||
|
tanf (_DEG_TO_RAD (perspective.fovy / 2.0f)) * z_2d * 20.0f; |
||||||
|
|
||||||
|
clutter_stage_set_perspective_internal (stage, &perspective); |
||||||
|
} |
||||||
|
else |
||||||
|
z_2d = calculate_z_translation (perspective.z_near); |
||||||
|
|
||||||
|
cogl_matrix_init_identity (&priv->view); |
||||||
|
cogl_matrix_view_2d_in_perspective (&priv->view, |
||||||
|
perspective.fovy, |
||||||
|
perspective.aspect, |
||||||
|
perspective.z_near, |
||||||
|
z_2d, |
||||||
|
priv->viewport[2], |
||||||
|
priv->viewport[3]); |
||||||
|
|
||||||
|
clutter_stage_view_set_dirty_viewport (view, FALSE); |
||||||
|
} |
||||||
|
|
||||||
|
if (clutter_stage_view_is_dirty_projection (view)) |
||||||
|
{ |
||||||
|
- cogl_set_projection_matrix (&priv->projection); |
||||||
|
+ cogl_framebuffer_set_projection_matrix (fb, &priv->projection); |
||||||
|
|
||||||
|
clutter_stage_view_set_dirty_projection (view, FALSE); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
#undef _DEG_TO_RAD |
||||||
|
|
||||||
|
/** |
||||||
|
* clutter_stage_ensure_redraw: |
||||||
|
* @stage: a #ClutterStage |
||||||
|
* |
||||||
|
* Ensures that @stage is redrawn |
||||||
|
* |
||||||
|
* This function should not be called by applications: it is |
||||||
|
* used when embedding a #ClutterStage into a toolkit with |
||||||
|
* another windowing system, like GTK+. |
||||||
|
* |
||||||
|
* Since: 1.0 |
||||||
|
*/ |
||||||
|
void |
||||||
|
clutter_stage_ensure_redraw (ClutterStage *stage) |
||||||
|
{ |
||||||
|
ClutterMasterClock *master_clock; |
||||||
|
ClutterStagePrivate *priv; |
||||||
|
|
||||||
|
g_return_if_fail (CLUTTER_IS_STAGE (stage)); |
||||||
|
|
||||||
|
priv = stage->priv; |
||||||
|
|
||||||
|
if (!priv->relayout_pending && !priv->redraw_pending) |
||||||
|
-- |
||||||
|
2.14.3 |
||||||
|
|
@ -0,0 +1,481 @@ |
|||||||
|
From 1d745a858470b29b44e5b0e308488a477c4526cb Mon Sep 17 00:00:00 2001 |
||||||
|
From: Carlos Garnacho <carlosg@gnome.org> |
||||||
|
Date: Thu, 22 Feb 2018 17:48:17 +0100 |
||||||
|
Subject: [PATCH 1/2] clutter/x11: Implement missing ClutterInputDevice pad |
||||||
|
vmethods |
||||||
|
|
||||||
|
Use libwacom to be able to find out modes, groups and button roles on |
||||||
|
pad devices. |
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/mutter/issues/48 |
||||||
|
|
||||||
|
Closes: #48 |
||||||
|
--- |
||||||
|
clutter/clutter/x11/clutter-device-manager-xi2.c | 11 +++ |
||||||
|
clutter/clutter/x11/clutter-device-manager-xi2.h | 8 ++ |
||||||
|
clutter/clutter/x11/clutter-input-device-xi2.c | 97 ++++++++++++++++++++++++ |
||||||
|
clutter/clutter/x11/clutter-input-device-xi2.h | 10 +++ |
||||||
|
clutter/configure.ac | 32 +++++++- |
||||||
|
5 files changed, 156 insertions(+), 2 deletions(-) |
||||||
|
|
||||||
|
diff --git a/clutter/clutter/x11/clutter-device-manager-xi2.c b/clutter/clutter/x11/clutter-device-manager-xi2.c |
||||||
|
index d2610cc..dee2604 100644 |
||||||
|
--- a/clutter/clutter/x11/clutter-device-manager-xi2.c |
||||||
|
+++ b/clutter/clutter/x11/clutter-device-manager-xi2.c |
||||||
|
@@ -495,11 +495,18 @@ create_device (ClutterDeviceManagerXI2 *manager_xi2, |
||||||
|
"device-node", node_path, |
||||||
|
"n-rings", num_rings, |
||||||
|
"n-strips", num_strips, |
||||||
|
+ "n-mode-groups", MAX (num_rings, num_strips), |
||||||
|
NULL); |
||||||
|
|
||||||
|
translate_device_classes (backend_x11->xdpy, retval, |
||||||
|
info->classes, |
||||||
|
info->num_classes); |
||||||
|
+ |
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+ if (source == CLUTTER_PAD_DEVICE) |
||||||
|
+ clutter_input_device_xi2_ensure_wacom_info (retval, manager_xi2->wacom_db); |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
g_free (vendor_id); |
||||||
|
g_free (product_id); |
||||||
|
|
||||||
|
@@ -2063,4 +2070,8 @@ clutter_device_manager_xi2_init (ClutterDeviceManagerXI2 *self) |
||||||
|
(GDestroyNotify) g_object_unref); |
||||||
|
self->tools_by_serial = g_hash_table_new_full (NULL, NULL, NULL, |
||||||
|
(GDestroyNotify) g_object_unref); |
||||||
|
+ |
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+ self->wacom_db = libwacom_database_new (); |
||||||
|
+#endif |
||||||
|
} |
||||||
|
diff --git a/clutter/clutter/x11/clutter-device-manager-xi2.h b/clutter/clutter/x11/clutter-device-manager-xi2.h |
||||||
|
index c8e66f9..be25759 100644 |
||||||
|
--- a/clutter/clutter/x11/clutter-device-manager-xi2.h |
||||||
|
+++ b/clutter/clutter/x11/clutter-device-manager-xi2.h |
||||||
|
@@ -26,6 +26,10 @@ |
||||||
|
|
||||||
|
#include <clutter/clutter-device-manager.h> |
||||||
|
|
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+#include <libwacom/libwacom.h> |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
G_BEGIN_DECLS |
||||||
|
|
||||||
|
#define CLUTTER_TYPE_DEVICE_MANAGER_XI2 (_clutter_device_manager_xi2_get_type ()) |
||||||
|
@@ -51,6 +55,10 @@ struct _ClutterDeviceManagerXI2 |
||||||
|
GList *slave_devices; |
||||||
|
|
||||||
|
int opcode; |
||||||
|
+ |
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+ WacomDeviceDatabase *wacom_db; |
||||||
|
+#endif |
||||||
|
}; |
||||||
|
|
||||||
|
struct _ClutterDeviceManagerXI2Class |
||||||
|
diff --git a/clutter/clutter/x11/clutter-input-device-xi2.c b/clutter/clutter/x11/clutter-input-device-xi2.c |
||||||
|
index 7fb0e05..2d9b6d2 100644 |
||||||
|
--- a/clutter/clutter/x11/clutter-input-device-xi2.c |
||||||
|
+++ b/clutter/clutter/x11/clutter-input-device-xi2.c |
||||||
|
@@ -45,6 +45,10 @@ struct _ClutterInputDeviceXI2 |
||||||
|
|
||||||
|
gint device_id; |
||||||
|
ClutterInputDeviceTool *current_tool; |
||||||
|
+ |
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+ WacomDevice *wacom_device; |
||||||
|
+#endif |
||||||
|
}; |
||||||
|
|
||||||
|
#define N_BUTTONS 5 |
||||||
|
@@ -88,15 +92,94 @@ clutter_input_device_xi2_is_grouped (ClutterInputDevice *device, |
||||||
|
} |
||||||
|
|
||||||
|
static void |
||||||
|
+clutter_input_device_xi2_finalize (GObject *object) |
||||||
|
+{ |
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+ ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (object); |
||||||
|
+ |
||||||
|
+ if (device_xi2->wacom_device) |
||||||
|
+ libwacom_destroy (device_xi2->wacom_device); |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
+ G_OBJECT_CLASS (clutter_input_device_xi2_parent_class)->finalize (object); |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static gint |
||||||
|
+clutter_input_device_xi2_get_group_n_modes (ClutterInputDevice *device, |
||||||
|
+ gint group) |
||||||
|
+{ |
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+ ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device); |
||||||
|
+ |
||||||
|
+ if (device_xi2->wacom_device) |
||||||
|
+ { |
||||||
|
+ if (group == 0) |
||||||
|
+ { |
||||||
|
+ if (libwacom_has_ring (device_xi2->wacom_device)) |
||||||
|
+ return libwacom_get_ring_num_modes (device_xi2->wacom_device); |
||||||
|
+ else if (libwacom_get_num_strips (device_xi2->wacom_device) >= 1) |
||||||
|
+ return libwacom_get_strips_num_modes (device_xi2->wacom_device); |
||||||
|
+ } |
||||||
|
+ else if (group == 1) |
||||||
|
+ { |
||||||
|
+ if (libwacom_has_ring2 (device_xi2->wacom_device)) |
||||||
|
+ return libwacom_get_ring2_num_modes (device_xi2->wacom_device); |
||||||
|
+ else if (libwacom_get_num_strips (device_xi2->wacom_device) >= 2) |
||||||
|
+ return libwacom_get_strips_num_modes (device_xi2->wacom_device); |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
+ return -1; |
||||||
|
+} |
||||||
|
+ |
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+static int |
||||||
|
+clutter_input_device_xi2_get_button_group (ClutterInputDevice *device, |
||||||
|
+ guint button) |
||||||
|
+{ |
||||||
|
+ ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device); |
||||||
|
+ |
||||||
|
+ if (device_xi2->wacom_device) |
||||||
|
+ { |
||||||
|
+ if (button >= libwacom_get_num_buttons (device_xi2->wacom_device)) |
||||||
|
+ return -1; |
||||||
|
+ |
||||||
|
+ return libwacom_get_button_led_group (device_xi2->wacom_device, |
||||||
|
+ 'A' + button); |
||||||
|
+ } |
||||||
|
+ else |
||||||
|
+ return -1; |
||||||
|
+} |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
+static gboolean |
||||||
|
+clutter_input_device_xi2_is_mode_switch_button (ClutterInputDevice *device, |
||||||
|
+ guint group, |
||||||
|
+ guint button) |
||||||
|
+{ |
||||||
|
+ int button_group = -1; |
||||||
|
+ |
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+ button_group = clutter_input_device_xi2_get_button_group (device, button); |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
+ return button_group == (int) group; |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static void |
||||||
|
clutter_input_device_xi2_class_init (ClutterInputDeviceXI2Class *klass) |
||||||
|
{ |
||||||
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass); |
||||||
|
ClutterInputDeviceClass *device_class = CLUTTER_INPUT_DEVICE_CLASS (klass); |
||||||
|
|
||||||
|
gobject_class->constructed = clutter_input_device_xi2_constructed; |
||||||
|
+ gobject_class->finalize = clutter_input_device_xi2_finalize; |
||||||
|
|
||||||
|
device_class->keycode_to_evdev = clutter_input_device_xi2_keycode_to_evdev; |
||||||
|
device_class->is_grouped = clutter_input_device_xi2_is_grouped; |
||||||
|
+ device_class->get_group_n_modes = clutter_input_device_xi2_get_group_n_modes; |
||||||
|
+ device_class->is_mode_switch_button = clutter_input_device_xi2_is_mode_switch_button; |
||||||
|
} |
||||||
|
|
||||||
|
static void |
||||||
|
@@ -196,3 +279,17 @@ clutter_input_device_xi2_get_current_tool (ClutterInputDevice *device) |
||||||
|
ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device); |
||||||
|
return device_xi2->current_tool; |
||||||
|
} |
||||||
|
+ |
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+void |
||||||
|
+clutter_input_device_xi2_ensure_wacom_info (ClutterInputDevice *device, |
||||||
|
+ WacomDeviceDatabase *wacom_db) |
||||||
|
+{ |
||||||
|
+ ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device); |
||||||
|
+ const gchar *node_path; |
||||||
|
+ |
||||||
|
+ node_path = clutter_input_device_get_device_node (device); |
||||||
|
+ device_xi2->wacom_device = libwacom_new_from_path (wacom_db, node_path, |
||||||
|
+ WFALLBACK_NONE, NULL); |
||||||
|
+} |
||||||
|
+#endif |
||||||
|
diff --git a/clutter/clutter/x11/clutter-input-device-xi2.h b/clutter/clutter/x11/clutter-input-device-xi2.h |
||||||
|
index b93684f..e30fb4d 100644 |
||||||
|
--- a/clutter/clutter/x11/clutter-input-device-xi2.h |
||||||
|
+++ b/clutter/clutter/x11/clutter-input-device-xi2.h |
||||||
|
@@ -27,6 +27,10 @@ |
||||||
|
#include <clutter/clutter-input-device.h> |
||||||
|
#include <X11/extensions/XInput2.h> |
||||||
|
|
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+#include <libwacom/libwacom.h> |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
G_BEGIN_DECLS |
||||||
|
|
||||||
|
#define CLUTTER_TYPE_INPUT_DEVICE_XI2 (_clutter_input_device_xi2_get_type ()) |
||||||
|
@@ -45,6 +49,12 @@ void clutter_input_device_xi2_update_tool (ClutterInputDevice *device, |
||||||
|
ClutterInputDeviceTool *tool); |
||||||
|
ClutterInputDeviceTool * clutter_input_device_xi2_get_current_tool (ClutterInputDevice *device); |
||||||
|
|
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+void clutter_input_device_xi2_ensure_wacom_info (ClutterInputDevice *device, |
||||||
|
+ WacomDeviceDatabase *wacom_db); |
||||||
|
+ |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
G_END_DECLS |
||||||
|
|
||||||
|
#endif /* __CLUTTER_INPUT_DEVICE_XI2_H__ */ |
||||||
|
diff --git a/clutter/configure.ac b/clutter/configure.ac |
||||||
|
index 3c3d0c5..5474fa0 100644 |
||||||
|
--- a/clutter/configure.ac |
||||||
|
+++ b/clutter/configure.ac |
||||||
|
@@ -121,6 +121,7 @@ m4_define([xcomposite_req_version], [0.4]) |
||||||
|
m4_define([gdk_req_version], [3.3.18]) |
||||||
|
m4_define([libinput_req_version], [1.4.0]) |
||||||
|
m4_define([libudev_req_version], [136]) |
||||||
|
+m4_define([libwacom_req_version], [0.13]) |
||||||
|
|
||||||
|
AC_SUBST([GLIB_REQ_VERSION], [glib_req_version]) |
||||||
|
AC_SUBST([COGL_REQ_VERSION], [cogl_req_version]) |
||||||
|
@@ -133,6 +134,7 @@ AC_SUBST([XCOMPOSITE_REQ_VERSION], [xcomposite_req_version]) |
||||||
|
AC_SUBST([GDK_REQ_VERSION], [gdk_req_version]) |
||||||
|
AC_SUBST([LIBINPUT_REQ_VERSION], [libinput_req_version]) |
||||||
|
AC_SUBST([LIBUDEV_REQ_VERSION], [libudev_req_version]) |
||||||
|
+AC_SUBST([LIBWACOM_REQ_VERSION], [libwacom_req_version]) |
||||||
|
|
||||||
|
# Checks for typedefs, structures, and compiler characteristics. |
||||||
|
AM_PATH_GLIB_2_0([glib_req_version], |
||||||
|
@@ -508,6 +510,32 @@ X11_EXTS=${X11_EXTS#* } |
||||||
|
|
||||||
|
AC_CACHE_SAVE |
||||||
|
|
||||||
|
+dnl === Libwacom support for X11 =============================================== |
||||||
|
+AC_ARG_WITH(libwacom, |
||||||
|
+ AC_HELP_STRING([--without-libwacom], |
||||||
|
+ [disable the use of libwacom for advanced tablet management]),, |
||||||
|
+ with_libwacom=auto) |
||||||
|
+ |
||||||
|
+have_libwacom=no |
||||||
|
+AC_MSG_CHECKING([libwacom]) |
||||||
|
+if test x$with_libwacom = xno ; then |
||||||
|
+ AC_MSG_RESULT([disabled]) |
||||||
|
+else |
||||||
|
+ if $PKG_CONFIG --exists libwacom '>=' $LIBWACOM_REQ_VERSION; then |
||||||
|
+ have_libwacom=yes |
||||||
|
+ AC_MSG_RESULT(yes) |
||||||
|
+ PKG_CHECK_MODULES([LIBWACOM], [libwacom]) |
||||||
|
+ AC_SUBST(LIBWACOM_CFLAGS) |
||||||
|
+ AC_SUBST(LIBWACOM_LIBS) |
||||||
|
+ AC_DEFINE([HAVE_LIBWACOM], 1, [Building with libwacom for advanced tablet management]) |
||||||
|
+ else |
||||||
|
+ AC_MSG_RESULT(no) |
||||||
|
+ if test x$with_libwacom = xyes ; then |
||||||
|
+ AC_MSG_ERROR([libwacom forced but not found]) |
||||||
|
+ fi |
||||||
|
+ fi |
||||||
|
+fi |
||||||
|
+ |
||||||
|
dnl === Enable GDK-Pixbuf in tests ============================================ |
||||||
|
|
||||||
|
m4_define([pixbuf_default], [yes]) |
||||||
|
@@ -679,8 +707,8 @@ AS_IF([test "x$CLUTTER_BASE_PC_FILES_PRIVATE" = "x" && test "x$BACKEND_PC_FILES_ |
||||||
|
AC_SUBST(CLUTTER_REQUIRES) |
||||||
|
AC_SUBST(CLUTTER_REQUIRES_PRIVATE) |
||||||
|
|
||||||
|
-CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_DEPS_PRIVATE_CFLAGS $GLIB_CFLAGS" |
||||||
|
-CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_DEPS_PRIVATE_LIBS $GLIB_LIBS" |
||||||
|
+CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_DEPS_PRIVATE_CFLAGS $GLIB_CFLAGS $LIBWACOM_CFLAGS" |
||||||
|
+CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_DEPS_PRIVATE_LIBS $GLIB_LIBS $LIBWACOM_LIBS" |
||||||
|
AC_SUBST(CLUTTER_CFLAGS) |
||||||
|
AC_SUBST(CLUTTER_LIBS) |
||||||
|
|
||||||
|
-- |
||||||
|
1.8.3.1 |
||||||
|
|
||||||
|
|
||||||
|
From f8fa4b8fa13fba9ed484be74fb7fc82499d46261 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Carlos Garnacho <carlosg@gnome.org> |
||||||
|
Date: Thu, 22 Feb 2018 17:50:42 +0100 |
||||||
|
Subject: [PATCH 2/2] clutter/x11: Communicate proper group/mode on pad events. |
||||||
|
|
||||||
|
So we can trigger actions for the right mode. |
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/mutter/issues/48 |
||||||
|
|
||||||
|
Closes: #48 |
||||||
|
--- |
||||||
|
clutter/clutter/x11/clutter-device-manager-xi2.c | 15 +++++- |
||||||
|
clutter/clutter/x11/clutter-input-device-xi2.c | 61 ++++++++++++++++++++++++ |
||||||
|
clutter/clutter/x11/clutter-input-device-xi2.h | 9 ++++ |
||||||
|
3 files changed, 84 insertions(+), 1 deletion(-) |
||||||
|
|
||||||
|
diff --git a/clutter/clutter/x11/clutter-device-manager-xi2.c b/clutter/clutter/x11/clutter-device-manager-xi2.c |
||||||
|
index dee2604..d269a38 100644 |
||||||
|
--- a/clutter/clutter/x11/clutter-device-manager-xi2.c |
||||||
|
+++ b/clutter/clutter/x11/clutter-device-manager-xi2.c |
||||||
|
@@ -1133,7 +1133,7 @@ translate_pad_event (ClutterEvent *event, |
||||||
|
ClutterInputDevice *device) |
||||||
|
{ |
||||||
|
gdouble value; |
||||||
|
- guint number; |
||||||
|
+ guint number, mode = 0; |
||||||
|
|
||||||
|
if (!translate_pad_axis (device, &xev->valuators, |
||||||
|
&event->any.type, |
||||||
|
@@ -1147,15 +1147,21 @@ translate_pad_event (ClutterEvent *event, |
||||||
|
if (xev->evtype == XI_Motion) |
||||||
|
value = -1; |
||||||
|
|
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+ mode = clutter_input_device_xi2_get_pad_group_mode (device, number); |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
if (event->any.type == CLUTTER_PAD_RING) |
||||||
|
{ |
||||||
|
event->pad_ring.ring_number = number; |
||||||
|
event->pad_ring.angle = value; |
||||||
|
+ event->pad_ring.mode = mode; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
event->pad_strip.strip_number = number; |
||||||
|
event->pad_strip.value = value; |
||||||
|
+ event->pad_strip.mode = mode; |
||||||
|
} |
||||||
|
|
||||||
|
event->any.time = xev->time; |
||||||
|
@@ -1382,6 +1388,13 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator, |
||||||
|
|
||||||
|
/* Pad buttons are 0-indexed */ |
||||||
|
event->pad_button.button = xev->detail - 1; |
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+ clutter_input_device_xi2_update_pad_state (device, |
||||||
|
+ event->pad_button.button, |
||||||
|
+ (xi_event->evtype == XI_ButtonPress), |
||||||
|
+ &event->pad_button.group, |
||||||
|
+ &event->pad_button.mode); |
||||||
|
+#endif |
||||||
|
clutter_event_set_device (event, device); |
||||||
|
clutter_event_set_source_device (event, source_device); |
||||||
|
|
||||||
|
diff --git a/clutter/clutter/x11/clutter-input-device-xi2.c b/clutter/clutter/x11/clutter-input-device-xi2.c |
||||||
|
index 2d9b6d2..f62ba85 100644 |
||||||
|
--- a/clutter/clutter/x11/clutter-input-device-xi2.c |
||||||
|
+++ b/clutter/clutter/x11/clutter-input-device-xi2.c |
||||||
|
@@ -48,6 +48,7 @@ struct _ClutterInputDeviceXI2 |
||||||
|
|
||||||
|
#ifdef HAVE_LIBWACOM |
||||||
|
WacomDevice *wacom_device; |
||||||
|
+ GArray *group_modes; |
||||||
|
#endif |
||||||
|
}; |
||||||
|
|
||||||
|
@@ -68,6 +69,15 @@ clutter_input_device_xi2_constructed (GObject *gobject) |
||||||
|
|
||||||
|
if (G_OBJECT_CLASS (clutter_input_device_xi2_parent_class)->constructed) |
||||||
|
G_OBJECT_CLASS (clutter_input_device_xi2_parent_class)->constructed (gobject); |
||||||
|
+ |
||||||
|
+#ifdef HAVE_LIBWACOM |
||||||
|
+ if (clutter_input_device_get_device_type (CLUTTER_INPUT_DEVICE (gobject)) == CLUTTER_PAD_DEVICE) |
||||||
|
+ { |
||||||
|
+ device_xi2->group_modes = g_array_new (FALSE, TRUE, sizeof (guint)); |
||||||
|
+ g_array_set_size (device_xi2->group_modes, |
||||||
|
+ clutter_input_device_get_n_mode_groups (CLUTTER_INPUT_DEVICE (gobject))); |
||||||
|
+ } |
||||||
|
+#endif |
||||||
|
} |
||||||
|
|
||||||
|
static gboolean |
||||||
|
@@ -99,6 +109,8 @@ clutter_input_device_xi2_finalize (GObject *object) |
||||||
|
|
||||||
|
if (device_xi2->wacom_device) |
||||||
|
libwacom_destroy (device_xi2->wacom_device); |
||||||
|
+ |
||||||
|
+ g_array_unref (device_xi2->group_modes); |
||||||
|
#endif |
||||||
|
|
||||||
|
G_OBJECT_CLASS (clutter_input_device_xi2_parent_class)->finalize (object); |
||||||
|
@@ -292,4 +304,53 @@ clutter_input_device_xi2_ensure_wacom_info (ClutterInputDevice *device, |
||||||
|
device_xi2->wacom_device = libwacom_new_from_path (wacom_db, node_path, |
||||||
|
WFALLBACK_NONE, NULL); |
||||||
|
} |
||||||
|
+ |
||||||
|
+guint |
||||||
|
+clutter_input_device_xi2_get_pad_group_mode (ClutterInputDevice *device, |
||||||
|
+ guint group) |
||||||
|
+{ |
||||||
|
+ ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device); |
||||||
|
+ |
||||||
|
+ if (group >= device_xi2->group_modes->len) |
||||||
|
+ return 0; |
||||||
|
+ |
||||||
|
+ return g_array_index (device_xi2->group_modes, guint, group); |
||||||
|
+} |
||||||
|
+ |
||||||
|
+void |
||||||
|
+clutter_input_device_xi2_update_pad_state (ClutterInputDevice *device, |
||||||
|
+ guint button, |
||||||
|
+ guint state, |
||||||
|
+ guint *group, |
||||||
|
+ guint *mode) |
||||||
|
+{ |
||||||
|
+ ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device); |
||||||
|
+ guint button_group, *group_mode; |
||||||
|
+ gboolean is_mode_switch = FALSE; |
||||||
|
+ |
||||||
|
+ button_group = clutter_input_device_xi2_get_button_group (device, button); |
||||||
|
+ is_mode_switch = button_group >= 0; |
||||||
|
+ |
||||||
|
+ /* Assign all non-mode-switch buttons to group 0 so far */ |
||||||
|
+ button_group = MAX (0, button_group); |
||||||
|
+ |
||||||
|
+ if (button_group >= device_xi2->group_modes->len) |
||||||
|
+ return; |
||||||
|
+ |
||||||
|
+ group_mode = &g_array_index (device_xi2->group_modes, guint, button_group); |
||||||
|
+ |
||||||
|
+ if (is_mode_switch && state) |
||||||
|
+ { |
||||||
|
+ guint next, n_modes; |
||||||
|
+ |
||||||
|
+ n_modes = clutter_input_device_get_group_n_modes (device, button_group); |
||||||
|
+ next = (*group_mode + 1) % n_modes; |
||||||
|
+ *group_mode = next; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ if (group) |
||||||
|
+ *group = button_group; |
||||||
|
+ if (mode) |
||||||
|
+ *mode = *group_mode; |
||||||
|
+} |
||||||
|
#endif |
||||||
|
diff --git a/clutter/clutter/x11/clutter-input-device-xi2.h b/clutter/clutter/x11/clutter-input-device-xi2.h |
||||||
|
index e30fb4d..2194e1b 100644 |
||||||
|
--- a/clutter/clutter/x11/clutter-input-device-xi2.h |
||||||
|
+++ b/clutter/clutter/x11/clutter-input-device-xi2.h |
||||||
|
@@ -53,6 +53,15 @@ ClutterInputDeviceTool * clutter_input_device_xi2_get_current_tool (ClutterInput |
||||||
|
void clutter_input_device_xi2_ensure_wacom_info (ClutterInputDevice *device, |
||||||
|
WacomDeviceDatabase *wacom_db); |
||||||
|
|
||||||
|
+guint clutter_input_device_xi2_get_pad_group_mode (ClutterInputDevice *device, |
||||||
|
+ guint group); |
||||||
|
+ |
||||||
|
+void clutter_input_device_xi2_update_pad_state (ClutterInputDevice *device, |
||||||
|
+ guint button, |
||||||
|
+ guint state, |
||||||
|
+ guint *group, |
||||||
|
+ guint *mode); |
||||||
|
+ |
||||||
|
#endif |
||||||
|
|
||||||
|
G_END_DECLS |
||||||
|
-- |
||||||
|
1.8.3.1 |
||||||
|
|
@ -0,0 +1,43 @@ |
|||||||
|
From 887537360c3c3b0ae5d0ef0222fad4d0a3bc41c9 Mon Sep 17 00:00:00 2001 |
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org> |
||||||
|
Date: Thu, 21 Jul 2016 15:43:12 +0200 |
||||||
|
Subject: [PATCH 5/8] events: Don't move (sloppy) focus while buttons are |
||||||
|
pressed |
||||||
|
|
||||||
|
(https://bugzilla.redhat.com/show_bug.cgi?id=1358535) |
||||||
|
--- |
||||||
|
src/x11/events.c | 11 +++++++++++ |
||||||
|
1 file changed, 11 insertions(+) |
||||||
|
|
||||||
|
diff --git a/src/x11/events.c b/src/x11/events.c |
||||||
|
index 49f2569f3..ecb4de53d 100644 |
||||||
|
--- a/src/x11/events.c |
||||||
|
+++ b/src/x11/events.c |
||||||
|
@@ -830,6 +830,16 @@ crossing_serial_is_ignored (MetaDisplay *display, |
||||||
|
return FALSE; |
||||||
|
} |
||||||
|
|
||||||
|
+static gboolean |
||||||
|
+event_has_button_mask (XIEnterEvent *enter_event) |
||||||
|
+{ |
||||||
|
+ int i; |
||||||
|
+ for (i = 0; i < enter_event->buttons.mask_len; i++) |
||||||
|
+ if (enter_event->buttons.mask[i] != '\0') |
||||||
|
+ return TRUE; |
||||||
|
+ return FALSE; |
||||||
|
+} |
||||||
|
+ |
||||||
|
static gboolean |
||||||
|
handle_input_xevent (MetaDisplay *display, |
||||||
|
XIEvent *input_event, |
||||||
|
@@ -871,6 +881,7 @@ handle_input_xevent (MetaDisplay *display, |
||||||
|
* avoid races. |
||||||
|
*/ |
||||||
|
if (window && !crossing_serial_is_ignored (display, serial) && |
||||||
|
+ !event_has_button_mask (enter_event) && |
||||||
|
enter_event->mode != XINotifyGrab && |
||||||
|
enter_event->mode != XINotifyUngrab && |
||||||
|
enter_event->detail != XINotifyInferior && |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,132 @@ |
|||||||
|
From 5e3a6efd0e2bbea040e203b996e7d00ab3431cfa Mon Sep 17 00:00:00 2001 |
||||||
|
From: Ray Strode <rstrode@redhat.com> |
||||||
|
Date: Tue, 13 Feb 2018 09:44:50 -0500 |
||||||
|
Subject: [PATCH] main: be more aggressive in assuming X11 backend |
||||||
|
|
||||||
|
If the session is started by vncserver right now, the |
||||||
|
XDG_SESSION_TYPE won't be X11. Ideally that would be |
||||||
|
fixed, but for backward compatibility we should default |
||||||
|
to X11 if the session type isn't set to wayland explicitly. |
||||||
|
--- |
||||||
|
src/core/main.c | 8 +++----- |
||||||
|
1 file changed, 3 insertions(+), 5 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/core/main.c b/src/core/main.c |
||||||
|
index 079f6a9ef..8e8bc3f77 100644 |
||||||
|
--- a/src/core/main.c |
||||||
|
+++ b/src/core/main.c |
||||||
|
@@ -304,108 +304,106 @@ meta_finalize (void) |
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND |
||||||
|
if (meta_is_wayland_compositor ()) |
||||||
|
meta_wayland_finalize (); |
||||||
|
#endif |
||||||
|
} |
||||||
|
|
||||||
|
static gboolean |
||||||
|
on_sigterm (gpointer user_data) |
||||||
|
{ |
||||||
|
meta_quit (EXIT_SUCCESS); |
||||||
|
|
||||||
|
return G_SOURCE_REMOVE; |
||||||
|
} |
||||||
|
|
||||||
|
#if defined(HAVE_WAYLAND) && defined(HAVE_NATIVE_BACKEND) |
||||||
|
static gboolean |
||||||
|
session_type_is_supported (const char *session_type) |
||||||
|
{ |
||||||
|
return (g_strcmp0 (session_type, "x11") == 0) || |
||||||
|
(g_strcmp0 (session_type, "wayland") == 0); |
||||||
|
} |
||||||
|
|
||||||
|
static char * |
||||||
|
find_session_type (void) |
||||||
|
{ |
||||||
|
char **sessions = NULL; |
||||||
|
char *session_id; |
||||||
|
char *session_type; |
||||||
|
const char *session_type_env; |
||||||
|
- gboolean is_tty = FALSE; |
||||||
|
int ret, i; |
||||||
|
|
||||||
|
ret = sd_pid_get_session (0, &session_id); |
||||||
|
if (ret == 0 && session_id != NULL) |
||||||
|
{ |
||||||
|
ret = sd_session_get_type (session_id, &session_type); |
||||||
|
free (session_id); |
||||||
|
|
||||||
|
if (ret == 0) |
||||||
|
{ |
||||||
|
if (session_type_is_supported (session_type)) |
||||||
|
goto out; |
||||||
|
- else |
||||||
|
- is_tty = g_strcmp0 (session_type, "tty") == 0; |
||||||
|
+ |
||||||
|
free (session_type); |
||||||
|
} |
||||||
|
} |
||||||
|
else if (sd_uid_get_sessions (getuid (), 1, &sessions) > 0) |
||||||
|
{ |
||||||
|
for (i = 0; sessions[i] != NULL; i++) |
||||||
|
{ |
||||||
|
ret = sd_session_get_type (sessions[i], &session_type); |
||||||
|
|
||||||
|
if (ret < 0) |
||||||
|
continue; |
||||||
|
|
||||||
|
if (session_type_is_supported (session_type)) |
||||||
|
{ |
||||||
|
g_strfreev (sessions); |
||||||
|
goto out; |
||||||
|
} |
||||||
|
|
||||||
|
free (session_type); |
||||||
|
} |
||||||
|
} |
||||||
|
g_strfreev (sessions); |
||||||
|
|
||||||
|
session_type_env = g_getenv ("XDG_SESSION_TYPE"); |
||||||
|
if (session_type_is_supported (session_type_env)) |
||||||
|
{ |
||||||
|
/* The string should be freeable */ |
||||||
|
session_type = strdup (session_type_env); |
||||||
|
goto out; |
||||||
|
} |
||||||
|
|
||||||
|
- /* Legacy support for starting through xinit */ |
||||||
|
- if (is_tty && (g_getenv ("MUTTER_DISPLAY") || g_getenv ("DISPLAY"))) |
||||||
|
+ /* Legacy support for starting through xinit or vncserver */ |
||||||
|
+ if (g_getenv ("MUTTER_DISPLAY") || g_getenv ("DISPLAY")) |
||||||
|
{ |
||||||
|
session_type = strdup ("x11"); |
||||||
|
goto out; |
||||||
|
} |
||||||
|
|
||||||
|
meta_warning ("Unsupported session type\n"); |
||||||
|
meta_exit (META_EXIT_ERROR); |
||||||
|
|
||||||
|
out: |
||||||
|
return session_type; |
||||||
|
} |
||||||
|
|
||||||
|
static gboolean |
||||||
|
check_for_wayland_session_type (void) |
||||||
|
{ |
||||||
|
char *session_type; |
||||||
|
gboolean is_wayland; |
||||||
|
|
||||||
|
session_type = find_session_type (); |
||||||
|
is_wayland = g_strcmp0 (session_type, "wayland") == 0; |
||||||
|
free (session_type); |
||||||
|
|
||||||
|
return is_wayland; |
||||||
|
} |
||||||
|
#endif |
||||||
|
|
||||||
|
/* |
||||||
|
* Determine the compositor configuration, i.e. whether to run as a Wayland |
||||||
|
* compositor, as well as what backend to use. |
||||||
|
* |
||||||
|
-- |
||||||
|
2.14.3 |
||||||
|
|
@ -0,0 +1,145 @@ |
|||||||
|
From 679644180338527648d7856640c2021b4f4daf30 Mon Sep 17 00:00:00 2001 |
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org> |
||||||
|
Date: Thu, 28 Jan 2016 15:26:33 +0100 |
||||||
|
Subject: [PATCH] monitor-manager: Consider external layout before default |
||||||
|
linear config |
||||||
|
|
||||||
|
In case of no existing configuration, we use a default layout of |
||||||
|
aligning attached displays horizontally. This sidesteps any layout |
||||||
|
configuration that is done externally, for instance via xorg.conf, |
||||||
|
which is not desirable. Instead, base the initial configuration on |
||||||
|
the existing layout if it passes some sanity checks before falling |
||||||
|
back to the default linear config. |
||||||
|
--- |
||||||
|
src/backends/meta-monitor-config-manager.c | 71 ++++++++++++++++++++++++++++++ |
||||||
|
src/backends/meta-monitor-config-manager.h | 1 + |
||||||
|
src/backends/meta-monitor-manager.c | 19 ++++++++ |
||||||
|
3 files changed, 91 insertions(+) |
||||||
|
|
||||||
|
diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c |
||||||
|
index cdc9fb775..2fe620767 100644 |
||||||
|
--- a/src/backends/meta-monitor-config-manager.c |
||||||
|
+++ b/src/backends/meta-monitor-config-manager.c |
||||||
|
@@ -558,6 +558,77 @@ create_preferred_logical_monitor_config (MetaMonitorManager *monitor_ma |
||||||
|
return logical_monitor_config; |
||||||
|
} |
||||||
|
|
||||||
|
+static MetaLogicalMonitorConfig * |
||||||
|
+create_logical_monitor_config_from_output (MetaMonitorManager *monitor_manager, |
||||||
|
+ MetaMonitor *monitor, |
||||||
|
+ MetaLogicalMonitorConfig *primary_logical_monitor_config, |
||||||
|
+ MetaLogicalMonitorLayoutMode layout_mode) |
||||||
|
+{ |
||||||
|
+ MetaOutput *output; |
||||||
|
+ |
||||||
|
+ output = meta_monitor_get_main_output (monitor); |
||||||
|
+ return create_preferred_logical_monitor_config (monitor_manager, |
||||||
|
+ monitor, |
||||||
|
+ output->crtc->rect.x, |
||||||
|
+ output->crtc->rect.y, |
||||||
|
+ primary_logical_monitor_config, |
||||||
|
+ layout_mode); |
||||||
|
+} |
||||||
|
+ |
||||||
|
+MetaMonitorsConfig * |
||||||
|
+meta_monitor_config_manager_create_current (MetaMonitorConfigManager *config_manager) |
||||||
|
+{ |
||||||
|
+ MetaMonitorManager *monitor_manager = config_manager->monitor_manager; |
||||||
|
+ GList *logical_monitor_configs; |
||||||
|
+ MetaMonitor *primary_monitor; |
||||||
|
+ MetaLogicalMonitorLayoutMode layout_mode; |
||||||
|
+ MetaLogicalMonitorConfig *primary_logical_monitor_config; |
||||||
|
+ GList *monitors; |
||||||
|
+ GList *l; |
||||||
|
+ |
||||||
|
+ if (meta_monitor_config_store_get_config_count (config_manager->config_store) > 0) |
||||||
|
+ return NULL; |
||||||
|
+ |
||||||
|
+ primary_monitor = find_primary_monitor (monitor_manager); |
||||||
|
+ if (!primary_monitor || !meta_monitor_is_active (primary_monitor)) |
||||||
|
+ return NULL; |
||||||
|
+ |
||||||
|
+ layout_mode = meta_monitor_manager_get_default_layout_mode (monitor_manager); |
||||||
|
+ |
||||||
|
+ primary_logical_monitor_config = |
||||||
|
+ create_logical_monitor_config_from_output (monitor_manager, |
||||||
|
+ primary_monitor, |
||||||
|
+ NULL, |
||||||
|
+ layout_mode); |
||||||
|
+ |
||||||
|
+ primary_logical_monitor_config->is_primary = TRUE; |
||||||
|
+ logical_monitor_configs = g_list_append (NULL, |
||||||
|
+ primary_logical_monitor_config); |
||||||
|
+ |
||||||
|
+ monitors = meta_monitor_manager_get_monitors (monitor_manager); |
||||||
|
+ for (l = monitors; l; l = l->next) |
||||||
|
+ { |
||||||
|
+ MetaMonitor *monitor = l->data; |
||||||
|
+ MetaLogicalMonitorConfig *logical_monitor_config; |
||||||
|
+ |
||||||
|
+ if (monitor == primary_monitor) |
||||||
|
+ continue; |
||||||
|
+ |
||||||
|
+ if (!meta_monitor_is_active (monitor)) |
||||||
|
+ continue; |
||||||
|
+ |
||||||
|
+ logical_monitor_config = |
||||||
|
+ create_logical_monitor_config_from_output (monitor_manager, |
||||||
|
+ monitor, |
||||||
|
+ primary_logical_monitor_config, |
||||||
|
+ layout_mode); |
||||||
|
+ |
||||||
|
+ logical_monitor_configs = g_list_append (logical_monitor_configs, |
||||||
|
+ logical_monitor_config); |
||||||
|
+ } |
||||||
|
+ return NULL; |
||||||
|
+} |
||||||
|
+ |
||||||
|
MetaMonitorsConfig * |
||||||
|
meta_monitor_config_manager_create_linear (MetaMonitorConfigManager *config_manager) |
||||||
|
{ |
||||||
|
diff --git a/src/backends/meta-monitor-config-manager.h b/src/backends/meta-monitor-config-manager.h |
||||||
|
index b99cdaba2..516909dd7 100644 |
||||||
|
--- a/src/backends/meta-monitor-config-manager.h |
||||||
|
+++ b/src/backends/meta-monitor-config-manager.h |
||||||
|
@@ -87,6 +87,7 @@ gboolean meta_monitor_config_manager_assign (MetaMonitorManager *manager, |
||||||
|
|
||||||
|
MetaMonitorsConfig * meta_monitor_config_manager_get_stored (MetaMonitorConfigManager *config_manager); |
||||||
|
|
||||||
|
+MetaMonitorsConfig * meta_monitor_config_manager_create_current (MetaMonitorConfigManager *config_manager); |
||||||
|
MetaMonitorsConfig * meta_monitor_config_manager_create_linear (MetaMonitorConfigManager *config_manager); |
||||||
|
|
||||||
|
MetaMonitorsConfig * meta_monitor_config_manager_create_fallback (MetaMonitorConfigManager *config_manager); |
||||||
|
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c |
||||||
|
index f2ad3f3d0..8b548fd68 100644 |
||||||
|
--- a/src/backends/meta-monitor-manager.c |
||||||
|
+++ b/src/backends/meta-monitor-manager.c |
||||||
|
@@ -553,6 +553,25 @@ meta_monitor_manager_ensure_configured (MetaMonitorManager *manager) |
||||||
|
g_clear_object (&config); |
||||||
|
} |
||||||
|
|
||||||
|
+ config = meta_monitor_config_manager_create_current (manager->config_manager); |
||||||
|
+ if (config) |
||||||
|
+ { |
||||||
|
+ if (!meta_monitor_manager_apply_monitors_config (manager, |
||||||
|
+ config, |
||||||
|
+ method, |
||||||
|
+ &error)) |
||||||
|
+ { |
||||||
|
+ g_clear_object (&config); |
||||||
|
+ g_warning ("Failed to use current monitor configuration: %s", |
||||||
|
+ error->message); |
||||||
|
+ g_clear_error (&error); |
||||||
|
+ } |
||||||
|
+ else |
||||||
|
+ { |
||||||
|
+ goto done; |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ |
||||||
|
config = meta_monitor_config_manager_create_linear (manager->config_manager); |
||||||
|
if (config) |
||||||
|
{ |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,259 @@ |
|||||||
|
From ed7cad0561b79e68ddd91f0e12042087199676ea Mon Sep 17 00:00:00 2001 |
||||||
|
From: Rui Matos <tiagomatos@gmail.com> |
||||||
|
Date: Sun, 25 Oct 2015 16:14:58 +0100 |
||||||
|
Subject: [PATCH 3/8] monitor-manager-xrandr: Force an update when resuming |
||||||
|
from suspend |
||||||
|
|
||||||
|
The stack below us isn't as reliable as we'd like and in some cases |
||||||
|
doesn't generate RRScreenChangeNotify events when e.g. resuming a |
||||||
|
laptop on a dock, meaning that we'd miss newly attached outputs. |
||||||
|
--- |
||||||
|
src/backends/x11/meta-monitor-manager-xrandr.c | 188 ++++++++++++++++++------- |
||||||
|
1 file changed, 137 insertions(+), 51 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c |
||||||
|
index 8d1bdfb69..d451fcccc 100644 |
||||||
|
--- a/src/backends/x11/meta-monitor-manager-xrandr.c |
||||||
|
+++ b/src/backends/x11/meta-monitor-manager-xrandr.c |
||||||
|
@@ -61,6 +61,11 @@ struct _MetaMonitorManagerXrandr |
||||||
|
XRRScreenResources *resources; |
||||||
|
int rr_event_base; |
||||||
|
int rr_error_base; |
||||||
|
+ |
||||||
|
+ guint logind_watch_id; |
||||||
|
+ guint logind_signal_sub_id; |
||||||
|
+ |
||||||
|
+ gboolean need_hardware_poll; |
||||||
|
gboolean has_randr15; |
||||||
|
|
||||||
|
xcb_timestamp_t last_xrandr_set_timestamp; |
||||||
|
@@ -787,8 +792,15 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager) |
||||||
|
manager->screen_width = WidthOfScreen (screen); |
||||||
|
manager->screen_height = HeightOfScreen (screen); |
||||||
|
|
||||||
|
- resources = XRRGetScreenResourcesCurrent (manager_xrandr->xdisplay, |
||||||
|
- DefaultRootWindow (manager_xrandr->xdisplay)); |
||||||
|
+ if (manager_xrandr->need_hardware_poll) |
||||||
|
+ { |
||||||
|
+ resources = XRRGetScreenResources (manager_xrandr->xdisplay, |
||||||
|
+ DefaultRootWindow (manager_xrandr->xdisplay)); |
||||||
|
+ manager_xrandr->need_hardware_poll = FALSE; |
||||||
|
+ } |
||||||
|
+ else |
||||||
|
+ resources = XRRGetScreenResourcesCurrent (manager_xrandr->xdisplay, |
||||||
|
+ DefaultRootWindow (manager_xrandr->xdisplay)); |
||||||
|
if (!resources) |
||||||
|
return; |
||||||
|
|
||||||
|
@@ -1910,6 +1922,115 @@ meta_monitor_manager_xrandr_get_default_layout_mode (MetaMonitorManager *manager |
||||||
|
return META_LOGICAL_MONITOR_LAYOUT_MODE_PHYSICAL; |
||||||
|
} |
||||||
|
|
||||||
|
+static gboolean |
||||||
|
+is_xvnc (MetaMonitorManager *manager) |
||||||
|
+{ |
||||||
|
+ unsigned int i; |
||||||
|
+ |
||||||
|
+ for (i = 0; i < manager->n_outputs; ++i) |
||||||
|
+ if (g_str_has_prefix (manager->outputs[i].name, "VNC-")) |
||||||
|
+ return TRUE; |
||||||
|
+ |
||||||
|
+ return FALSE; |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static void |
||||||
|
+meta_monitor_manager_xrandr_update (MetaMonitorManagerXrandr *manager_xrandr) |
||||||
|
+{ |
||||||
|
+ MetaMonitorManager *manager = META_MONITOR_MANAGER (manager_xrandr); |
||||||
|
+ gboolean is_hotplug; |
||||||
|
+ gboolean is_our_configuration; |
||||||
|
+ unsigned int timestamp; |
||||||
|
+ |
||||||
|
+ meta_monitor_manager_read_current_state (manager); |
||||||
|
+ |
||||||
|
+ timestamp = manager_xrandr->resources->timestamp; |
||||||
|
+ if (is_xvnc (manager)) |
||||||
|
+ timestamp += 100; |
||||||
|
+ |
||||||
|
+ is_hotplug = (timestamp < manager_xrandr->resources->configTimestamp); |
||||||
|
+ is_our_configuration = (manager_xrandr->resources->timestamp == |
||||||
|
+ manager_xrandr->last_xrandr_set_timestamp); |
||||||
|
+ if (is_hotplug) |
||||||
|
+ { |
||||||
|
+ meta_monitor_manager_on_hotplug (manager); |
||||||
|
+ } |
||||||
|
+ else |
||||||
|
+ { |
||||||
|
+ MetaMonitorsConfig *config; |
||||||
|
+ |
||||||
|
+ if (is_our_configuration) |
||||||
|
+ { |
||||||
|
+ MetaMonitorConfigManager *config_manager = |
||||||
|
+ meta_monitor_manager_get_config_manager (manager); |
||||||
|
+ |
||||||
|
+ config = meta_monitor_config_manager_get_current (config_manager); |
||||||
|
+ } |
||||||
|
+ else |
||||||
|
+ { |
||||||
|
+ config = NULL; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ meta_monitor_manager_rebuild_derived (manager, config); |
||||||
|
+ } |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static void |
||||||
|
+logind_signal_handler (GDBusConnection *connection, |
||||||
|
+ const gchar *sender_name, |
||||||
|
+ const gchar *object_path, |
||||||
|
+ const gchar *interface_name, |
||||||
|
+ const gchar *signal_name, |
||||||
|
+ GVariant *parameters, |
||||||
|
+ gpointer user_data) |
||||||
|
+{ |
||||||
|
+ MetaMonitorManagerXrandr *manager_xrandr = user_data; |
||||||
|
+ gboolean suspending; |
||||||
|
+ |
||||||
|
+ if (!g_str_equal (signal_name, "PrepareForSleep")) |
||||||
|
+ return; |
||||||
|
+ |
||||||
|
+ g_variant_get (parameters, "(b)", &suspending); |
||||||
|
+ if (!suspending) |
||||||
|
+ { |
||||||
|
+ manager_xrandr->need_hardware_poll = TRUE; |
||||||
|
+ meta_monitor_manager_xrandr_update (manager_xrandr); |
||||||
|
+ } |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static void |
||||||
|
+logind_appeared (GDBusConnection *connection, |
||||||
|
+ const gchar *name, |
||||||
|
+ const gchar *name_owner, |
||||||
|
+ gpointer user_data) |
||||||
|
+{ |
||||||
|
+ MetaMonitorManagerXrandr *manager_xrandr = user_data; |
||||||
|
+ |
||||||
|
+ manager_xrandr->logind_signal_sub_id = g_dbus_connection_signal_subscribe (connection, |
||||||
|
+ "org.freedesktop.login1", |
||||||
|
+ "org.freedesktop.login1.Manager", |
||||||
|
+ "PrepareForSleep", |
||||||
|
+ "/org/freedesktop/login1", |
||||||
|
+ NULL, |
||||||
|
+ G_DBUS_SIGNAL_FLAGS_NONE, |
||||||
|
+ logind_signal_handler, |
||||||
|
+ manager_xrandr, |
||||||
|
+ NULL); |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static void |
||||||
|
+logind_vanished (GDBusConnection *connection, |
||||||
|
+ const gchar *name, |
||||||
|
+ gpointer user_data) |
||||||
|
+{ |
||||||
|
+ MetaMonitorManagerXrandr *manager_xrandr = user_data; |
||||||
|
+ |
||||||
|
+ if (connection && manager_xrandr->logind_signal_sub_id > 0) |
||||||
|
+ g_dbus_connection_signal_unsubscribe (connection, manager_xrandr->logind_signal_sub_id); |
||||||
|
+ |
||||||
|
+ manager_xrandr->logind_signal_sub_id = 0; |
||||||
|
+} |
||||||
|
+ |
||||||
|
static void |
||||||
|
meta_monitor_manager_xrandr_init (MetaMonitorManagerXrandr *manager_xrandr) |
||||||
|
{ |
||||||
|
@@ -1948,6 +2069,15 @@ meta_monitor_manager_xrandr_init (MetaMonitorManagerXrandr *manager_xrandr) |
||||||
|
meta_monitor_manager_xrandr_init_monitors (manager_xrandr); |
||||||
|
#endif |
||||||
|
} |
||||||
|
+ |
||||||
|
+ manager_xrandr->logind_watch_id = g_bus_watch_name (G_BUS_TYPE_SYSTEM, |
||||||
|
+ "org.freedesktop.login1", |
||||||
|
+ G_BUS_NAME_WATCHER_FLAGS_NONE, |
||||||
|
+ logind_appeared, |
||||||
|
+ logind_vanished, |
||||||
|
+ manager_xrandr, |
||||||
|
+ NULL); |
||||||
|
+ manager_xrandr->need_hardware_poll = TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
static void |
||||||
|
@@ -1962,6 +2092,10 @@ meta_monitor_manager_xrandr_finalize (GObject *object) |
||||||
|
g_hash_table_destroy (manager_xrandr->tiled_monitor_atoms); |
||||||
|
g_free (manager_xrandr->supported_scales); |
||||||
|
|
||||||
|
+ if (manager_xrandr->logind_watch_id > 0) |
||||||
|
+ g_bus_unwatch_name (manager_xrandr->logind_watch_id); |
||||||
|
+ manager_xrandr->logind_watch_id = 0; |
||||||
|
+ |
||||||
|
G_OBJECT_CLASS (meta_monitor_manager_xrandr_parent_class)->finalize (object); |
||||||
|
} |
||||||
|
|
||||||
|
@@ -1996,64 +2130,16 @@ meta_monitor_manager_xrandr_class_init (MetaMonitorManagerXrandrClass *klass) |
||||||
|
g_quark_from_static_string ("-meta-monitor-xrandr-data"); |
||||||
|
} |
||||||
|
|
||||||
|
-static gboolean |
||||||
|
-is_xvnc (MetaMonitorManager *manager) |
||||||
|
-{ |
||||||
|
- unsigned int i; |
||||||
|
- |
||||||
|
- for (i = 0; i < manager->n_outputs; ++i) |
||||||
|
- if (g_str_has_prefix (manager->outputs[i].name, "VNC-")) |
||||||
|
- return TRUE; |
||||||
|
- |
||||||
|
- return FALSE; |
||||||
|
-} |
||||||
|
- |
||||||
|
gboolean |
||||||
|
meta_monitor_manager_xrandr_handle_xevent (MetaMonitorManagerXrandr *manager_xrandr, |
||||||
|
XEvent *event) |
||||||
|
{ |
||||||
|
- MetaMonitorManager *manager = META_MONITOR_MANAGER (manager_xrandr); |
||||||
|
- gboolean is_hotplug; |
||||||
|
- gboolean is_our_configuration; |
||||||
|
- unsigned int timestamp; |
||||||
|
- |
||||||
|
if ((event->type - manager_xrandr->rr_event_base) != RRScreenChangeNotify) |
||||||
|
return FALSE; |
||||||
|
|
||||||
|
XRRUpdateConfiguration (event); |
||||||
|
|
||||||
|
- meta_monitor_manager_read_current_state (manager); |
||||||
|
- |
||||||
|
- |
||||||
|
- timestamp = manager_xrandr->resources->timestamp; |
||||||
|
- if (is_xvnc (manager)) |
||||||
|
- timestamp += 100; |
||||||
|
- |
||||||
|
- is_hotplug = (timestamp < manager_xrandr->resources->configTimestamp); |
||||||
|
- is_our_configuration = (manager_xrandr->resources->timestamp == |
||||||
|
- manager_xrandr->last_xrandr_set_timestamp); |
||||||
|
- if (is_hotplug) |
||||||
|
- { |
||||||
|
- meta_monitor_manager_on_hotplug (manager); |
||||||
|
- } |
||||||
|
- else |
||||||
|
- { |
||||||
|
- MetaMonitorsConfig *config; |
||||||
|
- |
||||||
|
- if (is_our_configuration) |
||||||
|
- { |
||||||
|
- MetaMonitorConfigManager *config_manager = |
||||||
|
- meta_monitor_manager_get_config_manager (manager); |
||||||
|
- |
||||||
|
- config = meta_monitor_config_manager_get_current (config_manager); |
||||||
|
- } |
||||||
|
- else |
||||||
|
- { |
||||||
|
- config = NULL; |
||||||
|
- } |
||||||
|
- |
||||||
|
- meta_monitor_manager_xrandr_rebuild_derived (manager, config); |
||||||
|
- } |
||||||
|
+ meta_monitor_manager_xrandr_update (manager_xrandr); |
||||||
|
|
||||||
|
return TRUE; |
||||||
|
} |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,63 @@ |
|||||||
|
From 73cae2c78af65cdfd6fa0c8257b4d3ae593f9f74 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Rui Matos <tiagomatos@gmail.com> |
||||||
|
Date: Tue, 6 Oct 2015 21:16:18 +0200 |
||||||
|
Subject: [PATCH 2/8] monitor-manager-xrandr: Work around spurious hotplugs on |
||||||
|
Xvnc |
||||||
|
|
||||||
|
Xvnc turns its outputs off/on on every mode set which makes us believe |
||||||
|
there was an hotplug when there actually wasn't. Work around this by |
||||||
|
requiring new randr configuration timestamps to be ahead of the last |
||||||
|
set timestamp by at least 100 ms for us to consider them an actual |
||||||
|
hotplug. |
||||||
|
--- |
||||||
|
src/backends/x11/meta-monitor-manager-xrandr.c | 20 ++++++++++++++++++-- |
||||||
|
1 file changed, 18 insertions(+), 2 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c |
||||||
|
index c369d4960..8d1bdfb69 100644 |
||||||
|
--- a/src/backends/x11/meta-monitor-manager-xrandr.c |
||||||
|
+++ b/src/backends/x11/meta-monitor-manager-xrandr.c |
||||||
|
@@ -1909,6 +1909,18 @@ meta_monitor_manager_xrandr_class_init (MetaMonitorManagerXrandrClass *klass) |
||||||
|
g_quark_from_static_string ("-meta-monitor-xrandr-data"); |
||||||
|
} |
||||||
|
|
||||||
|
+static gboolean |
||||||
|
+is_xvnc (MetaMonitorManager *manager) |
||||||
|
+{ |
||||||
|
+ unsigned int i; |
||||||
|
+ |
||||||
|
+ for (i = 0; i < manager->n_outputs; ++i) |
||||||
|
+ if (g_str_has_prefix (manager->outputs[i].name, "VNC-")) |
||||||
|
+ return TRUE; |
||||||
|
+ |
||||||
|
+ return FALSE; |
||||||
|
+} |
||||||
|
+ |
||||||
|
gboolean |
||||||
|
meta_monitor_manager_xrandr_handle_xevent (MetaMonitorManagerXrandr *manager_xrandr, |
||||||
|
XEvent *event) |
||||||
|
@@ -1916,6 +1928,7 @@ meta_monitor_manager_xrandr_handle_xevent (MetaMonitorManagerXrandr *manager_xra |
||||||
|
MetaMonitorManager *manager = META_MONITOR_MANAGER (manager_xrandr); |
||||||
|
gboolean is_hotplug; |
||||||
|
gboolean is_our_configuration; |
||||||
|
+ unsigned int timestamp; |
||||||
|
|
||||||
|
if ((event->type - manager_xrandr->rr_event_base) != RRScreenChangeNotify) |
||||||
|
return FALSE; |
||||||
|
@@ -1925,8 +1938,11 @@ meta_monitor_manager_xrandr_handle_xevent (MetaMonitorManagerXrandr *manager_xra |
||||||
|
meta_monitor_manager_read_current_state (manager); |
||||||
|
|
||||||
|
|
||||||
|
- is_hotplug = (manager_xrandr->resources->timestamp < |
||||||
|
- manager_xrandr->resources->configTimestamp); |
||||||
|
+ timestamp = manager_xrandr->resources->timestamp; |
||||||
|
+ if (is_xvnc (manager)) |
||||||
|
+ timestamp += 100; |
||||||
|
+ |
||||||
|
+ is_hotplug = (timestamp < manager_xrandr->resources->configTimestamp); |
||||||
|
is_our_configuration = (manager_xrandr->resources->timestamp == |
||||||
|
manager_xrandr->last_xrandr_set_timestamp); |
||||||
|
if (is_hotplug) |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,44 @@ |
|||||||
|
From 4b2d21ff03ed389138fcb9bca778aec02bafcadb Mon Sep 17 00:00:00 2001 |
||||||
|
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com> |
||||||
|
Date: Fri, 2 Feb 2018 14:34:50 +0800 |
||||||
|
Subject: [PATCH] renderer/x11: Enable GPU memory purge error extension if |
||||||
|
available |
||||||
|
|
||||||
|
This was done by the clutter X11 backend before prior to introducing |
||||||
|
MetaRenderer, but during that work, enabling of said extension was lost. |
||||||
|
Let's turn it on again. |
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=739178 |
||||||
|
--- |
||||||
|
src/backends/x11/meta-backend-x11.c | 2 -- |
||||||
|
src/backends/x11/meta-renderer-x11.c | 1 + |
||||||
|
2 files changed, 1 insertion(+), 2 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/backends/x11/meta-backend-x11.c b/src/backends/x11/meta-backend-x11.c |
||||||
|
index 233532435..c7602cc70 100644 |
||||||
|
--- a/src/backends/x11/meta-backend-x11.c |
||||||
|
+++ b/src/backends/x11/meta-backend-x11.c |
||||||
|
@@ -705,8 +705,6 @@ meta_backend_x11_init (MetaBackendX11 *x11) |
||||||
|
*/ |
||||||
|
XInitThreads(); |
||||||
|
|
||||||
|
- clutter_x11_request_reset_on_video_memory_purge (); |
||||||
|
- |
||||||
|
/* We do X11 event retrieval ourselves */ |
||||||
|
clutter_x11_disable_event_retrieval (); |
||||||
|
} |
||||||
|
diff --git a/src/backends/x11/meta-renderer-x11.c b/src/backends/x11/meta-renderer-x11.c |
||||||
|
index 90924e038..003211d85 100644 |
||||||
|
--- a/src/backends/x11/meta-renderer-x11.c |
||||||
|
+++ b/src/backends/x11/meta-renderer-x11.c |
||||||
|
@@ -73,6 +73,7 @@ meta_renderer_x11_create_cogl_renderer (MetaRenderer *renderer) |
||||||
|
cogl_renderer = cogl_renderer_new (); |
||||||
|
cogl_renderer_set_custom_winsys (cogl_renderer, get_x11_cogl_winsys_vtable); |
||||||
|
cogl_xlib_renderer_set_foreign_display (cogl_renderer, xdisplay); |
||||||
|
+ cogl_xlib_renderer_request_reset_on_video_memory_purge (cogl_renderer, TRUE); |
||||||
|
|
||||||
|
/* Set up things so that if the INTEL_swap_event extension is not present, |
||||||
|
* but the driver is known to have good thread support, we use an extra |
||||||
|
-- |
||||||
|
2.14.3 |
||||||
|
|
@ -0,0 +1,898 @@ |
|||||||
|
From 6be34265a67e9ca1e30fe42993d5743b01d3b010 Mon Sep 17 00:00:00 2001 |
||||||
|
From: rpm-build <rpm-build> |
||||||
|
Date: Fri, 15 Sep 2017 08:55:44 +0100 |
||||||
|
Subject: [PATCH] rhel7: Fix build for el7 |
||||||
|
|
||||||
|
--- |
||||||
|
.../evdev/clutter-virtual-input-device-evdev.c | 1 + |
||||||
|
clutter/clutter/evdev/linux/input-event-codes.h | 838 +++++++++++++++++++++ |
||||||
|
src/backends/native/meta-input-settings-native.c | 2 +- |
||||||
|
src/wayland/meta-wayland-tablet-tool.c | 2 +- |
||||||
|
4 files changed, 841 insertions(+), 2 deletions(-) |
||||||
|
create mode 100644 clutter/clutter/evdev/linux/input-event-codes.h |
||||||
|
|
||||||
|
diff --git a/clutter/clutter/evdev/clutter-virtual-input-device-evdev.c b/clutter/clutter/evdev/clutter-virtual-input-device-evdev.c |
||||||
|
index e487708..8443c0a 100644 |
||||||
|
--- a/clutter/clutter/evdev/clutter-virtual-input-device-evdev.c |
||||||
|
+++ b/clutter/clutter/evdev/clutter-virtual-input-device-evdev.c |
||||||
|
@@ -33,6 +33,7 @@ |
||||||
|
#include "evdev/clutter-input-device-evdev.h" |
||||||
|
#include "evdev/clutter-seat-evdev.h" |
||||||
|
#include "evdev/clutter-virtual-input-device-evdev.h" |
||||||
|
+#include "evdev/linux/input-event-codes.h" |
||||||
|
|
||||||
|
enum |
||||||
|
{ |
||||||
|
diff --git a/clutter/clutter/evdev/linux/input-event-codes.h b/clutter/clutter/evdev/linux/input-event-codes.h |
||||||
|
new file mode 100644 |
||||||
|
index 0000000..e2b5c75 |
||||||
|
--- /dev/null |
||||||
|
+++ b/clutter/clutter/evdev/linux/input-event-codes.h |
||||||
|
@@ -0,0 +1,838 @@ |
||||||
|
+/* |
||||||
|
+ * Input event codes |
||||||
|
+ * |
||||||
|
+ * *** IMPORTANT *** |
||||||
|
+ * This file is not only included from C-code but also from devicetree source |
||||||
|
+ * files. As such this file MUST only contain comments and defines. |
||||||
|
+ * |
||||||
|
+ * Copyright (c) 1999-2002 Vojtech Pavlik |
||||||
|
+ * Copyright (c) 2015 Hans de Goede <hdegoede@redhat.com> |
||||||
|
+ * |
||||||
|
+ * This program is free software; you can redistribute it and/or modify it |
||||||
|
+ * under the terms of the GNU General Public License version 2 as published by |
||||||
|
+ * the Free Software Foundation. |
||||||
|
+ */ |
||||||
|
+#ifndef _INPUT_EVENT_CODES_H |
||||||
|
+#define _INPUT_EVENT_CODES_H |
||||||
|
+ |
||||||
|
+/* |
||||||
|
+ * Device properties and quirks |
||||||
|
+ */ |
||||||
|
+ |
||||||
|
+#define INPUT_PROP_POINTER 0x00 /* needs a pointer */ |
||||||
|
+#define INPUT_PROP_DIRECT 0x01 /* direct input devices */ |
||||||
|
+#define INPUT_PROP_BUTTONPAD 0x02 /* has button(s) under pad */ |
||||||
|
+#define INPUT_PROP_SEMI_MT 0x03 /* touch rectangle only */ |
||||||
|
+#define INPUT_PROP_TOPBUTTONPAD 0x04 /* softbuttons at top of pad */ |
||||||
|
+#define INPUT_PROP_POINTING_STICK 0x05 /* is a pointing stick */ |
||||||
|
+#define INPUT_PROP_ACCELEROMETER 0x06 /* has accelerometer */ |
||||||
|
+ |
||||||
|
+#define INPUT_PROP_MAX 0x1f |
||||||
|
+#define INPUT_PROP_CNT (INPUT_PROP_MAX + 1) |
||||||
|
+ |
||||||
|
+/* |
||||||
|
+ * Event types |
||||||
|
+ */ |
||||||
|
+ |
||||||
|
+#define EV_SYN 0x00 |
||||||
|
+#define EV_KEY 0x01 |
||||||
|
+#define EV_REL 0x02 |
||||||
|
+#define EV_ABS 0x03 |
||||||
|
+#define EV_MSC 0x04 |
||||||
|
+#define EV_SW 0x05 |
||||||
|
+#define EV_LED 0x11 |
||||||
|
+#define EV_SND 0x12 |
||||||
|
+#define EV_REP 0x14 |
||||||
|
+#define EV_FF 0x15 |
||||||
|
+#define EV_PWR 0x16 |
||||||
|
+#define EV_FF_STATUS 0x17 |
||||||
|
+#define EV_MAX 0x1f |
||||||
|
+#define EV_CNT (EV_MAX+1) |
||||||
|
+ |
||||||
|
+/* |
||||||
|
+ * Synchronization events. |
||||||
|
+ */ |
||||||
|
+ |
||||||
|
+#define SYN_REPORT 0 |
||||||
|
+#define SYN_CONFIG 1 |
||||||
|
+#define SYN_MT_REPORT 2 |
||||||
|
+#define SYN_DROPPED 3 |
||||||
|
+#define SYN_MAX 0xf |
||||||
|
+#define SYN_CNT (SYN_MAX+1) |
||||||
|
+ |
||||||
|
+/* |
||||||
|
+ * Keys and buttons |
||||||
|
+ * |
||||||
|
+ * Most of the keys/buttons are modeled after USB HUT 1.12 |
||||||
|
+ * (see http://www.usb.org/developers/hidpage). |
||||||
|
+ * Abbreviations in the comments: |
||||||
|
+ * AC - Application Control |
||||||
|
+ * AL - Application Launch Button |
||||||
|
+ * SC - System Control |
||||||
|
+ */ |
||||||
|
+ |
||||||
|
+#define KEY_RESERVED 0 |
||||||
|
+#define KEY_ESC 1 |
||||||
|
+#define KEY_1 2 |
||||||
|
+#define KEY_2 3 |
||||||
|
+#define KEY_3 4 |
||||||
|
+#define KEY_4 5 |
||||||
|
+#define KEY_5 6 |
||||||
|
+#define KEY_6 7 |
||||||
|
+#define KEY_7 8 |
||||||
|
+#define KEY_8 9 |
||||||
|
+#define KEY_9 10 |
||||||
|
+#define KEY_0 11 |
||||||
|
+#define KEY_MINUS 12 |
||||||
|
+#define KEY_EQUAL 13 |
||||||
|
+#define KEY_BACKSPACE 14 |
||||||
|
+#define KEY_TAB 15 |
||||||
|
+#define KEY_Q 16 |
||||||
|
+#define KEY_W 17 |
||||||
|
+#define KEY_E 18 |
||||||
|
+#define KEY_R 19 |
||||||
|
+#define KEY_T 20 |
||||||
|
+#define KEY_Y 21 |
||||||
|
+#define KEY_U 22 |
||||||
|
+#define KEY_I 23 |
||||||
|
+#define KEY_O 24 |
||||||
|
+#define KEY_P 25 |
||||||
|
+#define KEY_LEFTBRACE 26 |
||||||
|
+#define KEY_RIGHTBRACE 27 |
||||||
|
+#define KEY_ENTER 28 |
||||||
|
+#define KEY_LEFTCTRL 29 |
||||||
|
+#define KEY_A 30 |
||||||
|
+#define KEY_S 31 |
||||||
|
+#define KEY_D 32 |
||||||
|
+#define KEY_F 33 |
||||||
|
+#define KEY_G 34 |
||||||
|
+#define KEY_H 35 |
||||||
|
+#define KEY_J 36 |
||||||
|
+#define KEY_K 37 |
||||||
|
+#define KEY_L 38 |
||||||
|
+#define KEY_SEMICOLON 39 |
||||||
|
+#define KEY_APOSTROPHE 40 |
||||||
|
+#define KEY_GRAVE 41 |
||||||
|
+#define KEY_LEFTSHIFT 42 |
||||||
|
+#define KEY_BACKSLASH 43 |
||||||
|
+#define KEY_Z 44 |
||||||
|
+#define KEY_X 45 |
||||||
|
+#define KEY_C 46 |
||||||
|
+#define KEY_V 47 |
||||||
|
+#define KEY_B 48 |
||||||
|
+#define KEY_N 49 |
||||||
|
+#define KEY_M 50 |
||||||
|
+#define KEY_COMMA 51 |
||||||
|
+#define KEY_DOT 52 |
||||||
|
+#define KEY_SLASH 53 |
||||||
|
+#define KEY_RIGHTSHIFT 54 |
||||||
|
+#define KEY_KPASTERISK 55 |
||||||
|
+#define KEY_LEFTALT 56 |
||||||
|
+#define KEY_SPACE 57 |
||||||
|
+#define KEY_CAPSLOCK 58 |
||||||
|
+#define KEY_F1 59 |
||||||
|
+#define KEY_F2 60 |
||||||
|
+#define KEY_F3 61 |
||||||
|
+#define KEY_F4 62 |
||||||
|
+#define KEY_F5 63 |
||||||
|
+#define KEY_F6 64 |
||||||
|
+#define KEY_F7 65 |
||||||
|
+#define KEY_F8 66 |
||||||
|
+#define KEY_F9 67 |
||||||
|
+#define KEY_F10 68 |
||||||
|
+#define KEY_NUMLOCK 69 |
||||||
|
+#define KEY_SCROLLLOCK 70 |
||||||
|
+#define KEY_KP7 71 |
||||||
|
+#define KEY_KP8 72 |
||||||
|
+#define KEY_KP9 73 |
||||||
|
+#define KEY_KPMINUS 74 |
||||||
|
+#define KEY_KP4 75 |
||||||
|
+#define KEY_KP5 76 |
||||||
|
+#define KEY_KP6 77 |
||||||
|
+#define KEY_KPPLUS 78 |
||||||
|
+#define KEY_KP1 79 |
||||||
|
+#define KEY_KP2 80 |
||||||
|
+#define KEY_KP3 81 |
||||||
|
+#define KEY_KP0 82 |
||||||
|
+#define KEY_KPDOT 83 |
||||||
|
+ |
||||||
|
+#define KEY_ZENKAKUHANKAKU 85 |
||||||
|
+#define KEY_102ND 86 |
||||||
|
+#define KEY_F11 87 |
||||||
|
+#define KEY_F12 88 |
||||||
|
+#define KEY_RO 89 |
||||||
|
+#define KEY_KATAKANA 90 |
||||||
|
+#define KEY_HIRAGANA 91 |
||||||
|
+#define KEY_HENKAN 92 |
||||||
|
+#define KEY_KATAKANAHIRAGANA 93 |
||||||
|
+#define KEY_MUHENKAN 94 |
||||||
|
+#define KEY_KPJPCOMMA 95 |
||||||
|
+#define KEY_KPENTER 96 |
||||||
|
+#define KEY_RIGHTCTRL 97 |
||||||
|
+#define KEY_KPSLASH 98 |
||||||
|
+#define KEY_SYSRQ 99 |
||||||
|
+#define KEY_RIGHTALT 100 |
||||||
|
+#define KEY_LINEFEED 101 |
||||||
|
+#define KEY_HOME 102 |
||||||
|
+#define KEY_UP 103 |
||||||
|
+#define KEY_PAGEUP 104 |
||||||
|
+#define KEY_LEFT 105 |
||||||
|
+#define KEY_RIGHT 106 |
||||||
|
+#define KEY_END 107 |
||||||
|
+#define KEY_DOWN 108 |
||||||
|
+#define KEY_PAGEDOWN 109 |
||||||
|
+#define KEY_INSERT 110 |
||||||
|
+#define KEY_DELETE 111 |
||||||
|
+#define KEY_MACRO 112 |
||||||
|
+#define KEY_MUTE 113 |
||||||
|
+#define KEY_VOLUMEDOWN 114 |
||||||
|
+#define KEY_VOLUMEUP 115 |
||||||
|
+#define KEY_POWER 116 /* SC System Power Down */ |
||||||
|
+#define KEY_KPEQUAL 117 |
||||||
|
+#define KEY_KPPLUSMINUS 118 |
||||||
|
+#define KEY_PAUSE 119 |
||||||
|
+#define KEY_SCALE 120 /* AL Compiz Scale (Expose) */ |
||||||
|
+ |
||||||
|
+#define KEY_KPCOMMA 121 |
||||||
|
+#define KEY_HANGEUL 122 |
||||||
|
+#define KEY_HANGUEL KEY_HANGEUL |
||||||
|
+#define KEY_HANJA 123 |
||||||
|
+#define KEY_YEN 124 |
||||||
|
+#define KEY_LEFTMETA 125 |
||||||
|
+#define KEY_RIGHTMETA 126 |
||||||
|
+#define KEY_COMPOSE 127 |
||||||
|
+ |
||||||
|
+#define KEY_STOP 128 /* AC Stop */ |
||||||
|
+#define KEY_AGAIN 129 |
||||||
|
+#define KEY_PROPS 130 /* AC Properties */ |
||||||
|
+#define KEY_UNDO 131 /* AC Undo */ |
||||||
|
+#define KEY_FRONT 132 |
||||||
|
+#define KEY_COPY 133 /* AC Copy */ |
||||||
|
+#define KEY_OPEN 134 /* AC Open */ |
||||||
|
+#define KEY_PASTE 135 /* AC Paste */ |
||||||
|
+#define KEY_FIND 136 /* AC Search */ |
||||||
|
+#define KEY_CUT 137 /* AC Cut */ |
||||||
|
+#define KEY_HELP 138 /* AL Integrated Help Center */ |
||||||
|
+#define KEY_MENU 139 /* Menu (show menu) */ |
||||||
|
+#define KEY_CALC 140 /* AL Calculator */ |
||||||
|
+#define KEY_SETUP 141 |
||||||
|
+#define KEY_SLEEP 142 /* SC System Sleep */ |
||||||
|
+#define KEY_WAKEUP 143 /* System Wake Up */ |
||||||
|
+#define KEY_FILE 144 /* AL Local Machine Browser */ |
||||||
|
+#define KEY_SENDFILE 145 |
||||||
|
+#define KEY_DELETEFILE 146 |
||||||
|
+#define KEY_XFER 147 |
||||||
|
+#define KEY_PROG1 148 |
||||||
|
+#define KEY_PROG2 149 |
||||||
|
+#define KEY_WWW 150 /* AL Internet Browser */ |
||||||
|
+#define KEY_MSDOS 151 |
||||||
|
+#define KEY_COFFEE 152 /* AL Terminal Lock/Screensaver */ |
||||||
|
+#define KEY_SCREENLOCK KEY_COFFEE |
||||||
|
+#define KEY_ROTATE_DISPLAY 153 /* Display orientation for e.g. tablets */ |
||||||
|
+#define KEY_DIRECTION KEY_ROTATE_DISPLAY |
||||||
|
+#define KEY_CYCLEWINDOWS 154 |
||||||
|
+#define KEY_MAIL 155 |
||||||
|
+#define KEY_BOOKMARKS 156 /* AC Bookmarks */ |
||||||
|
+#define KEY_COMPUTER 157 |
||||||
|
+#define KEY_BACK 158 /* AC Back */ |
||||||
|
+#define KEY_FORWARD 159 /* AC Forward */ |
||||||
|
+#define KEY_CLOSECD 160 |
||||||
|
+#define KEY_EJECTCD 161 |
||||||
|
+#define KEY_EJECTCLOSECD 162 |
||||||
|
+#define KEY_NEXTSONG 163 |
||||||
|
+#define KEY_PLAYPAUSE 164 |
||||||
|
+#define KEY_PREVIOUSSONG 165 |
||||||
|
+#define KEY_STOPCD 166 |
||||||
|
+#define KEY_RECORD 167 |
||||||
|
+#define KEY_REWIND 168 |
||||||
|
+#define KEY_PHONE 169 /* Media Select Telephone */ |
||||||
|
+#define KEY_ISO 170 |
||||||
|
+#define KEY_CONFIG 171 /* AL Consumer Control Configuration */ |
||||||
|
+#define KEY_HOMEPAGE 172 /* AC Home */ |
||||||
|
+#define KEY_REFRESH 173 /* AC Refresh */ |
||||||
|
+#define KEY_EXIT 174 /* AC Exit */ |
||||||
|
+#define KEY_MOVE 175 |
||||||
|
+#define KEY_EDIT 176 |
||||||
|
+#define KEY_SCROLLUP 177 |
||||||
|
+#define KEY_SCROLLDOWN 178 |
||||||
|
+#define KEY_KPLEFTPAREN 179 |
||||||
|
+#define KEY_KPRIGHTPAREN 180 |
||||||
|
+#define KEY_NEW 181 /* AC New */ |
||||||
|
+#define KEY_REDO 182 /* AC Redo/Repeat */ |
||||||
|
+ |
||||||
|
+#define KEY_F13 183 |
||||||
|
+#define KEY_F14 184 |
||||||
|
+#define KEY_F15 185 |
||||||
|
+#define KEY_F16 186 |
||||||
|
+#define KEY_F17 187 |
||||||
|
+#define KEY_F18 188 |
||||||
|
+#define KEY_F19 189 |
||||||
|
+#define KEY_F20 190 |
||||||
|
+#define KEY_F21 191 |
||||||
|
+#define KEY_F22 192 |
||||||
|
+#define KEY_F23 193 |
||||||
|
+#define KEY_F24 194 |
||||||
|
+ |
||||||
|
+#define KEY_PLAYCD 200 |
||||||
|
+#define KEY_PAUSECD 201 |
||||||
|
+#define KEY_PROG3 202 |
||||||
|
+#define KEY_PROG4 203 |
||||||
|
+#define KEY_DASHBOARD 204 /* AL Dashboard */ |
||||||
|
+#define KEY_SUSPEND 205 |
||||||
|
+#define KEY_CLOSE 206 /* AC Close */ |
||||||
|
+#define KEY_PLAY 207 |
||||||
|
+#define KEY_FASTFORWARD 208 |
||||||
|
+#define KEY_BASSBOOST 209 |
||||||
|
+#define KEY_PRINT 210 /* AC Print */ |
||||||
|
+#define KEY_HP 211 |
||||||
|
+#define KEY_CAMERA 212 |
||||||
|
+#define KEY_SOUND 213 |
||||||
|
+#define KEY_QUESTION 214 |
||||||
|
+#define KEY_EMAIL 215 |
||||||
|
+#define KEY_CHAT 216 |
||||||
|
+#define KEY_SEARCH 217 |
||||||
|
+#define KEY_CONNECT 218 |
||||||
|
+#define KEY_FINANCE 219 /* AL Checkbook/Finance */ |
||||||
|
+#define KEY_SPORT 220 |
||||||
|
+#define KEY_SHOP 221 |
||||||
|
+#define KEY_ALTERASE 222 |
||||||
|
+#define KEY_CANCEL 223 /* AC Cancel */ |
||||||
|
+#define KEY_BRIGHTNESSDOWN 224 |
||||||
|
+#define KEY_BRIGHTNESSUP 225 |
||||||
|
+#define KEY_MEDIA 226 |
||||||
|
+ |
||||||
|
+#define KEY_SWITCHVIDEOMODE 227 /* Cycle between available video |
||||||
|
+ outputs (Monitor/LCD/TV-out/etc) */ |
||||||
|
+#define KEY_KBDILLUMTOGGLE 228 |
||||||
|
+#define KEY_KBDILLUMDOWN 229 |
||||||
|
+#define KEY_KBDILLUMUP 230 |
||||||
|
+ |
||||||
|
+#define KEY_SEND 231 /* AC Send */ |
||||||
|
+#define KEY_REPLY 232 /* AC Reply */ |
||||||
|
+#define KEY_FORWARDMAIL 233 /* AC Forward Msg */ |
||||||
|
+#define KEY_SAVE 234 /* AC Save */ |
||||||
|
+#define KEY_DOCUMENTS 235 |
||||||
|
+ |
||||||
|
+#define KEY_BATTERY 236 |
||||||
|
+ |
||||||
|
+#define KEY_BLUETOOTH 237 |
||||||
|
+#define KEY_WLAN 238 |
||||||
|
+#define KEY_UWB 239 |
||||||
|
+ |
||||||
|
+#define KEY_UNKNOWN 240 |
||||||
|
+ |
||||||
|
+#define KEY_VIDEO_NEXT 241 /* drive next video source */ |
||||||
|
+#define KEY_VIDEO_PREV 242 /* drive previous video source */ |
||||||
|
+#define KEY_BRIGHTNESS_CYCLE 243 /* brightness up, after max is min */ |
||||||
|
+#define KEY_BRIGHTNESS_AUTO 244 /* Set Auto Brightness: manual |
||||||
|
+ brightness control is off, |
||||||
|
+ rely on ambient */ |
||||||
|
+#define KEY_BRIGHTNESS_ZERO KEY_BRIGHTNESS_AUTO |
||||||
|
+#define KEY_DISPLAY_OFF 245 /* display device to off state */ |
||||||
|
+ |
||||||
|
+#define KEY_WWAN 246 /* Wireless WAN (LTE, UMTS, GSM, etc.) */ |
||||||
|
+#define KEY_WIMAX KEY_WWAN |
||||||
|
+#define KEY_RFKILL 247 /* Key that controls all radios */ |
||||||
|
+ |
||||||
|
+#define KEY_MICMUTE 248 /* Mute / unmute the microphone */ |
||||||
|
+ |
||||||
|
+/* Code 255 is reserved for special needs of AT keyboard driver */ |
||||||
|
+ |
||||||
|
+#define BTN_MISC 0x100 |
||||||
|
+#define BTN_0 0x100 |
||||||
|
+#define BTN_1 0x101 |
||||||
|
+#define BTN_2 0x102 |
||||||
|
+#define BTN_3 0x103 |
||||||
|
+#define BTN_4 0x104 |
||||||
|
+#define BTN_5 0x105 |
||||||
|
+#define BTN_6 0x106 |
||||||
|
+#define BTN_7 0x107 |
||||||
|
+#define BTN_8 0x108 |
||||||
|
+#define BTN_9 0x109 |
||||||
|
+ |
||||||
|
+#define BTN_MOUSE 0x110 |
||||||
|
+#define BTN_LEFT 0x110 |
||||||
|
+#define BTN_RIGHT 0x111 |
||||||
|
+#define BTN_MIDDLE 0x112 |
||||||
|
+#define BTN_SIDE 0x113 |
||||||
|
+#define BTN_EXTRA 0x114 |
||||||
|
+#define BTN_FORWARD 0x115 |
||||||
|
+#define BTN_BACK 0x116 |
||||||
|
+#define BTN_TASK 0x117 |
||||||
|
+ |
||||||
|
+#define BTN_JOYSTICK 0x120 |
||||||
|
+#define BTN_TRIGGER 0x120 |
||||||
|
+#define BTN_THUMB 0x121 |
||||||
|
+#define BTN_THUMB2 0x122 |
||||||
|
+#define BTN_TOP 0x123 |
||||||
|
+#define BTN_TOP2 0x124 |
||||||
|
+#define BTN_PINKIE 0x125 |
||||||
|
+#define BTN_BASE 0x126 |
||||||
|
+#define BTN_BASE2 0x127 |
||||||
|
+#define BTN_BASE3 0x128 |
||||||
|
+#define BTN_BASE4 0x129 |
||||||
|
+#define BTN_BASE5 0x12a |
||||||
|
+#define BTN_BASE6 0x12b |
||||||
|
+#define BTN_DEAD 0x12f |
||||||
|
+ |
||||||
|
+#define BTN_GAMEPAD 0x130 |
||||||
|
+#define BTN_SOUTH 0x130 |
||||||
|
+#define BTN_A BTN_SOUTH |
||||||
|
+#define BTN_EAST 0x131 |
||||||
|
+#define BTN_B BTN_EAST |
||||||
|
+#define BTN_C 0x132 |
||||||
|
+#define BTN_NORTH 0x133 |
||||||
|
+#define BTN_X BTN_NORTH |
||||||
|
+#define BTN_WEST 0x134 |
||||||
|
+#define BTN_Y BTN_WEST |
||||||
|
+#define BTN_Z 0x135 |
||||||
|
+#define BTN_TL 0x136 |
||||||
|
+#define BTN_TR 0x137 |
||||||
|
+#define BTN_TL2 0x138 |
||||||
|
+#define BTN_TR2 0x139 |
||||||
|
+#define BTN_SELECT 0x13a |
||||||
|
+#define BTN_START 0x13b |
||||||
|
+#define BTN_MODE 0x13c |
||||||
|
+#define BTN_THUMBL 0x13d |
||||||
|
+#define BTN_THUMBR 0x13e |
||||||
|
+ |
||||||
|
+#define BTN_DIGI 0x140 |
||||||
|
+#define BTN_TOOL_PEN 0x140 |
||||||
|
+#define BTN_TOOL_RUBBER 0x141 |
||||||
|
+#define BTN_TOOL_BRUSH 0x142 |
||||||
|
+#define BTN_TOOL_PENCIL 0x143 |
||||||
|
+#define BTN_TOOL_AIRBRUSH 0x144 |
||||||
|
+#define BTN_TOOL_FINGER 0x145 |
||||||
|
+#define BTN_TOOL_MOUSE 0x146 |
||||||
|
+#define BTN_TOOL_LENS 0x147 |
||||||
|
+#define BTN_TOOL_QUINTTAP 0x148 /* Five fingers on trackpad */ |
||||||
|
+#define BTN_TOUCH 0x14a |
||||||
|
+#define BTN_STYLUS 0x14b |
||||||
|
+#define BTN_STYLUS2 0x14c |
||||||
|
+#define BTN_TOOL_DOUBLETAP 0x14d |
||||||
|
+#define BTN_TOOL_TRIPLETAP 0x14e |
||||||
|
+#define BTN_TOOL_QUADTAP 0x14f /* Four fingers on trackpad */ |
||||||
|
+ |
||||||
|
+#define BTN_WHEEL 0x150 |
||||||
|
+#define BTN_GEAR_DOWN 0x150 |
||||||
|
+#define BTN_GEAR_UP 0x151 |
||||||
|
+ |
||||||
|
+#define KEY_OK 0x160 |
||||||
|
+#define KEY_SELECT 0x161 |
||||||
|
+#define KEY_GOTO 0x162 |
||||||
|
+#define KEY_CLEAR 0x163 |
||||||
|
+#define KEY_POWER2 0x164 |
||||||
|
+#define KEY_OPTION 0x165 |
||||||
|
+#define KEY_INFO 0x166 /* AL OEM Features/Tips/Tutorial */ |
||||||
|
+#define KEY_TIME 0x167 |
||||||
|
+#define KEY_VENDOR 0x168 |
||||||
|
+#define KEY_ARCHIVE 0x169 |
||||||
|
+#define KEY_PROGRAM 0x16a /* Media Select Program Guide */ |
||||||
|
+#define KEY_CHANNEL 0x16b |
||||||
|
+#define KEY_FAVORITES 0x16c |
||||||
|
+#define KEY_EPG 0x16d |
||||||
|
+#define KEY_PVR 0x16e /* Media Select Home */ |
||||||
|
+#define KEY_MHP 0x16f |
||||||
|
+#define KEY_LANGUAGE 0x170 |
||||||
|
+#define KEY_TITLE 0x171 |
||||||
|
+#define KEY_SUBTITLE 0x172 |
||||||
|
+#define KEY_ANGLE 0x173 |
||||||
|
+#define KEY_ZOOM 0x174 |
||||||
|
+#define KEY_MODE 0x175 |
||||||
|
+#define KEY_KEYBOARD 0x176 |
||||||
|
+#define KEY_SCREEN 0x177 |
||||||
|
+#define KEY_PC 0x178 /* Media Select Computer */ |
||||||
|
+#define KEY_TV 0x179 /* Media Select TV */ |
||||||
|
+#define KEY_TV2 0x17a /* Media Select Cable */ |
||||||
|
+#define KEY_VCR 0x17b /* Media Select VCR */ |
||||||
|
+#define KEY_VCR2 0x17c /* VCR Plus */ |
||||||
|
+#define KEY_SAT 0x17d /* Media Select Satellite */ |
||||||
|
+#define KEY_SAT2 0x17e |
||||||
|
+#define KEY_CD 0x17f /* Media Select CD */ |
||||||
|
+#define KEY_TAPE 0x180 /* Media Select Tape */ |
||||||
|
+#define KEY_RADIO 0x181 |
||||||
|
+#define KEY_TUNER 0x182 /* Media Select Tuner */ |
||||||
|
+#define KEY_PLAYER 0x183 |
||||||
|
+#define KEY_TEXT 0x184 |
||||||
|
+#define KEY_DVD 0x185 /* Media Select DVD */ |
||||||
|
+#define KEY_AUX 0x186 |
||||||
|
+#define KEY_MP3 0x187 |
||||||
|
+#define KEY_AUDIO 0x188 /* AL Audio Browser */ |
||||||
|
+#define KEY_VIDEO 0x189 /* AL Movie Browser */ |
||||||
|
+#define KEY_DIRECTORY 0x18a |
||||||
|
+#define KEY_LIST 0x18b |
||||||
|
+#define KEY_MEMO 0x18c /* Media Select Messages */ |
||||||
|
+#define KEY_CALENDAR 0x18d |
||||||
|
+#define KEY_RED 0x18e |
||||||
|
+#define KEY_GREEN 0x18f |
||||||
|
+#define KEY_YELLOW 0x190 |
||||||
|
+#define KEY_BLUE 0x191 |
||||||
|
+#define KEY_CHANNELUP 0x192 /* Channel Increment */ |
||||||
|
+#define KEY_CHANNELDOWN 0x193 /* Channel Decrement */ |
||||||
|
+#define KEY_FIRST 0x194 |
||||||
|
+#define KEY_LAST 0x195 /* Recall Last */ |
||||||
|
+#define KEY_AB 0x196 |
||||||
|
+#define KEY_NEXT 0x197 |
||||||
|
+#define KEY_RESTART 0x198 |
||||||
|
+#define KEY_SLOW 0x199 |
||||||
|
+#define KEY_SHUFFLE 0x19a |
||||||
|
+#define KEY_BREAK 0x19b |
||||||
|
+#define KEY_PREVIOUS 0x19c |
||||||
|
+#define KEY_DIGITS 0x19d |
||||||
|
+#define KEY_TEEN 0x19e |
||||||
|
+#define KEY_TWEN 0x19f |
||||||
|
+#define KEY_VIDEOPHONE 0x1a0 /* Media Select Video Phone */ |
||||||
|
+#define KEY_GAMES 0x1a1 /* Media Select Games */ |
||||||
|
+#define KEY_ZOOMIN 0x1a2 /* AC Zoom In */ |
||||||
|
+#define KEY_ZOOMOUT 0x1a3 /* AC Zoom Out */ |
||||||
|
+#define KEY_ZOOMRESET 0x1a4 /* AC Zoom */ |
||||||
|
+#define KEY_WORDPROCESSOR 0x1a5 /* AL Word Processor */ |
||||||
|
+#define KEY_EDITOR 0x1a6 /* AL Text Editor */ |
||||||
|
+#define KEY_SPREADSHEET 0x1a7 /* AL Spreadsheet */ |
||||||
|
+#define KEY_GRAPHICSEDITOR 0x1a8 /* AL Graphics Editor */ |
||||||
|
+#define KEY_PRESENTATION 0x1a9 /* AL Presentation App */ |
||||||
|
+#define KEY_DATABASE 0x1aa /* AL Database App */ |
||||||
|
+#define KEY_NEWS 0x1ab /* AL Newsreader */ |
||||||
|
+#define KEY_VOICEMAIL 0x1ac /* AL Voicemail */ |
||||||
|
+#define KEY_ADDRESSBOOK 0x1ad /* AL Contacts/Address Book */ |
||||||
|
+#define KEY_MESSENGER 0x1ae /* AL Instant Messaging */ |
||||||
|
+#define KEY_DISPLAYTOGGLE 0x1af /* Turn display (LCD) on and off */ |
||||||
|
+#define KEY_BRIGHTNESS_TOGGLE KEY_DISPLAYTOGGLE |
||||||
|
+#define KEY_SPELLCHECK 0x1b0 /* AL Spell Check */ |
||||||
|
+#define KEY_LOGOFF 0x1b1 /* AL Logoff */ |
||||||
|
+ |
||||||
|
+#define KEY_DOLLAR 0x1b2 |
||||||
|
+#define KEY_EURO 0x1b3 |
||||||
|
+ |
||||||
|
+#define KEY_FRAMEBACK 0x1b4 /* Consumer - transport controls */ |
||||||
|
+#define KEY_FRAMEFORWARD 0x1b5 |
||||||
|
+#define KEY_CONTEXT_MENU 0x1b6 /* GenDesc - system context menu */ |
||||||
|
+#define KEY_MEDIA_REPEAT 0x1b7 /* Consumer - transport control */ |
||||||
|
+#define KEY_10CHANNELSUP 0x1b8 /* 10 channels up (10+) */ |
||||||
|
+#define KEY_10CHANNELSDOWN 0x1b9 /* 10 channels down (10-) */ |
||||||
|
+#define KEY_IMAGES 0x1ba /* AL Image Browser */ |
||||||
|
+ |
||||||
|
+#define KEY_DEL_EOL 0x1c0 |
||||||
|
+#define KEY_DEL_EOS 0x1c1 |
||||||
|
+#define KEY_INS_LINE 0x1c2 |
||||||
|
+#define KEY_DEL_LINE 0x1c3 |
||||||
|
+ |
||||||
|
+#define KEY_FN 0x1d0 |
||||||
|
+#define KEY_FN_ESC 0x1d1 |
||||||
|
+#define KEY_FN_F1 0x1d2 |
||||||
|
+#define KEY_FN_F2 0x1d3 |
||||||
|
+#define KEY_FN_F3 0x1d4 |
||||||
|
+#define KEY_FN_F4 0x1d5 |
||||||
|
+#define KEY_FN_F5 0x1d6 |
||||||
|
+#define KEY_FN_F6 0x1d7 |
||||||
|
+#define KEY_FN_F7 0x1d8 |
||||||
|
+#define KEY_FN_F8 0x1d9 |
||||||
|
+#define KEY_FN_F9 0x1da |
||||||
|
+#define KEY_FN_F10 0x1db |
||||||
|
+#define KEY_FN_F11 0x1dc |
||||||
|
+#define KEY_FN_F12 0x1dd |
||||||
|
+#define KEY_FN_1 0x1de |
||||||
|
+#define KEY_FN_2 0x1df |
||||||
|
+#define KEY_FN_D 0x1e0 |
||||||
|
+#define KEY_FN_E 0x1e1 |
||||||
|
+#define KEY_FN_F 0x1e2 |
||||||
|
+#define KEY_FN_S 0x1e3 |
||||||
|
+#define KEY_FN_B 0x1e4 |
||||||
|
+ |
||||||
|
+#define KEY_BRL_DOT1 0x1f1 |
||||||
|
+#define KEY_BRL_DOT2 0x1f2 |
||||||
|
+#define KEY_BRL_DOT3 0x1f3 |
||||||
|
+#define KEY_BRL_DOT4 0x1f4 |
||||||
|
+#define KEY_BRL_DOT5 0x1f5 |
||||||
|
+#define KEY_BRL_DOT6 0x1f6 |
||||||
|
+#define KEY_BRL_DOT7 0x1f7 |
||||||
|
+#define KEY_BRL_DOT8 0x1f8 |
||||||
|
+#define KEY_BRL_DOT9 0x1f9 |
||||||
|
+#define KEY_BRL_DOT10 0x1fa |
||||||
|
+ |
||||||
|
+#define KEY_NUMERIC_0 0x200 /* used by phones, remote controls, */ |
||||||
|
+#define KEY_NUMERIC_1 0x201 /* and other keypads */ |
||||||
|
+#define KEY_NUMERIC_2 0x202 |
||||||
|
+#define KEY_NUMERIC_3 0x203 |
||||||
|
+#define KEY_NUMERIC_4 0x204 |
||||||
|
+#define KEY_NUMERIC_5 0x205 |
||||||
|
+#define KEY_NUMERIC_6 0x206 |
||||||
|
+#define KEY_NUMERIC_7 0x207 |
||||||
|
+#define KEY_NUMERIC_8 0x208 |
||||||
|
+#define KEY_NUMERIC_9 0x209 |
||||||
|
+#define KEY_NUMERIC_STAR 0x20a |
||||||
|
+#define KEY_NUMERIC_POUND 0x20b |
||||||
|
+#define KEY_NUMERIC_A 0x20c /* Phone key A - HUT Telephony 0xb9 */ |
||||||
|
+#define KEY_NUMERIC_B 0x20d |
||||||
|
+#define KEY_NUMERIC_C 0x20e |
||||||
|
+#define KEY_NUMERIC_D 0x20f |
||||||
|
+ |
||||||
|
+#define KEY_CAMERA_FOCUS 0x210 |
||||||
|
+#define KEY_WPS_BUTTON 0x211 /* WiFi Protected Setup key */ |
||||||
|
+ |
||||||
|
+#define KEY_TOUCHPAD_TOGGLE 0x212 /* Request switch touchpad on or off */ |
||||||
|
+#define KEY_TOUCHPAD_ON 0x213 |
||||||
|
+#define KEY_TOUCHPAD_OFF 0x214 |
||||||
|
+ |
||||||
|
+#define KEY_CAMERA_ZOOMIN 0x215 |
||||||
|
+#define KEY_CAMERA_ZOOMOUT 0x216 |
||||||
|
+#define KEY_CAMERA_UP 0x217 |
||||||
|
+#define KEY_CAMERA_DOWN 0x218 |
||||||
|
+#define KEY_CAMERA_LEFT 0x219 |
||||||
|
+#define KEY_CAMERA_RIGHT 0x21a |
||||||
|
+ |
||||||
|
+#define KEY_ATTENDANT_ON 0x21b |
||||||
|
+#define KEY_ATTENDANT_OFF 0x21c |
||||||
|
+#define KEY_ATTENDANT_TOGGLE 0x21d /* Attendant call on or off */ |
||||||
|
+#define KEY_LIGHTS_TOGGLE 0x21e /* Reading light on or off */ |
||||||
|
+ |
||||||
|
+#define BTN_DPAD_UP 0x220 |
||||||
|
+#define BTN_DPAD_DOWN 0x221 |
||||||
|
+#define BTN_DPAD_LEFT 0x222 |
||||||
|
+#define BTN_DPAD_RIGHT 0x223 |
||||||
|
+ |
||||||
|
+#define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */ |
||||||
|
+ |
||||||
|
+#define KEY_BUTTONCONFIG 0x240 /* AL Button Configuration */ |
||||||
|
+#define KEY_TASKMANAGER 0x241 /* AL Task/Project Manager */ |
||||||
|
+#define KEY_JOURNAL 0x242 /* AL Log/Journal/Timecard */ |
||||||
|
+#define KEY_CONTROLPANEL 0x243 /* AL Control Panel */ |
||||||
|
+#define KEY_APPSELECT 0x244 /* AL Select Task/Application */ |
||||||
|
+#define KEY_SCREENSAVER 0x245 /* AL Screen Saver */ |
||||||
|
+#define KEY_VOICECOMMAND 0x246 /* Listening Voice Command */ |
||||||
|
+ |
||||||
|
+#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */ |
||||||
|
+#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */ |
||||||
|
+ |
||||||
|
+#define KEY_KBDINPUTASSIST_PREV 0x260 |
||||||
|
+#define KEY_KBDINPUTASSIST_NEXT 0x261 |
||||||
|
+#define KEY_KBDINPUTASSIST_PREVGROUP 0x262 |
||||||
|
+#define KEY_KBDINPUTASSIST_NEXTGROUP 0x263 |
||||||
|
+#define KEY_KBDINPUTASSIST_ACCEPT 0x264 |
||||||
|
+#define KEY_KBDINPUTASSIST_CANCEL 0x265 |
||||||
|
+ |
||||||
|
+/* Diagonal movement keys */ |
||||||
|
+#define KEY_RIGHT_UP 0x266 |
||||||
|
+#define KEY_RIGHT_DOWN 0x267 |
||||||
|
+#define KEY_LEFT_UP 0x268 |
||||||
|
+#define KEY_LEFT_DOWN 0x269 |
||||||
|
+ |
||||||
|
+#define KEY_ROOT_MENU 0x26a /* Show Device's Root Menu */ |
||||||
|
+/* Show Top Menu of the Media (e.g. DVD) */ |
||||||
|
+#define KEY_MEDIA_TOP_MENU 0x26b |
||||||
|
+#define KEY_NUMERIC_11 0x26c |
||||||
|
+#define KEY_NUMERIC_12 0x26d |
||||||
|
+/* |
||||||
|
+ * Toggle Audio Description: refers to an audio service that helps blind and |
||||||
|
+ * visually impaired consumers understand the action in a program. Note: in |
||||||
|
+ * some countries this is referred to as "Video Description". |
||||||
|
+ */ |
||||||
|
+#define KEY_AUDIO_DESC 0x26e |
||||||
|
+#define KEY_3D_MODE 0x26f |
||||||
|
+#define KEY_NEXT_FAVORITE 0x270 |
||||||
|
+#define KEY_STOP_RECORD 0x271 |
||||||
|
+#define KEY_PAUSE_RECORD 0x272 |
||||||
|
+#define KEY_VOD 0x273 /* Video on Demand */ |
||||||
|
+#define KEY_UNMUTE 0x274 |
||||||
|
+#define KEY_FASTREVERSE 0x275 |
||||||
|
+#define KEY_SLOWREVERSE 0x276 |
||||||
|
+/* |
||||||
|
+ * Control a data application associated with the currently viewed channel, |
||||||
|
+ * e.g. teletext or data broadcast application (MHEG, MHP, HbbTV, etc.) |
||||||
|
+ */ |
||||||
|
+#define KEY_DATA 0x277 |
||||||
|
+#define KEY_ONSCREEN_KEYBOARD 0x278 |
||||||
|
+ |
||||||
|
+#define BTN_TRIGGER_HAPPY 0x2c0 |
||||||
|
+#define BTN_TRIGGER_HAPPY1 0x2c0 |
||||||
|
+#define BTN_TRIGGER_HAPPY2 0x2c1 |
||||||
|
+#define BTN_TRIGGER_HAPPY3 0x2c2 |
||||||
|
+#define BTN_TRIGGER_HAPPY4 0x2c3 |
||||||
|
+#define BTN_TRIGGER_HAPPY5 0x2c4 |
||||||
|
+#define BTN_TRIGGER_HAPPY6 0x2c5 |
||||||
|
+#define BTN_TRIGGER_HAPPY7 0x2c6 |
||||||
|
+#define BTN_TRIGGER_HAPPY8 0x2c7 |
||||||
|
+#define BTN_TRIGGER_HAPPY9 0x2c8 |
||||||
|
+#define BTN_TRIGGER_HAPPY10 0x2c9 |
||||||
|
+#define BTN_TRIGGER_HAPPY11 0x2ca |
||||||
|
+#define BTN_TRIGGER_HAPPY12 0x2cb |
||||||
|
+#define BTN_TRIGGER_HAPPY13 0x2cc |
||||||
|
+#define BTN_TRIGGER_HAPPY14 0x2cd |
||||||
|
+#define BTN_TRIGGER_HAPPY15 0x2ce |
||||||
|
+#define BTN_TRIGGER_HAPPY16 0x2cf |
||||||
|
+#define BTN_TRIGGER_HAPPY17 0x2d0 |
||||||
|
+#define BTN_TRIGGER_HAPPY18 0x2d1 |
||||||
|
+#define BTN_TRIGGER_HAPPY19 0x2d2 |
||||||
|
+#define BTN_TRIGGER_HAPPY20 0x2d3 |
||||||
|
+#define BTN_TRIGGER_HAPPY21 0x2d4 |
||||||
|
+#define BTN_TRIGGER_HAPPY22 0x2d5 |
||||||
|
+#define BTN_TRIGGER_HAPPY23 0x2d6 |
||||||
|
+#define BTN_TRIGGER_HAPPY24 0x2d7 |
||||||
|
+#define BTN_TRIGGER_HAPPY25 0x2d8 |
||||||
|
+#define BTN_TRIGGER_HAPPY26 0x2d9 |
||||||
|
+#define BTN_TRIGGER_HAPPY27 0x2da |
||||||
|
+#define BTN_TRIGGER_HAPPY28 0x2db |
||||||
|
+#define BTN_TRIGGER_HAPPY29 0x2dc |
||||||
|
+#define BTN_TRIGGER_HAPPY30 0x2dd |
||||||
|
+#define BTN_TRIGGER_HAPPY31 0x2de |
||||||
|
+#define BTN_TRIGGER_HAPPY32 0x2df |
||||||
|
+#define BTN_TRIGGER_HAPPY33 0x2e0 |
||||||
|
+#define BTN_TRIGGER_HAPPY34 0x2e1 |
||||||
|
+#define BTN_TRIGGER_HAPPY35 0x2e2 |
||||||
|
+#define BTN_TRIGGER_HAPPY36 0x2e3 |
||||||
|
+#define BTN_TRIGGER_HAPPY37 0x2e4 |
||||||
|
+#define BTN_TRIGGER_HAPPY38 0x2e5 |
||||||
|
+#define BTN_TRIGGER_HAPPY39 0x2e6 |
||||||
|
+#define BTN_TRIGGER_HAPPY40 0x2e7 |
||||||
|
+ |
||||||
|
+/* We avoid low common keys in module aliases so they don't get huge. */ |
||||||
|
+#define KEY_MIN_INTERESTING KEY_MUTE |
||||||
|
+#define KEY_MAX 0x2ff |
||||||
|
+#define KEY_CNT (KEY_MAX+1) |
||||||
|
+ |
||||||
|
+/* |
||||||
|
+ * Relative axes |
||||||
|
+ */ |
||||||
|
+ |
||||||
|
+#define REL_X 0x00 |
||||||
|
+#define REL_Y 0x01 |
||||||
|
+#define REL_Z 0x02 |
||||||
|
+#define REL_RX 0x03 |
||||||
|
+#define REL_RY 0x04 |
||||||
|
+#define REL_RZ 0x05 |
||||||
|
+#define REL_HWHEEL 0x06 |
||||||
|
+#define REL_DIAL 0x07 |
||||||
|
+#define REL_WHEEL 0x08 |
||||||
|
+#define REL_MISC 0x09 |
||||||
|
+#define REL_MAX 0x0f |
||||||
|
+#define REL_CNT (REL_MAX+1) |
||||||
|
+ |
||||||
|
+/* |
||||||
|
+ * Absolute axes |
||||||
|
+ */ |
||||||
|
+ |
||||||
|
+#define ABS_X 0x00 |
||||||
|
+#define ABS_Y 0x01 |
||||||
|
+#define ABS_Z 0x02 |
||||||
|
+#define ABS_RX 0x03 |
||||||
|
+#define ABS_RY 0x04 |
||||||
|
+#define ABS_RZ 0x05 |
||||||
|
+#define ABS_THROTTLE 0x06 |
||||||
|
+#define ABS_RUDDER 0x07 |
||||||
|
+#define ABS_WHEEL 0x08 |
||||||
|
+#define ABS_GAS 0x09 |
||||||
|
+#define ABS_BRAKE 0x0a |
||||||
|
+#define ABS_HAT0X 0x10 |
||||||
|
+#define ABS_HAT0Y 0x11 |
||||||
|
+#define ABS_HAT1X 0x12 |
||||||
|
+#define ABS_HAT1Y 0x13 |
||||||
|
+#define ABS_HAT2X 0x14 |
||||||
|
+#define ABS_HAT2Y 0x15 |
||||||
|
+#define ABS_HAT3X 0x16 |
||||||
|
+#define ABS_HAT3Y 0x17 |
||||||
|
+#define ABS_PRESSURE 0x18 |
||||||
|
+#define ABS_DISTANCE 0x19 |
||||||
|
+#define ABS_TILT_X 0x1a |
||||||
|
+#define ABS_TILT_Y 0x1b |
||||||
|
+#define ABS_TOOL_WIDTH 0x1c |
||||||
|
+ |
||||||
|
+#define ABS_VOLUME 0x20 |
||||||
|
+ |
||||||
|
+#define ABS_MISC 0x28 |
||||||
|
+ |
||||||
|
+#define ABS_MT_SLOT 0x2f /* MT slot being modified */ |
||||||
|
+#define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */ |
||||||
|
+#define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */ |
||||||
|
+#define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */ |
||||||
|
+#define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */ |
||||||
|
+#define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */ |
||||||
|
+#define ABS_MT_POSITION_X 0x35 /* Center X touch position */ |
||||||
|
+#define ABS_MT_POSITION_Y 0x36 /* Center Y touch position */ |
||||||
|
+#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */ |
||||||
|
+#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */ |
||||||
|
+#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */ |
||||||
|
+#define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */ |
||||||
|
+#define ABS_MT_DISTANCE 0x3b /* Contact hover distance */ |
||||||
|
+#define ABS_MT_TOOL_X 0x3c /* Center X tool position */ |
||||||
|
+#define ABS_MT_TOOL_Y 0x3d /* Center Y tool position */ |
||||||
|
+ |
||||||
|
+ |
||||||
|
+#define ABS_MAX 0x3f |
||||||
|
+#define ABS_CNT (ABS_MAX+1) |
||||||
|
+ |
||||||
|
+/* |
||||||
|
+ * Switch events |
||||||
|
+ */ |
||||||
|
+ |
||||||
|
+#define SW_LID 0x00 /* set = lid shut */ |
||||||
|
+#define SW_TABLET_MODE 0x01 /* set = tablet mode */ |
||||||
|
+#define SW_HEADPHONE_INSERT 0x02 /* set = inserted */ |
||||||
|
+#define SW_RFKILL_ALL 0x03 /* rfkill master switch, type "any" |
||||||
|
+ set = radio enabled */ |
||||||
|
+#define SW_RADIO SW_RFKILL_ALL /* deprecated */ |
||||||
|
+#define SW_MICROPHONE_INSERT 0x04 /* set = inserted */ |
||||||
|
+#define SW_DOCK 0x05 /* set = plugged into dock */ |
||||||
|
+#define SW_LINEOUT_INSERT 0x06 /* set = inserted */ |
||||||
|
+#define SW_JACK_PHYSICAL_INSERT 0x07 /* set = mechanical switch set */ |
||||||
|
+#define SW_VIDEOOUT_INSERT 0x08 /* set = inserted */ |
||||||
|
+#define SW_CAMERA_LENS_COVER 0x09 /* set = lens covered */ |
||||||
|
+#define SW_KEYPAD_SLIDE 0x0a /* set = keypad slide out */ |
||||||
|
+#define SW_FRONT_PROXIMITY 0x0b /* set = front proximity sensor active */ |
||||||
|
+#define SW_ROTATE_LOCK 0x0c /* set = rotate locked/disabled */ |
||||||
|
+#define SW_LINEIN_INSERT 0x0d /* set = inserted */ |
||||||
|
+#define SW_MUTE_DEVICE 0x0e /* set = device disabled */ |
||||||
|
+#define SW_PEN_INSERTED 0x0f /* set = pen inserted */ |
||||||
|
+#define SW_MAX 0x0f |
||||||
|
+#define SW_CNT (SW_MAX+1) |
||||||
|
+ |
||||||
|
+/* |
||||||
|
+ * Misc events |
||||||
|
+ */ |
||||||
|
+ |
||||||
|
+#define MSC_SERIAL 0x00 |
||||||
|
+#define MSC_PULSELED 0x01 |
||||||
|
+#define MSC_GESTURE 0x02 |
||||||
|
+#define MSC_RAW 0x03 |
||||||
|
+#define MSC_SCAN 0x04 |
||||||
|
+#define MSC_TIMESTAMP 0x05 |
||||||
|
+#define MSC_MAX 0x07 |
||||||
|
+#define MSC_CNT (MSC_MAX+1) |
||||||
|
+ |
||||||
|
+/* |
||||||
|
+ * LEDs |
||||||
|
+ */ |
||||||
|
+ |
||||||
|
+#define LED_NUML 0x00 |
||||||
|
+#define LED_CAPSL 0x01 |
||||||
|
+#define LED_SCROLLL 0x02 |
||||||
|
+#define LED_COMPOSE 0x03 |
||||||
|
+#define LED_KANA 0x04 |
||||||
|
+#define LED_SLEEP 0x05 |
||||||
|
+#define LED_SUSPEND 0x06 |
||||||
|
+#define LED_MUTE 0x07 |
||||||
|
+#define LED_MISC 0x08 |
||||||
|
+#define LED_MAIL 0x09 |
||||||
|
+#define LED_CHARGING 0x0a |
||||||
|
+#define LED_MAX 0x0f |
||||||
|
+#define LED_CNT (LED_MAX+1) |
||||||
|
+ |
||||||
|
+/* |
||||||
|
+ * Autorepeat values |
||||||
|
+ */ |
||||||
|
+ |
||||||
|
+#define REP_DELAY 0x00 |
||||||
|
+#define REP_PERIOD 0x01 |
||||||
|
+#define REP_MAX 0x01 |
||||||
|
+#define REP_CNT (REP_MAX+1) |
||||||
|
+ |
||||||
|
+/* |
||||||
|
+ * Sounds |
||||||
|
+ */ |
||||||
|
+ |
||||||
|
+#define SND_CLICK 0x00 |
||||||
|
+#define SND_BELL 0x01 |
||||||
|
+#define SND_TONE 0x02 |
||||||
|
+#define SND_MAX 0x07 |
||||||
|
+#define SND_CNT (SND_MAX+1) |
||||||
|
+ |
||||||
|
+#endif |
||||||
|
diff --git a/src/backends/native/meta-input-settings-native.c b/src/backends/native/meta-input-settings-native.c |
||||||
|
index 8a62bb3..8a5ff5b 100644 |
||||||
|
--- a/src/backends/native/meta-input-settings-native.c |
||||||
|
+++ b/src/backends/native/meta-input-settings-native.c |
||||||
|
@@ -24,7 +24,7 @@ |
||||||
|
#include "config.h" |
||||||
|
|
||||||
|
#include <clutter/evdev/clutter-evdev.h> |
||||||
|
-#include <linux/input-event-codes.h> |
||||||
|
+#include <clutter/evdev/linux/input-event-codes.h> |
||||||
|
#include <libinput.h> |
||||||
|
|
||||||
|
#include "meta-backend-native.h" |
||||||
|
diff --git a/src/wayland/meta-wayland-tablet-tool.c b/src/wayland/meta-wayland-tablet-tool.c |
||||||
|
index 4b57d41..5675f48 100644 |
||||||
|
--- a/src/wayland/meta-wayland-tablet-tool.c |
||||||
|
+++ b/src/wayland/meta-wayland-tablet-tool.c |
||||||
|
@@ -41,7 +41,7 @@ |
||||||
|
|
||||||
|
#ifdef HAVE_NATIVE_BACKEND |
||||||
|
#include "backends/native/meta-backend-native.h" |
||||||
|
-#include <linux/input-event-codes.h> |
||||||
|
+#include <clutter/evdev/linux/input-event-codes.h> |
||||||
|
#endif |
||||||
|
|
||||||
|
#define TABLET_AXIS_MAX 65535 |
||||||
|
-- |
||||||
|
1.8.3.1 |
||||||
|
|
@ -0,0 +1,37 @@ |
|||||||
|
From 9826eae9f091d461bd117c254ba8e255dd084797 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Olivier Fourdan <ofourdan@redhat.com> |
||||||
|
Date: Fri, 2 Feb 2018 16:35:26 +0100 |
||||||
|
Subject: [PATCH] wayland: Do not fail on stalled .X11-unix entries |
||||||
|
|
||||||
|
If for whatever reason, there are stalled files in /tmp/.X11-unix/ the |
||||||
|
bind() to the abstract socket will succeed but not the bind() to the |
||||||
|
to the UNIX socket. |
||||||
|
|
||||||
|
This causes gnome-shell/mutter to fail because it cannot start Xwayland |
||||||
|
(while it could actually, by using a different display). |
||||||
|
|
||||||
|
In case of failure to bind to the UNIX socket, try the next display |
||||||
|
instead of failing, to avoid stalled entries in /tmp/.X11-unix. |
||||||
|
|
||||||
|
Closes: https://gitlab.gnome.org/GNOME/mutter/issues/13 |
||||||
|
--- |
||||||
|
src/wayland/meta-xwayland.c | 3 ++- |
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-) |
||||||
|
|
||||||
|
diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c |
||||||
|
index 50cfc7c57..ce21fe5ee 100644 |
||||||
|
--- a/src/wayland/meta-xwayland.c |
||||||
|
+++ b/src/wayland/meta-xwayland.c |
||||||
|
@@ -458,7 +458,8 @@ choose_xdisplay (MetaXWaylandManager *manager) |
||||||
|
{ |
||||||
|
unlink (lock_file); |
||||||
|
close (manager->abstract_fd); |
||||||
|
- return FALSE; |
||||||
|
+ display++; |
||||||
|
+ continue; |
||||||
|
} |
||||||
|
|
||||||
|
break; |
||||||
|
-- |
||||||
|
2.14.3 |
||||||
|
|
@ -0,0 +1,25 @@ |
|||||||
|
From 85968e1d0996b7f3a7453076c88ed6d5e0113369 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Olivier Fourdan <ofourdan@redhat.com> |
||||||
|
Date: Wed, 20 Sep 2017 12:17:23 +0200 |
||||||
|
Subject: [PATCH] wayland: enable scale-monitor-framebuffer by default |
||||||
|
|
||||||
|
--- |
||||||
|
data/org.gnome.mutter.gschema.xml.in | 2 +- |
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-) |
||||||
|
|
||||||
|
diff --git a/data/org.gnome.mutter.gschema.xml.in b/data/org.gnome.mutter.gschema.xml.in |
||||||
|
index d926312c8..bec5585bd 100644 |
||||||
|
--- a/data/org.gnome.mutter.gschema.xml.in |
||||||
|
+++ b/data/org.gnome.mutter.gschema.xml.in |
||||||
|
@@ -103,7 +103,7 @@ |
||||||
|
</key> |
||||||
|
|
||||||
|
<key name="experimental-features" type="as"> |
||||||
|
- <default>[]</default> |
||||||
|
+ <default>['scale-monitor-framebuffer']</default> |
||||||
|
<summary>Enable experimental features</summary> |
||||||
|
<description> |
||||||
|
To enable experimental features, add the feature keyword to the list. |
||||||
|
-- |
||||||
|
2.13.5 |
||||||
|
|
@ -0,0 +1,35 @@ |
|||||||
|
From 97f5f9bdc1c5cb1a2e02ec04750b5db9a4b4fdf1 Mon Sep 17 00:00:00 2001 |
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org> |
||||||
|
Date: Fri, 12 May 2017 13:40:31 +0200 |
||||||
|
Subject: [PATCH 8/8] window-actor: Special-case shaped Java windows |
||||||
|
|
||||||
|
OpenJDK wrongly assumes that shaping a window implies no shadows. |
||||||
|
They got lucky until commit b975676c changed the fallback case, |
||||||
|
but now their compliance tests are broken. Make them happy again |
||||||
|
by special-casing shaped Java windows. |
||||||
|
--- |
||||||
|
src/compositor/meta-window-actor.c | 8 ++++++++ |
||||||
|
1 file changed, 8 insertions(+) |
||||||
|
|
||||||
|
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c |
||||||
|
index 773e6d09d..ac072997c 100644 |
||||||
|
--- a/src/compositor/meta-window-actor.c |
||||||
|
+++ b/src/compositor/meta-window-actor.c |
||||||
|
@@ -843,6 +843,14 @@ meta_window_actor_has_shadow (MetaWindowActor *self) |
||||||
|
if (priv->window->has_custom_frame_extents) |
||||||
|
return FALSE; |
||||||
|
|
||||||
|
+ /* |
||||||
|
+ * OpenJDK wrongly assumes that shaping a window implies no compositor |
||||||
|
+ * shadows; make its compliance tests happy to give it what it wants ... |
||||||
|
+ */ |
||||||
|
+ if (g_strcmp0 (priv->window->res_name, "sun-awt-X11-XWindowPeer") == 0 && |
||||||
|
+ priv->window->shape_region != NULL) |
||||||
|
+ return FALSE; |
||||||
|
+ |
||||||
|
/* |
||||||
|
* Generate shadows for all other windows. |
||||||
|
*/ |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,50 @@ |
|||||||
|
From 07e5f7ef29b5567e090221d5da9415e8b84c0ebb Mon Sep 17 00:00:00 2001 |
||||||
|
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com> |
||||||
|
Date: Mon, 16 Oct 2017 17:02:51 +0800 |
||||||
|
Subject: [PATCH 3/4] window/wayland: Handle resizing when headless |
||||||
|
|
||||||
|
We tried to get the geometry scale, which may depend on the main |
||||||
|
logical monitor assigned to the window. To avoid dereferencing a NULL |
||||||
|
logical monitor when headless, instead assume the geometry scale is 1. |
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=788764 |
||||||
|
--- |
||||||
|
src/wayland/meta-window-wayland.c | 8 ++++++-- |
||||||
|
1 file changed, 6 insertions(+), 2 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/wayland/meta-window-wayland.c b/src/wayland/meta-window-wayland.c |
||||||
|
index ed6e34b43..f3f0e1688 100644 |
||||||
|
--- a/src/wayland/meta-window-wayland.c |
||||||
|
+++ b/src/wayland/meta-window-wayland.c |
||||||
|
@@ -67,6 +67,8 @@ G_DEFINE_TYPE (MetaWindowWayland, meta_window_wayland, META_TYPE_WINDOW) |
||||||
|
static int |
||||||
|
get_window_geometry_scale_for_logical_monitor (MetaLogicalMonitor *logical_monitor) |
||||||
|
{ |
||||||
|
+ g_assert (logical_monitor); |
||||||
|
+ |
||||||
|
if (meta_is_stage_views_scaled ()) |
||||||
|
return 1; |
||||||
|
else |
||||||
|
@@ -79,8 +81,7 @@ meta_window_wayland_manage (MetaWindow *window) |
||||||
|
MetaWindowWayland *wl_window = META_WINDOW_WAYLAND (window); |
||||||
|
MetaDisplay *display = window->display; |
||||||
|
|
||||||
|
- wl_window->geometry_scale = |
||||||
|
- get_window_geometry_scale_for_logical_monitor (window->monitor); |
||||||
|
+ wl_window->geometry_scale = meta_window_wayland_get_geometry_scale (window); |
||||||
|
|
||||||
|
meta_display_register_wayland_window (display, window); |
||||||
|
|
||||||
|
@@ -634,6 +635,9 @@ should_do_pending_move (MetaWindowWayland *wl_window, |
||||||
|
int |
||||||
|
meta_window_wayland_get_geometry_scale (MetaWindow *window) |
||||||
|
{ |
||||||
|
+ if (!window->monitor) |
||||||
|
+ return 1; |
||||||
|
+ |
||||||
|
return get_window_geometry_scale_for_logical_monitor (window->monitor); |
||||||
|
} |
||||||
|
|
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,400 @@ |
|||||||
|
From 81986e9b3c16efa170b2bb4fe2af05a30b9386b3 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Rui Matos <tiagomatos@gmail.com> |
||||||
|
Date: Mon, 9 Oct 2017 18:37:11 +0200 |
||||||
|
Subject: [PATCH 1/4] backends/x11: Fix a small memory leak |
||||||
|
|
||||||
|
Introduced in "backends/x11: Support synaptics configuration". |
||||||
|
--- |
||||||
|
src/backends/x11/meta-input-settings-x11.c | 1 + |
||||||
|
1 file changed, 1 insertion(+) |
||||||
|
|
||||||
|
diff --git a/src/backends/x11/meta-input-settings-x11.c b/src/backends/x11/meta-input-settings-x11.c |
||||||
|
index 467a9b7..27995c8 100644 |
||||||
|
--- a/src/backends/x11/meta-input-settings-x11.c |
||||||
|
+++ b/src/backends/x11/meta-input-settings-x11.c |
||||||
|
@@ -222,6 +222,7 @@ change_synaptics_tap_left_handed (ClutterInputDevice *device, |
||||||
|
buttons[0] = left_handed ? 3 : 1; |
||||||
|
buttons[2] = left_handed ? 1 : 3; |
||||||
|
XSetDeviceButtonMapping (xdisplay, xdevice, buttons, n_buttons); |
||||||
|
+ g_free (buttons); |
||||||
|
|
||||||
|
if (display && meta_error_trap_pop_with_return (display)) |
||||||
|
{ |
||||||
|
-- |
||||||
|
1.8.3.1 |
||||||
|
|
||||||
|
|
||||||
|
From c3f4dc97cdb4f1b63e43e38daf02e676d207ad37 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Rui Matos <tiagomatos@gmail.com> |
||||||
|
Date: Mon, 9 Oct 2017 18:39:52 +0200 |
||||||
|
Subject: [PATCH 2/4] backends/x11: Add a synaptics check for two finger scroll |
||||||
|
availability |
||||||
|
|
||||||
|
Commit "backends/x11: Support synaptics configuration" added support |
||||||
|
for synaptics two finger scrolling but didn't add the code to check |
||||||
|
that it is available resulting in the upper layer always assuming it |
||||||
|
isn't. |
||||||
|
--- |
||||||
|
src/backends/x11/meta-input-settings-x11.c | 11 +++++++++++ |
||||||
|
1 file changed, 11 insertions(+) |
||||||
|
|
||||||
|
diff --git a/src/backends/x11/meta-input-settings-x11.c b/src/backends/x11/meta-input-settings-x11.c |
||||||
|
index 27995c8..4c2709c 100644 |
||||||
|
--- a/src/backends/x11/meta-input-settings-x11.c |
||||||
|
+++ b/src/backends/x11/meta-input-settings-x11.c |
||||||
|
@@ -621,6 +621,17 @@ meta_input_settings_x11_has_two_finger_scroll (MetaInputSettings *settings, |
||||||
|
guchar *available = NULL; |
||||||
|
gboolean has_two_finger = TRUE; |
||||||
|
|
||||||
|
+ if (is_device_synaptics (device)) |
||||||
|
+ { |
||||||
|
+ available = get_property (device, "Synaptics Capabilities", |
||||||
|
+ XA_INTEGER, 8, 4); |
||||||
|
+ if (!available || !available[3]) |
||||||
|
+ has_two_finger = FALSE; |
||||||
|
+ |
||||||
|
+ meta_XFree (available); |
||||||
|
+ return has_two_finger; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
available = get_property (device, "libinput Scroll Methods Available", |
||||||
|
XA_INTEGER, 8, SCROLL_METHOD_NUM_FIELDS); |
||||||
|
if (!available || !available[SCROLL_METHOD_FIELD_2FG]) |
||||||
|
-- |
||||||
|
1.8.3.1 |
||||||
|
|
||||||
|
|
||||||
|
From fd94f5fd842f0f0f9e4a28e69716a30669e2e848 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Rui Matos <tiagomatos@gmail.com> |
||||||
|
Date: Mon, 9 Oct 2017 18:55:56 +0200 |
||||||
|
Subject: [PATCH 3/4] backends/x11: Add disable while typing support for |
||||||
|
synaptics |
||||||
|
|
||||||
|
This is basically a copy of the old g-s-d mouse plugin code to manage |
||||||
|
syndaemon when the synaptics driver is being used. |
||||||
|
--- |
||||||
|
src/backends/x11/meta-input-settings-x11.c | 112 +++++++++++++++++++++++++++++ |
||||||
|
1 file changed, 112 insertions(+) |
||||||
|
|
||||||
|
diff --git a/src/backends/x11/meta-input-settings-x11.c b/src/backends/x11/meta-input-settings-x11.c |
||||||
|
index 4c2709c..9a85f94 100644 |
||||||
|
--- a/src/backends/x11/meta-input-settings-x11.c |
||||||
|
+++ b/src/backends/x11/meta-input-settings-x11.c |
||||||
|
@@ -35,6 +35,9 @@ |
||||||
|
#ifdef HAVE_LIBGUDEV |
||||||
|
#include <gudev/gudev.h> |
||||||
|
#endif |
||||||
|
+#ifdef __linux |
||||||
|
+#include <sys/prctl.h> |
||||||
|
+#endif |
||||||
|
|
||||||
|
#include <meta/errors.h> |
||||||
|
#include "backends/meta-logical-monitor.h" |
||||||
|
@@ -44,6 +47,8 @@ typedef struct _MetaInputSettingsX11Private |
||||||
|
#ifdef HAVE_LIBGUDEV |
||||||
|
GUdevClient *udev_client; |
||||||
|
#endif |
||||||
|
+ gboolean syndaemon_spawned; |
||||||
|
+ GPid syndaemon_pid; |
||||||
|
} MetaInputSettingsX11Private; |
||||||
|
|
||||||
|
G_DEFINE_TYPE_WITH_PRIVATE (MetaInputSettingsX11, meta_input_settings_x11, |
||||||
|
@@ -328,6 +333,107 @@ change_synaptics_speed (ClutterInputDevice *device, |
||||||
|
XFreeFeedbackList (states); |
||||||
|
} |
||||||
|
|
||||||
|
+/* Ensure that syndaemon dies together with us, to avoid running several of |
||||||
|
+ * them */ |
||||||
|
+static void |
||||||
|
+setup_syndaemon (gpointer user_data) |
||||||
|
+{ |
||||||
|
+#ifdef __linux |
||||||
|
+ prctl (PR_SET_PDEATHSIG, SIGHUP); |
||||||
|
+#endif |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static gboolean |
||||||
|
+have_program_in_path (const char *name) |
||||||
|
+{ |
||||||
|
+ gchar *path; |
||||||
|
+ gboolean result; |
||||||
|
+ |
||||||
|
+ path = g_find_program_in_path (name); |
||||||
|
+ result = (path != NULL); |
||||||
|
+ g_free (path); |
||||||
|
+ return result; |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static void |
||||||
|
+syndaemon_died (GPid pid, |
||||||
|
+ gint status, |
||||||
|
+ gpointer user_data) |
||||||
|
+{ |
||||||
|
+ MetaInputSettingsX11 *settings_x11 = META_INPUT_SETTINGS_X11 (user_data); |
||||||
|
+ MetaInputSettingsX11Private *priv = |
||||||
|
+ meta_input_settings_x11_get_instance_private (settings_x11); |
||||||
|
+ GError *error = NULL; |
||||||
|
+ |
||||||
|
+ if (!g_spawn_check_exit_status (status, &error)) |
||||||
|
+ { |
||||||
|
+ if ((WIFSIGNALED (status) && WTERMSIG (status) != SIGHUP) || |
||||||
|
+ error->domain == G_SPAWN_EXIT_ERROR) |
||||||
|
+ g_warning ("Syndaemon exited unexpectedly: %s", error->message); |
||||||
|
+ g_error_free (error); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ g_spawn_close_pid (pid); |
||||||
|
+ priv->syndaemon_spawned = FALSE; |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static void |
||||||
|
+set_synaptics_disable_w_typing (MetaInputSettings *settings, |
||||||
|
+ gboolean state) |
||||||
|
+{ |
||||||
|
+ MetaInputSettingsX11 *settings_x11 = META_INPUT_SETTINGS_X11 (settings); |
||||||
|
+ MetaInputSettingsX11Private *priv = |
||||||
|
+ meta_input_settings_x11_get_instance_private (settings_x11); |
||||||
|
+ |
||||||
|
+ if (state) |
||||||
|
+ { |
||||||
|
+ GError *error = NULL; |
||||||
|
+ GPtrArray *args; |
||||||
|
+ |
||||||
|
+ if (priv->syndaemon_spawned) |
||||||
|
+ return; |
||||||
|
+ |
||||||
|
+ if (!have_program_in_path ("syndaemon")) |
||||||
|
+ return; |
||||||
|
+ |
||||||
|
+ args = g_ptr_array_new (); |
||||||
|
+ |
||||||
|
+ g_ptr_array_add (args, "syndaemon"); |
||||||
|
+ g_ptr_array_add (args, "-i"); |
||||||
|
+ g_ptr_array_add (args, "1.0"); |
||||||
|
+ g_ptr_array_add (args, "-t"); |
||||||
|
+ g_ptr_array_add (args, "-K"); |
||||||
|
+ g_ptr_array_add (args, "-R"); |
||||||
|
+ g_ptr_array_add (args, NULL); |
||||||
|
+ |
||||||
|
+ /* we must use G_SPAWN_DO_NOT_REAP_CHILD to avoid |
||||||
|
+ * double-forking, otherwise syndaemon will immediately get |
||||||
|
+ * killed again through (PR_SET_PDEATHSIG when the intermediate |
||||||
|
+ * process dies */ |
||||||
|
+ g_spawn_async (g_get_home_dir (), (char **) args->pdata, NULL, |
||||||
|
+ G_SPAWN_SEARCH_PATH|G_SPAWN_DO_NOT_REAP_CHILD, setup_syndaemon, NULL, |
||||||
|
+ &priv->syndaemon_pid, &error); |
||||||
|
+ |
||||||
|
+ priv->syndaemon_spawned = (error == NULL); |
||||||
|
+ g_ptr_array_free (args, TRUE); |
||||||
|
+ |
||||||
|
+ if (error) |
||||||
|
+ { |
||||||
|
+ g_warning ("Failed to launch syndaemon: %s", error->message); |
||||||
|
+ g_error_free (error); |
||||||
|
+ } |
||||||
|
+ else |
||||||
|
+ { |
||||||
|
+ g_child_watch_add (priv->syndaemon_pid, syndaemon_died, settings); |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ else if (priv->syndaemon_spawned) |
||||||
|
+ { |
||||||
|
+ kill (priv->syndaemon_pid, SIGHUP); |
||||||
|
+ priv->syndaemon_spawned = FALSE; |
||||||
|
+ } |
||||||
|
+} |
||||||
|
+ |
||||||
|
static void |
||||||
|
meta_input_settings_x11_set_send_events (MetaInputSettings *settings, |
||||||
|
ClutterInputDevice *device, |
||||||
|
@@ -452,6 +558,12 @@ meta_input_settings_x11_set_disable_while_typing (MetaInputSettings *settings, |
||||||
|
{ |
||||||
|
guchar value = (enabled) ? 1 : 0; |
||||||
|
|
||||||
|
+ if (is_device_synaptics (device)) |
||||||
|
+ { |
||||||
|
+ set_synaptics_disable_w_typing (settings, enabled); |
||||||
|
+ return; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
change_property (device, "libinput Disable While Typing Enabled", |
||||||
|
XA_INTEGER, 8, &value, 1); |
||||||
|
} |
||||||
|
-- |
||||||
|
1.8.3.1 |
||||||
|
|
||||||
|
|
||||||
|
From f5f9195fe23c0af8a498a13ca6bc5521a0c9e6ce Mon Sep 17 00:00:00 2001 |
||||||
|
From: Rui Matos <tiagomatos@gmail.com> |
||||||
|
Date: Tue, 10 Oct 2017 19:07:27 +0200 |
||||||
|
Subject: [PATCH 4/4] backends/x11: Support plain old X device configuration |
||||||
|
|
||||||
|
We re-use part of the code added to support synaptics and add a few |
||||||
|
bits specific for xorg-x11-drv-evdev devices. |
||||||
|
--- |
||||||
|
src/backends/x11/meta-input-settings-x11.c | 96 +++++++++++++++++++++++------- |
||||||
|
1 file changed, 74 insertions(+), 22 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/backends/x11/meta-input-settings-x11.c b/src/backends/x11/meta-input-settings-x11.c |
||||||
|
index 9a85f94..cb4eb00 100644 |
||||||
|
--- a/src/backends/x11/meta-input-settings-x11.c |
||||||
|
+++ b/src/backends/x11/meta-input-settings-x11.c |
||||||
|
@@ -179,35 +179,35 @@ is_device_synaptics (ClutterInputDevice *device) |
||||||
|
return TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
+static gboolean |
||||||
|
+is_device_libinput (ClutterInputDevice *device) |
||||||
|
+{ |
||||||
|
+ guchar *has_setting; |
||||||
|
+ |
||||||
|
+ /* We just need looking for a synaptics-specific property */ |
||||||
|
+ has_setting = get_property (device, "libinput Send Events Modes Available", XA_INTEGER, 8, 2); |
||||||
|
+ if (!has_setting) |
||||||
|
+ return FALSE; |
||||||
|
+ |
||||||
|
+ meta_XFree (has_setting); |
||||||
|
+ return TRUE; |
||||||
|
+} |
||||||
|
+ |
||||||
|
static void |
||||||
|
-change_synaptics_tap_left_handed (ClutterInputDevice *device, |
||||||
|
- gboolean tap_enabled, |
||||||
|
- gboolean left_handed) |
||||||
|
+change_x_device_left_handed (ClutterInputDevice *device, |
||||||
|
+ gboolean left_handed) |
||||||
|
{ |
||||||
|
MetaDisplay *display = meta_get_display (); |
||||||
|
MetaBackend *backend = meta_get_backend (); |
||||||
|
Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend)); |
||||||
|
XDevice *xdevice; |
||||||
|
- guchar *tap_action, *buttons; |
||||||
|
+ guchar *buttons; |
||||||
|
guint buttons_capacity = 16, n_buttons; |
||||||
|
|
||||||
|
xdevice = device_ensure_xdevice (device); |
||||||
|
if (!xdevice) |
||||||
|
return; |
||||||
|
|
||||||
|
- tap_action = get_property (device, "Synaptics Tap Action", |
||||||
|
- XA_INTEGER, 8, 7); |
||||||
|
- if (!tap_action) |
||||||
|
- return; |
||||||
|
- |
||||||
|
- tap_action[4] = tap_enabled ? (left_handed ? 3 : 1) : 0; |
||||||
|
- tap_action[5] = tap_enabled ? (left_handed ? 1 : 3) : 0; |
||||||
|
- tap_action[6] = tap_enabled ? 2 : 0; |
||||||
|
- |
||||||
|
- change_property (device, "Synaptics Tap Action", |
||||||
|
- XA_INTEGER, 8, tap_action, 7); |
||||||
|
- meta_XFree (tap_action); |
||||||
|
- |
||||||
|
if (display) |
||||||
|
meta_error_trap_push (display); |
||||||
|
buttons = g_new (guchar, buttons_capacity); |
||||||
|
@@ -231,14 +231,37 @@ change_synaptics_tap_left_handed (ClutterInputDevice *device, |
||||||
|
|
||||||
|
if (display && meta_error_trap_pop_with_return (display)) |
||||||
|
{ |
||||||
|
- g_warning ("Could not set synaptics touchpad left-handed for %s", |
||||||
|
+ g_warning ("Could not set left-handed for %s", |
||||||
|
clutter_input_device_get_device_name (device)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
static void |
||||||
|
-change_synaptics_speed (ClutterInputDevice *device, |
||||||
|
- gdouble speed) |
||||||
|
+change_synaptics_tap_left_handed (ClutterInputDevice *device, |
||||||
|
+ gboolean tap_enabled, |
||||||
|
+ gboolean left_handed) |
||||||
|
+{ |
||||||
|
+ guchar *tap_action; |
||||||
|
+ |
||||||
|
+ tap_action = get_property (device, "Synaptics Tap Action", |
||||||
|
+ XA_INTEGER, 8, 7); |
||||||
|
+ if (!tap_action) |
||||||
|
+ return; |
||||||
|
+ |
||||||
|
+ tap_action[4] = tap_enabled ? (left_handed ? 3 : 1) : 0; |
||||||
|
+ tap_action[5] = tap_enabled ? (left_handed ? 1 : 3) : 0; |
||||||
|
+ tap_action[6] = tap_enabled ? 2 : 0; |
||||||
|
+ |
||||||
|
+ change_property (device, "Synaptics Tap Action", |
||||||
|
+ XA_INTEGER, 8, tap_action, 7); |
||||||
|
+ meta_XFree (tap_action); |
||||||
|
+ |
||||||
|
+ change_x_device_left_handed (device, left_handed); |
||||||
|
+} |
||||||
|
+ |
||||||
|
+static void |
||||||
|
+change_x_device_speed (ClutterInputDevice *device, |
||||||
|
+ gdouble speed) |
||||||
|
{ |
||||||
|
MetaDisplay *display = meta_get_display (); |
||||||
|
MetaBackend *backend = meta_get_backend (); |
||||||
|
@@ -333,6 +356,23 @@ change_synaptics_speed (ClutterInputDevice *device, |
||||||
|
XFreeFeedbackList (states); |
||||||
|
} |
||||||
|
|
||||||
|
+static void |
||||||
|
+change_x_device_scroll_button (ClutterInputDevice *device, |
||||||
|
+ guint button) |
||||||
|
+{ |
||||||
|
+ guchar value; |
||||||
|
+ |
||||||
|
+ value = button > 0 ? 1 : 0; |
||||||
|
+ change_property (device, "Evdev Wheel Emulation", |
||||||
|
+ XA_INTEGER, 8, &value, 1); |
||||||
|
+ if (button > 0) |
||||||
|
+ { |
||||||
|
+ value = button; |
||||||
|
+ change_property (device, "Evdev Wheel Emulation Button", |
||||||
|
+ XA_INTEGER, 8, &value, 1); |
||||||
|
+ } |
||||||
|
+} |
||||||
|
+ |
||||||
|
/* Ensure that syndaemon dies together with us, to avoid running several of |
||||||
|
* them */ |
||||||
|
static void |
||||||
|
@@ -501,9 +541,10 @@ meta_input_settings_x11_set_speed (MetaInputSettings *settings, |
||||||
|
Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend)); |
||||||
|
gfloat value = speed; |
||||||
|
|
||||||
|
- if (is_device_synaptics (device)) |
||||||
|
+ if (is_device_synaptics (device) || |
||||||
|
+ !is_device_libinput (device)) |
||||||
|
{ |
||||||
|
- change_synaptics_speed (device, speed); |
||||||
|
+ change_x_device_speed (device, speed); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
@@ -545,6 +586,11 @@ meta_input_settings_x11_set_left_handed (MetaInputSettings *settings, |
||||||
|
g_object_unref (settings); |
||||||
|
return; |
||||||
|
} |
||||||
|
+ else if (!is_device_libinput (device)) |
||||||
|
+ { |
||||||
|
+ change_x_device_left_handed (device, enabled); |
||||||
|
+ return; |
||||||
|
+ } |
||||||
|
|
||||||
|
change_property (device, "libinput Left Handed Enabled", |
||||||
|
XA_INTEGER, 8, &value, 1); |
||||||
|
@@ -758,6 +804,12 @@ meta_input_settings_x11_set_scroll_button (MetaInputSettings *settings, |
||||||
|
ClutterInputDevice *device, |
||||||
|
guint button) |
||||||
|
{ |
||||||
|
+ if (!is_device_libinput (device)) |
||||||
|
+ { |
||||||
|
+ change_x_device_scroll_button (device, button); |
||||||
|
+ return; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
change_property (device, "libinput Button Scrolling Button", |
||||||
|
XA_INTEGER, 32, &button, 1); |
||||||
|
} |
||||||
|
-- |
||||||
|
1.8.3.1 |
||||||
|
|
@ -0,0 +1,85 @@ |
|||||||
|
From 547af942e6a0586208dbc3f158a7ec2c14611ff8 Mon Sep 17 00:00:00 2001 |
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org> |
||||||
|
Date: Wed, 12 Mar 2014 02:04:13 +0100 |
||||||
|
Subject: [PATCH 1/8] constraints: Enforce X11 size limits |
||||||
|
|
||||||
|
X11 limits windows to a maximum of 32767x32767, enforce that restriction |
||||||
|
to keep insanely huge windows from crashing the WM. |
||||||
|
--- |
||||||
|
src/core/constraints.c | 42 ++++++++++++++++++++++++++++++++++++++++++ |
||||||
|
1 file changed, 42 insertions(+) |
||||||
|
|
||||||
|
diff --git a/src/core/constraints.c b/src/core/constraints.c |
||||||
|
index f5360ef9d..3b6203d6b 100644 |
||||||
|
--- a/src/core/constraints.c |
||||||
|
+++ b/src/core/constraints.c |
||||||
|
@@ -106,6 +106,7 @@ typedef enum |
||||||
|
PRIORITY_TITLEBAR_VISIBLE = 4, |
||||||
|
PRIORITY_PARTIALLY_VISIBLE_ON_WORKAREA = 4, |
||||||
|
PRIORITY_CUSTOM_RULE = 4, |
||||||
|
+ PRIORITY_XLIMITS = 4, |
||||||
|
PRIORITY_MAXIMUM = 4 /* Dummy value used for loop end = max(all priorities) */ |
||||||
|
} ConstraintPriority; |
||||||
|
|
||||||
|
@@ -196,6 +197,10 @@ static gboolean constrain_partially_onscreen (MetaWindow *window, |
||||||
|
ConstraintInfo *info, |
||||||
|
ConstraintPriority priority, |
||||||
|
gboolean check_only); |
||||||
|
+static gboolean constrain_xlimits (MetaWindow *window, |
||||||
|
+ ConstraintInfo *info, |
||||||
|
+ ConstraintPriority priority, |
||||||
|
+ gboolean check_only); |
||||||
|
|
||||||
|
static void setup_constraint_info (ConstraintInfo *info, |
||||||
|
MetaWindow *window, |
||||||
|
@@ -231,6 +236,7 @@ static const Constraint all_constraints[] = { |
||||||
|
{constrain_fully_onscreen, "constrain_fully_onscreen"}, |
||||||
|
{constrain_titlebar_visible, "constrain_titlebar_visible"}, |
||||||
|
{constrain_partially_onscreen, "constrain_partially_onscreen"}, |
||||||
|
+ {constrain_xlimits, "constrain_xlimits"}, |
||||||
|
{NULL, NULL} |
||||||
|
}; |
||||||
|
|
||||||
|
@@ -1674,3 +1680,39 @@ constrain_partially_onscreen (MetaWindow *window, |
||||||
|
|
||||||
|
return retval; |
||||||
|
} |
||||||
|
+ |
||||||
|
+ |
||||||
|
+#define MAX_WINDOW_SIZE 32767 |
||||||
|
+ |
||||||
|
+static gboolean |
||||||
|
+constrain_xlimits (MetaWindow *window, |
||||||
|
+ ConstraintInfo *info, |
||||||
|
+ ConstraintPriority priority, |
||||||
|
+ gboolean check_only) |
||||||
|
+{ |
||||||
|
+ int max_w, max_h; |
||||||
|
+ gboolean constraint_already_satisfied; |
||||||
|
+ |
||||||
|
+ if (priority > PRIORITY_XLIMITS) |
||||||
|
+ return TRUE; |
||||||
|
+ |
||||||
|
+ max_w = max_h = MAX_WINDOW_SIZE; |
||||||
|
+ |
||||||
|
+ if (window->frame) |
||||||
|
+ { |
||||||
|
+ MetaFrameBorders borders; |
||||||
|
+ meta_frame_calc_borders (window->frame, &borders); |
||||||
|
+ |
||||||
|
+ max_w -= (borders.total.left + borders.total.right); |
||||||
|
+ max_h -= (borders.total.top + borders.total.bottom); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ constraint_already_satisfied = info->current.width < max_w && info->current.height < max_h; |
||||||
|
+ if (check_only || constraint_already_satisfied) |
||||||
|
+ return constraint_already_satisfied; |
||||||
|
+ |
||||||
|
+ info->current.width = MIN (info->current.width, max_w); |
||||||
|
+ info->current.height = MIN (info->current.height, max_h); |
||||||
|
+ |
||||||
|
+ return TRUE; |
||||||
|
+} |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,92 @@ |
|||||||
|
From 0c9cb02111908409285991e4b0f44a4fdcf91eed Mon Sep 17 00:00:00 2001 |
||||||
|
From: Olivier Fourdan <ofourdan@redhat.com> |
||||||
|
Date: Tue, 23 Jan 2018 11:43:09 +0100 |
||||||
|
Subject: [PATCH 1/2] session: use initial workspace if no workspace set |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Type: text/plain; charset=UTF-8 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
|
||||||
|
Having “on_all_workspaces_requested” FALSE on a window does not imply a |
||||||
|
workspace is set. |
||||||
|
|
||||||
|
If the X11 window is placed on a secondary monitor while workspaces |
||||||
|
applies on primary monitor only (“workspaces-only-on-primary” set) then |
||||||
|
“on_all_workspaces_requested” is FALSE while “on_all_workspaces“ is TRUE |
||||||
|
and the associated workspace is NULL, leading to a crash when saving the |
||||||
|
gnome-shell/mutter session. |
||||||
|
|
||||||
|
So if no workspace is set, use the “initial_workspace” instead to avoid |
||||||
|
a NULL pointer dereference. |
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=792818 |
||||||
|
--- |
||||||
|
src/x11/session.c | 5 ++++- |
||||||
|
1 file changed, 4 insertions(+), 1 deletion(-) |
||||||
|
|
||||||
|
diff --git a/src/x11/session.c b/src/x11/session.c |
||||||
|
index af64270a6..8b2a89f1c 100644 |
||||||
|
--- a/src/x11/session.c |
||||||
|
+++ b/src/x11/session.c |
||||||
|
@@ -950,7 +950,10 @@ save_state (void) |
||||||
|
fputs (" <sticky/>\n", outfile); |
||||||
|
} else { |
||||||
|
int n; |
||||||
|
- n = meta_workspace_index (window->workspace); |
||||||
|
+ if (window->workspace) |
||||||
|
+ n = meta_workspace_index (window->workspace); |
||||||
|
+ else |
||||||
|
+ n = window->initial_workspace; |
||||||
|
fprintf (outfile, |
||||||
|
" <workspace index=\"%d\"/>\n", n); |
||||||
|
} |
||||||
|
-- |
||||||
|
2.14.3 |
||||||
|
|
||||||
|
|
||||||
|
From e2269448dcebd24f23bb8872590204819abc3ac0 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Olivier Fourdan <ofourdan@redhat.com> |
||||||
|
Date: Mon, 29 Jan 2018 16:58:46 +0100 |
||||||
|
Subject: [PATCH 2/2] =?UTF-8?q?x11/window:=20Mark=20restored=20workspace?= |
||||||
|
=?UTF-8?q?=20as=20=E2=80=9Cset=E2=80=9D?= |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Type: text/plain; charset=UTF-8 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
|
||||||
|
When a window's workspace is not NULL, on_all_workspace should be FALSE. |
||||||
|
Similarly, when on_all_workspace is TRUE, the window workspace should be |
||||||
|
NULL. |
||||||
|
|
||||||
|
This is an assumption in multiple places in the code, including when |
||||||
|
setting the workspace state, the window is either added or removed from |
||||||
|
all workspaces only if the window's workspace is NULL. |
||||||
|
|
||||||
|
This rule is initially enforced at creation in _meta_window_shared_new() |
||||||
|
when a initial workspace is set. However, when the initial workspace is |
||||||
|
set from the session info, the initial workspace is not marked as “set” |
||||||
|
which leads to an assertion failure when unmanaging windows, because the |
||||||
|
window is not removed from all the workspaces. |
||||||
|
|
||||||
|
When applying the session info to a window, mark the workspace as “set”. |
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/mutter/issues/4 |
||||||
|
|
||||||
|
Closes: #4 |
||||||
|
--- |
||||||
|
src/x11/window-x11.c | 1 + |
||||||
|
1 file changed, 1 insertion(+) |
||||||
|
|
||||||
|
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c |
||||||
|
index 36a5e70a3..9c8ef5d75 100644 |
||||||
|
--- a/src/x11/window-x11.c |
||||||
|
+++ b/src/x11/window-x11.c |
||||||
|
@@ -466,6 +466,7 @@ meta_window_apply_session_info (MetaWindow *window, |
||||||
|
MetaWorkspace *workspace = spaces->data; |
||||||
|
|
||||||
|
meta_window_change_workspace (window, workspace); |
||||||
|
+ window->initial_workspace_set = TRUE; |
||||||
|
|
||||||
|
meta_topic (META_DEBUG_SM, |
||||||
|
"Restoring saved window %s to workspace %d\n", |
||||||
|
-- |
||||||
|
2.14.3 |
||||||
|
|
@ -0,0 +1,12 @@ |
|||||||
|
diff -up mutter-3.26.0/src/backends/native/meta-launcher.c.hybrid mutter-3.26.0/src/backends/native/meta-launcher.c |
||||||
|
--- mutter-3.26.0/src/backends/native/meta-launcher.c.hybrid 2017-09-18 15:55:56.673262947 +0100 |
||||||
|
+++ mutter-3.26.0/src/backends/native/meta-launcher.c 2017-09-18 15:56:21.383167768 +0100 |
||||||
|
@@ -363,7 +363,7 @@ get_primary_gpu_path (const gchar *seat_ |
||||||
|
guint num_devices; |
||||||
|
|
||||||
|
num_devices = count_devices_with_connectors (seat_name, devices); |
||||||
|
- if (num_devices != 1) |
||||||
|
+ if (num_devices > 1) |
||||||
|
goto out; |
||||||
|
} |
||||||
|
|
@ -0,0 +1,160 @@ |
|||||||
|
From 702f204a281c6525da6bfcd2286d70b1ab6eab13 Mon Sep 17 00:00:00 2001 |
||||||
|
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com> |
||||||
|
Date: Fri, 3 Nov 2017 15:58:02 +0800 |
||||||
|
Subject: [PATCH 1/4] monitor-config-manager: Don't include closed laptop panel |
||||||
|
in config key |
||||||
|
|
||||||
|
When deriving the list of disabled monitors when creating new monitors |
||||||
|
configs, don't include the laptop panel if the lid is currently closed, |
||||||
|
as we consider the laptop panel nonexistent when the laptop lid is |
||||||
|
closed when it comes to configuration. |
||||||
|
|
||||||
|
The laptop panel connector(s) will either way be appropriately disabled |
||||||
|
anyway, as the field listing disabled monitors in the configuration do |
||||||
|
not affect actual CRTC/connector assignments. |
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=788915 |
||||||
|
--- |
||||||
|
src/backends/meta-monitor-config-manager.c | 4 ++++ |
||||||
|
1 file changed, 4 insertions(+) |
||||||
|
|
||||||
|
diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c |
||||||
|
index 2fe620767..2a7287778 100644 |
||||||
|
--- a/src/backends/meta-monitor-config-manager.c |
||||||
|
+++ b/src/backends/meta-monitor-config-manager.c |
||||||
|
@@ -1308,6 +1308,10 @@ meta_monitors_config_new (MetaMonitorManager *monitor_manager, |
||||||
|
MetaMonitor *monitor = l->data; |
||||||
|
MetaMonitorSpec *monitor_spec; |
||||||
|
|
||||||
|
+ if (meta_monitor_manager_is_lid_closed (monitor_manager) && |
||||||
|
+ meta_monitor_is_laptop_panel (monitor)) |
||||||
|
+ continue; |
||||||
|
+ |
||||||
|
monitor_spec = meta_monitor_get_spec (monitor); |
||||||
|
if (meta_logical_monitor_configs_have_monitor (logical_monitor_configs, |
||||||
|
monitor_spec)) |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
||||||
|
From 584e2b93d9f28557cfe8a6ff720b4c3e45c458ab Mon Sep 17 00:00:00 2001 |
||||||
|
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com> |
||||||
|
Date: Fri, 3 Nov 2017 16:03:23 +0800 |
||||||
|
Subject: [PATCH 2/4] monitor-manager: Compare keys when checking whether a |
||||||
|
config is complete |
||||||
|
|
||||||
|
We only counted configured monitors and whether the config was |
||||||
|
applicable (could be assigned), howeverwe didn't include disabled |
||||||
|
monitors when comparing. This could caused incorrect configurations to |
||||||
|
be applied when trying to use the previous configuration. |
||||||
|
|
||||||
|
One scenario where this happened was one a system with one laptop |
||||||
|
screen and one external monitor that was hot plugged some point after |
||||||
|
start up. When the laptop lid was closed, the 'previous configuration' |
||||||
|
being the configuration where only the laptop panel was enabled, passed |
||||||
|
'is-complete' check as the number of configured monitors were correct, |
||||||
|
and the configuration was applicable. |
||||||
|
|
||||||
|
Avoid this issue by simply comparing the configuration key of the |
||||||
|
previous configuration and the configuration key of the current state. |
||||||
|
This correctly identifies a laptop panel with the lid closed as |
||||||
|
inaccessible, thus doesn't incorrectly revert to the previous |
||||||
|
configuration. |
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=788915 |
||||||
|
--- |
||||||
|
src/backends/meta-monitor-config-manager.c | 7 +++--- |
||||||
|
src/backends/meta-monitor-config-manager.h | 2 ++ |
||||||
|
src/backends/meta-monitor-manager.c | 36 +++++++++--------------------- |
||||||
|
3 files changed, 16 insertions(+), 29 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c |
||||||
|
index 2a7287778..bdf863055 100644 |
||||||
|
--- a/src/backends/meta-monitor-config-manager.c |
||||||
|
+++ b/src/backends/meta-monitor-config-manager.c |
||||||
|
@@ -326,8 +326,8 @@ meta_monitor_config_manager_assign (MetaMonitorManager *manager, |
||||||
|
return TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
-static MetaMonitorsConfigKey * |
||||||
|
-create_key_for_current_state (MetaMonitorManager *monitor_manager) |
||||||
|
+MetaMonitorsConfigKey * |
||||||
|
+meta_create_monitors_config_key_for_current_state (MetaMonitorManager *monitor_manager) |
||||||
|
{ |
||||||
|
MetaMonitorsConfigKey *config_key; |
||||||
|
GList *l; |
||||||
|
@@ -369,7 +369,8 @@ meta_monitor_config_manager_get_stored (MetaMonitorConfigManager *config_manager |
||||||
|
MetaMonitorsConfig *config; |
||||||
|
GError *error = NULL; |
||||||
|
|
||||||
|
- config_key = create_key_for_current_state (monitor_manager); |
||||||
|
+ config_key = |
||||||
|
+ meta_create_monitors_config_key_for_current_state (monitor_manager); |
||||||
|
if (!config_key) |
||||||
|
return NULL; |
||||||
|
|
||||||
|
diff --git a/src/backends/meta-monitor-config-manager.h b/src/backends/meta-monitor-config-manager.h |
||||||
|
index 516909dd7..c36df38e6 100644 |
||||||
|
--- a/src/backends/meta-monitor-config-manager.h |
||||||
|
+++ b/src/backends/meta-monitor-config-manager.h |
||||||
|
@@ -136,6 +136,8 @@ void meta_logical_monitor_config_free (MetaLogicalMonitorConfig *logical_monitor |
||||||
|
|
||||||
|
void meta_monitor_config_free (MetaMonitorConfig *monitor_config); |
||||||
|
|
||||||
|
+MetaMonitorsConfigKey * meta_create_monitors_config_key_for_current_state (MetaMonitorManager *monitor_manager); |
||||||
|
+ |
||||||
|
gboolean meta_logical_monitor_configs_have_monitor (GList *logical_monitor_configs, |
||||||
|
MetaMonitorSpec *monitor_spec); |
||||||
|
|
||||||
|
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c |
||||||
|
index 8b548fd68..eb3612cf0 100644 |
||||||
|
--- a/src/backends/meta-monitor-manager.c |
||||||
|
+++ b/src/backends/meta-monitor-manager.c |
||||||
|
@@ -1551,35 +1551,19 @@ static gboolean |
||||||
|
meta_monitor_manager_is_config_complete (MetaMonitorManager *manager, |
||||||
|
MetaMonitorsConfig *config) |
||||||
|
{ |
||||||
|
- GList *l; |
||||||
|
- unsigned int configured_monitor_count = 0; |
||||||
|
- unsigned int expected_monitor_count = 0; |
||||||
|
- |
||||||
|
- for (l = config->logical_monitor_configs; l; l = l->next) |
||||||
|
- { |
||||||
|
- MetaLogicalMonitorConfig *logical_monitor_config = l->data; |
||||||
|
- GList *k; |
||||||
|
+ MetaMonitorsConfigKey *current_state_key; |
||||||
|
+ gboolean is_config_complete; |
||||||
|
|
||||||
|
- for (k = logical_monitor_config->monitor_configs; k; k = k->next) |
||||||
|
- configured_monitor_count++; |
||||||
|
- } |
||||||
|
- |
||||||
|
- for (l = manager->monitors; l; l = l->next) |
||||||
|
- { |
||||||
|
- MetaMonitor *monitor = l->data; |
||||||
|
+ current_state_key = |
||||||
|
+ meta_create_monitors_config_key_for_current_state (manager); |
||||||
|
+ if (!current_state_key) |
||||||
|
+ return FALSE; |
||||||
|
|
||||||
|
- if (meta_monitor_is_laptop_panel (monitor)) |
||||||
|
- { |
||||||
|
- if (!meta_monitor_manager_is_lid_closed (manager)) |
||||||
|
- expected_monitor_count++; |
||||||
|
- } |
||||||
|
- else |
||||||
|
- { |
||||||
|
- expected_monitor_count++; |
||||||
|
- } |
||||||
|
- } |
||||||
|
+ is_config_complete = meta_monitors_config_key_equal (current_state_key, |
||||||
|
+ config->key); |
||||||
|
+ meta_monitors_config_key_free (current_state_key); |
||||||
|
|
||||||
|
- if (configured_monitor_count != expected_monitor_count) |
||||||
|
+ if (!is_config_complete) |
||||||
|
return FALSE; |
||||||
|
|
||||||
|
return meta_monitor_manager_is_config_applicable (manager, config, NULL); |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,45 @@ |
|||||||
|
From 4ed430b4ef3013c96fa56cdc57b925b42d20ead9 Mon Sep 17 00:00:00 2001 |
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org> |
||||||
|
Date: Thu, 20 Oct 2016 18:00:04 +0200 |
||||||
|
Subject: [PATCH] gtk-shell: Work around non-working startup notifications |
||||||
|
|
||||||
|
GNOME Shell relies on the MetaScreen::startup-sequence-changed signal, |
||||||
|
which is tied to (lib)startup-notification and therefore X11. As a result, |
||||||
|
when we remove the startup sequence of a wayland client, GNOME Shell will |
||||||
|
not be notified about this until startup-notification's timeout is hit. |
||||||
|
As a temporary stop-gap, go through XWayland even for wayland clients, |
||||||
|
so that the signal is emitted when expected. |
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=768531 |
||||||
|
--- |
||||||
|
src/wayland/meta-wayland-gtk-shell.c | 10 ++++++++++ |
||||||
|
1 file changed, 10 insertions(+) |
||||||
|
|
||||||
|
diff --git a/src/wayland/meta-wayland-gtk-shell.c b/src/wayland/meta-wayland-gtk-shell.c |
||||||
|
index d6e249f..9d1a19e 100644 |
||||||
|
--- a/src/wayland/meta-wayland-gtk-shell.c |
||||||
|
+++ b/src/wayland/meta-wayland-gtk-shell.c |
||||||
|
@@ -219,11 +219,21 @@ gtk_shell_set_startup_id (struct wl_client *client, |
||||||
|
struct wl_resource *resource, |
||||||
|
const char *startup_id) |
||||||
|
{ |
||||||
|
+#if 0 |
||||||
|
MetaDisplay *display; |
||||||
|
|
||||||
|
display = meta_get_display (); |
||||||
|
meta_startup_notification_remove_sequence (display->startup_notification, |
||||||
|
startup_id); |
||||||
|
+#else |
||||||
|
+ /* HACK: MetaScreen::startup-sequence-changed is currently tied to |
||||||
|
+ (lib)startup-notification, which means it only works on X11; |
||||||
|
+ so for now, always go through XWayland, even for wayland clients */ |
||||||
|
+ gdk_x11_display_broadcast_startup_message (gdk_display_get_default (), |
||||||
|
+ "remove", |
||||||
|
+ "ID", startup_id, |
||||||
|
+ NULL); |
||||||
|
+#endif |
||||||
|
} |
||||||
|
|
||||||
|
static void |
||||||
|
-- |
||||||
|
2.9.3 |
@ -0,0 +1,845 @@ |
|||||||
|
%global gtk3_version 3.19.8 |
||||||
|
%global glib_version 2.53.2 |
||||||
|
%global gsettings_desktop_schemas_version 3.21.4 |
||||||
|
%global json_glib_version 0.12.0 |
||||||
|
%global libinput_version 1.4 |
||||||
|
%global wayland_protocols_version 1.9.0 |
||||||
|
|
||||||
|
%ifarch s390 s390x |
||||||
|
%global disable_wayland --disable-wayland-egl-server --disable-wayland --disable-native-backend |
||||||
|
%endif |
||||||
|
|
||||||
|
Name: mutter |
||||||
|
Version: 3.26.2 |
||||||
|
Release: 13%{?dist} |
||||||
|
Summary: Window and compositing manager based on Clutter |
||||||
|
|
||||||
|
License: GPLv2+ |
||||||
|
#VCS: git:git://git.gnome.org/mutter |
||||||
|
URL: http://www.gnome.org |
||||||
|
Source0: http://download.gnome.org/sources/%{name}/3.26/%{name}-%{version}.tar.xz |
||||||
|
|
||||||
|
Patch0: startup-notification.patch |
||||||
|
|
||||||
|
Patch1: deal-more-gracefully-with-oversized-windows.patch |
||||||
|
|
||||||
|
Patch2: 0001-monitor-manager-xrandr-Work-around-spurious-hotplugs.patch |
||||||
|
Patch3: 0001-monitor-manager-xrandr-Force-an-update-when-resuming.patch |
||||||
|
Patch4: 0001-monitor-manager-Consider-external-layout-before-defa.patch |
||||||
|
|
||||||
|
Patch5: 0001-events-Don-t-move-sloppy-focus-while-buttons-are-pre.patch |
||||||
|
Patch6: 0001-backends-x11-Support-synaptics-configuration.patch |
||||||
|
|
||||||
|
Patch7: 0001-window-actor-Special-case-shaped-Java-windows.patch |
||||||
|
|
||||||
|
Patch8: 0001-backends-x11-Preserve-XI1-XDevice-throughout-Clutter.patch |
||||||
|
Patch9: 0001-clutter-Extend-touchpad-device-property-check-for-Sy.patch |
||||||
|
Patch10: 0001-backends-x11-wacom-pressure-curve-is-a-32-bit-proper.patch |
||||||
|
|
||||||
|
Patch11: 0001-renderer-x11-Enable-GPU-memory-purge-error-extension.patch |
||||||
|
Patch12: 0001-backends-Monitor-changes-in-active-tools-settings.patch |
||||||
|
Patch13: 0001-clutter-x11-Implement-missing-ClutterInputDevice-pad.patch |
||||||
|
|
||||||
|
# http://bugzilla.gnome.org/show_bug.cgi?id=733277 |
||||||
|
Patch20: 0008-Add-support-for-quad-buffer-stereo.patch |
||||||
|
Patch21: 0001-build-Lower-automake-requirement.patch |
||||||
|
|
||||||
|
# el7 patches |
||||||
|
Patch100: 0001-Revert-build-Require-libgudev-232.patch |
||||||
|
Patch101: 0001-rhel7-Fix-build-for-el7.patch |
||||||
|
Patch102: mutter-3.26.0-hybrid-gpus.patch |
||||||
|
Patch103: 0001-wayland-enable-scale-monitor-framebuffer-by-default.patch |
||||||
|
Patch104: add-support-for-plain-old-x-device-configuration.patch |
||||||
|
Patch105: remember-saved-multi-monitor-configuration.patch |
||||||
|
Patch106: 0003-window-wayland-Handle-resizing-when-headless.patch |
||||||
|
Patch107: fix-session-save-crash.patch |
||||||
|
Patch108: 0001-wayland-Do-not-fail-on-stalled-.X11-unix-entries.patch |
||||||
|
Patch109: 0001-main-be-more-aggressive-in-assuming-X11-backend.patch |
||||||
|
|
||||||
|
Patch500: 0001-clutter-stage-don-t-use-deprecated-api.patch |
||||||
|
|
||||||
|
|
||||||
|
BuildRequires: chrpath |
||||||
|
BuildRequires: pango-devel |
||||||
|
BuildRequires: startup-notification-devel |
||||||
|
BuildRequires: gnome-desktop3-devel |
||||||
|
BuildRequires: glib2-devel >= %{glib_version} |
||||||
|
BuildRequires: gtk3-devel >= %{gtk3_version} |
||||||
|
BuildRequires: pkgconfig |
||||||
|
BuildRequires: gobject-introspection-devel >= 1.41.0 |
||||||
|
BuildRequires: libSM-devel |
||||||
|
BuildRequires: libwacom-devel |
||||||
|
BuildRequires: libX11-devel |
||||||
|
BuildRequires: libXdamage-devel |
||||||
|
BuildRequires: libXext-devel |
||||||
|
BuildRequires: libXfixes-devel |
||||||
|
BuildRequires: libXi-devel |
||||||
|
BuildRequires: libXrandr-devel |
||||||
|
BuildRequires: libXrender-devel |
||||||
|
BuildRequires: libXcursor-devel |
||||||
|
BuildRequires: libXcomposite-devel |
||||||
|
BuildRequires: libxcb-devel |
||||||
|
BuildRequires: libxkbcommon-devel |
||||||
|
BuildRequires: libxkbcommon-x11-devel |
||||||
|
BuildRequires: libxkbfile-devel |
||||||
|
BuildRequires: libXtst-devel |
||||||
|
BuildRequires: mesa-libEGL-devel |
||||||
|
BuildRequires: mesa-libGLES-devel |
||||||
|
BuildRequires: mesa-libGL-devel |
||||||
|
BuildRequires: mesa-libgbm-devel |
||||||
|
BuildRequires: pam-devel |
||||||
|
BuildRequires: upower-devel |
||||||
|
BuildRequires: xkeyboard-config-devel |
||||||
|
BuildRequires: zenity |
||||||
|
BuildRequires: desktop-file-utils |
||||||
|
# Bootstrap requirements |
||||||
|
BuildRequires: gtk-doc gnome-common gettext-devel git |
||||||
|
BuildRequires: libcanberra-devel |
||||||
|
BuildRequires: gsettings-desktop-schemas-devel >= %{gsettings_desktop_schemas_version} |
||||||
|
BuildRequires: automake, autoconf, libtool |
||||||
|
BuildRequires: pkgconfig(gudev-1.0) |
||||||
|
BuildRequires: pkgconfig(libdrm) |
||||||
|
BuildRequires: pkgconfig(gbm) |
||||||
|
BuildRequires: pkgconfig(wayland-server) |
||||||
|
|
||||||
|
BuildRequires: json-glib-devel >= %{json_glib_version} |
||||||
|
BuildRequires: libgudev1-devel |
||||||
|
%ifnarch s390 s390x |
||||||
|
BuildRequires: libwayland-server-devel |
||||||
|
BuildRequires: libinput-devel >= %{libinput_version} |
||||||
|
BuildRequires: wayland-protocols-devel >= %{wayland_protocols_version} |
||||||
|
%endif |
||||||
|
|
||||||
|
Obsoletes: mutter-wayland < 3.13.0 |
||||||
|
Obsoletes: mutter-wayland-devel < 3.13.0 |
||||||
|
|
||||||
|
# Make sure yum updates gnome-shell as well; otherwise we might end up with |
||||||
|
# broken gnome-shell installations due to mutter ABI changes. |
||||||
|
Conflicts: gnome-shell < 3.21.1 |
||||||
|
|
||||||
|
Requires: control-center-filesystem |
||||||
|
Requires: gsettings-desktop-schemas%{?_isa} >= %{gsettings_desktop_schemas_version} |
||||||
|
Requires: gtk3%{?_isa} >= %{gtk3_version} |
||||||
|
Requires: startup-notification |
||||||
|
Requires: dbus-x11 |
||||||
|
Requires: zenity |
||||||
|
|
||||||
|
Requires: json-glib%{?_isa} >= %{json_glib_version} |
||||||
|
|
||||||
|
%ifnarch s390 s390x |
||||||
|
Requires: libinput%{?_isa} >= %{libinput_version} |
||||||
|
%endif |
||||||
|
|
||||||
|
%description |
||||||
|
Mutter is a window and compositing manager that displays and manages |
||||||
|
your desktop via OpenGL. Mutter combines a sophisticated display engine |
||||||
|
using the Clutter toolkit with solid window-management logic inherited |
||||||
|
from the Metacity window manager. |
||||||
|
|
||||||
|
While Mutter can be used stand-alone, it is primarily intended to be |
||||||
|
used as the display core of a larger system such as GNOME Shell. For |
||||||
|
this reason, Mutter is very extensible via plugins, which are used both |
||||||
|
to add fancy visual effects and to rework the window management |
||||||
|
behaviors to meet the needs of the environment. |
||||||
|
|
||||||
|
%package devel |
||||||
|
Summary: Development package for %{name} |
||||||
|
Requires: %{name}%{?_isa} = %{version}-%{release} |
||||||
|
|
||||||
|
%description devel |
||||||
|
Header files and libraries for developing Mutter plugins. Also includes |
||||||
|
utilities for testing Metacity/Mutter themes. |
||||||
|
|
||||||
|
%prep |
||||||
|
%autosetup -S git |
||||||
|
|
||||||
|
%build |
||||||
|
autoreconf -f -i |
||||||
|
(if ! test -x configure; then NOCONFIGURE=1 ./autogen.sh; fi; |
||||||
|
%configure --disable-static %{?disable_wayland} --enable-compile-warnings=maximum --with-libwacom) |
||||||
|
|
||||||
|
SHOULD_HAVE_DEFINED="HAVE_SM HAVE_RANDR HAVE_STARTUP_NOTIFICATION" |
||||||
|
|
||||||
|
for I in $SHOULD_HAVE_DEFINED; do |
||||||
|
if ! grep -q "define $I" config.h; then |
||||||
|
echo "$I was not defined in config.h" |
||||||
|
grep "$I" config.h |
||||||
|
exit 1 |
||||||
|
else |
||||||
|
echo "$I was defined as it should have been" |
||||||
|
grep "$I" config.h |
||||||
|
fi |
||||||
|
done |
||||||
|
|
||||||
|
make %{?_smp_mflags} V=1 |
||||||
|
|
||||||
|
%install |
||||||
|
%make_install |
||||||
|
|
||||||
|
#Remove libtool archives. |
||||||
|
rm -rf %{buildroot}/%{_libdir}/*.la |
||||||
|
|
||||||
|
%find_lang %{name} |
||||||
|
|
||||||
|
# Mutter contains a .desktop file so we just need to validate it |
||||||
|
desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop |
||||||
|
|
||||||
|
%post -p /sbin/ldconfig |
||||||
|
|
||||||
|
%postun |
||||||
|
/sbin/ldconfig |
||||||
|
if [ $1 -eq 0 ]; then |
||||||
|
glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : |
||||||
|
fi |
||||||
|
|
||||||
|
%posttrans |
||||||
|
glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : |
||||||
|
|
||||||
|
%files -f %{name}.lang |
||||||
|
%license COPYING |
||||||
|
%doc NEWS |
||||||
|
%{_bindir}/mutter |
||||||
|
%{_datadir}/applications/*.desktop |
||||||
|
%{_libdir}/lib*.so.* |
||||||
|
%{_libdir}/mutter/ |
||||||
|
%{_libexecdir}/mutter-restart-helper |
||||||
|
%{_datadir}/GConf/gsettings/mutter-schemas.convert |
||||||
|
%{_datadir}/glib-2.0/schemas/org.gnome.mutter.gschema.xml |
||||||
|
%{_datadir}/glib-2.0/schemas/org.gnome.mutter.wayland.gschema.xml |
||||||
|
%{_datadir}/gnome-control-center/keybindings/50-mutter-*.xml |
||||||
|
%{_mandir}/man1/mutter.1* |
||||||
|
|
||||||
|
%files devel |
||||||
|
%{_includedir}/* |
||||||
|
%{_libdir}/lib*.so |
||||||
|
%{_libdir}/pkgconfig/* |
||||||
|
|
||||||
|
%changelog |
||||||
|
* Fri Feb 23 2018 Carlos Garnacho <cgarnach@redhat.com> - 3.26.2-13 |
||||||
|
- Fix pad ring/strip modes |
||||||
|
Resolves: #1543633 |
||||||
|
|
||||||
|
* Mon Feb 19 2018 Carlos Garnacho <cgarnach@redhat.com> - 3.26.2-12 |
||||||
|
- Apply settings on current stylus tools instantly |
||||||
|
Resolves: #1543693 |
||||||
|
|
||||||
|
* Wed Feb 14 2018 Jonas Ådahl <jadahl@redhat.com> - 3.26.2-11 |
||||||
|
- Fix GPU memory purge error handling |
||||||
|
Resolves: #1542375 |
||||||
|
|
||||||
|
* Tue Feb 13 2018 Carlos Garnacho <cgarnach@redhat.com> - 3.26.2-10 |
||||||
|
- Detect CLUTTER_TOUCHPAD_DEVICE on all Synaptics devices |
||||||
|
Resolves: #1499788 |
||||||
|
- Fix tablet pressure curve configuration not being applied |
||||||
|
Resolves: #1543693 |
||||||
|
|
||||||
|
* Tue Feb 13 2018 Ray Strode <rstrode@redhat.com> - 3.26.2-9 |
||||||
|
- Fix VNC sessions |
||||||
|
Resolves: #1543073 |
||||||
|
|
||||||
|
* Wed Feb 07 2018 Carlos Garnacho <cgarnach@redhat.com> - 3.26.2-8 |
||||||
|
- Avoid XCloseDevice on active XI2 devices |
||||||
|
Resolves: #1540790 |
||||||
|
|
||||||
|
* Wed Feb 07 2018 Florian Müllner <fmuellner@redhat.com> - 3.26.2-7 |
||||||
|
- Fix crash during session saving |
||||||
|
Resolves: #1535080 |
||||||
|
- Fix XWayland prevented from starting |
||||||
|
Resolves: #1540986 |
||||||
|
|
||||||
|
* Wed Nov 29 2017 Rui Matos <rmatos@redhat.com> - 3.26.2-6 |
||||||
|
- Fix a crash resizing windows while headless |
||||||
|
Resolves: #1516408 |
||||||
|
|
||||||
|
* Wed Nov 29 2017 Rui Matos <rmatos@redhat.com> - 3.26.2-5 |
||||||
|
- Fix for certain multi-monitor configurations not being remembered |
||||||
|
Resolves: #1516404 |
||||||
|
|
||||||
|
* Wed Nov 08 2017 Ray Strode <rstrode@redhat.com> - 3.26.2-4 |
||||||
|
- Fix crash with screen recorder |
||||||
|
Resolves: #1508903 |
||||||
|
|
||||||
|
* Tue Nov 7 2017 Rui Matos <rmatos@redhat.com> - 3.26.2-3 |
||||||
|
- Fix external monitor layout patch to avoid a crash |
||||||
|
- Resolves: #1481386 |
||||||
|
|
||||||
|
* Mon Nov 6 2017 Rui Matos <rmatos@redhat.com> - 3.26.2-2 |
||||||
|
- Fix stereo patch to fail gracefully on Xwayland |
||||||
|
- Resolves: #1481386 |
||||||
|
|
||||||
|
* Fri Nov 03 2017 Kalev Lember <klember@redhat.com> - 3.26.2-1 |
||||||
|
- Update to 3.26.2 |
||||||
|
- Resolves: #1481386 |
||||||
|
|
||||||
|
* Thu Oct 26 2017 Rui Matos <rmatos@redhat.com> - 3.26.1-2 |
||||||
|
- Add support for plain old X device configuration |
||||||
|
Resolves: #1478397 |
||||||
|
|
||||||
|
* Fri Oct 06 2017 Florian Müllner <fmuellner@redhat.com> - 3.26.1-1 |
||||||
|
- Update to 3.26.1 |
||||||
|
Resolves: #1481386 |
||||||
|
|
||||||
|
* Mon Jun 26 2017 Florian Müllner <fmuellner@redhat.com> - 3.24.3-11 |
||||||
|
- Prevent crash when removing workspace with on-all-workspaces windows |
||||||
|
present (like desktop icons) |
||||||
|
- Resolves: #1453065 |
||||||
|
|
||||||
|
* Wed Jun 14 2017 Florian Müllner <fmuellner@redhat.com> - 3.24.3-10 |
||||||
|
- Keep OR windows stacked on top |
||||||
|
- Resolves: #1437203 |
||||||
|
|
||||||
|
* Thu Jun 08 2017 Florian Müllner <fmuellner@redhat.com> - 3.24.3-9 |
||||||
|
- Fix crash when a window closes during Alt+Tab |
||||||
|
- Resolves: #1438722 |
||||||
|
|
||||||
|
* Tue May 16 2017 Florian Müllner <fmuellner@redhat.com> - 3.24.3-8 |
||||||
|
- Special-case shaped java windows to fix OpenJDK's compliance test |
||||||
|
- Resolves: #1363784 |
||||||
|
|
||||||
|
* Fri Apr 28 2017 Florian Müllner <fmuellner@redhat.com> - 3.24.3-7 |
||||||
|
- Fix cally translation of screen coordinates |
||||||
|
- Resolves: #1439194 |
||||||
|
|
||||||
|
* Fri Mar 17 2017 Florian Müllner <fmuellner@redhat.com> - 3.22.3-6 |
||||||
|
- Recreate build files after modifying templates with the last patch |
||||||
|
- Resolves: #1387025 |
||||||
|
|
||||||
|
* Thu Mar 16 2017 Owen Taylor <otaylor@redhat.com> - 3.22.3-6 |
||||||
|
- Add back quad-buffer stereo patches, rebased to 3.22 |
||||||
|
- Resolves: #1387025 |
||||||
|
|
||||||
|
* Wed Mar 15 2017 Carlos Garnacho <cgarnach@redhat.com> - 3.22.3-5 |
||||||
|
- Swizzle BGRA buffers to avoid pixel conversions |
||||||
|
- Resolves: #1387025 |
||||||
|
|
||||||
|
* Tue Mar 14 2017 Florian Müllner <fmuellner@redhat.com> - 3.22.3-4 |
||||||
|
- Don't segfault on early exit |
||||||
|
- Resolves: #1369073 |
||||||
|
|
||||||
|
* Mon Mar 13 2017 Carlos Garnacho <cgarnach@redhat.com> - 3.22.3-3 |
||||||
|
- Handle synaptics settings |
||||||
|
- Resolves: #1387025 |
||||||
|
|
||||||
|
* Mon Mar 13 2017 Florian Müllner <fmuellner@redhat.com> - 3.22.3-2 |
||||||
|
- Re-add downstream patches |
||||||
|
- Resolves: #1387025 |
||||||
|
|
||||||
|
* Thu Feb 16 2017 Kalev Lember <klember@redhat.com> - 3.22.3-1 |
||||||
|
- Update to 3.22.3 |
||||||
|
- Resolves: #1387025 |
||||||
|
|
||||||
|
* Fri Feb 03 2017 Kalev Lember <klember@redhat.com> - 3.22.2-1 |
||||||
|
- Update to 3.22.2 |
||||||
|
- Resolves: #1387025 |
||||||
|
|
||||||
|
* Fri Sep 16 2016 Florian Müllner <fmuellner@redhat.com> - 3.14.4-31 |
||||||
|
- Make meta_window_actor_update_visibility() public |
||||||
|
Related: #1306670 |
||||||
|
|
||||||
|
* Mon Aug 29 2016 Owen Taylor <otaylor@redhat.com - 3.14.4-30 |
||||||
|
- Make Mutter exit cleanly when opening $DISPLAY fails |
||||||
|
Resolves: #1346814 |
||||||
|
|
||||||
|
* Mon Aug 15 2016 Rui Matos <rmatos@redhat.com> - 3.14.4-29 |
||||||
|
- Allow clutter to fallback to the classic gl driver since mesa's |
||||||
|
software driver doesn't support gl3 |
||||||
|
Related: #1361251 |
||||||
|
|
||||||
|
* Thu Aug 11 2016 Rui Matos <rmatos@redhat.com> - 3.14.4-28 |
||||||
|
- Add patch to require clutter to use the gl3 driver |
||||||
|
Resolves: #1361251 |
||||||
|
|
||||||
|
* Mon Jul 18 2016 Rui Matos <rmatos@redhat.com> - 3.14.4-27 |
||||||
|
- Require a clutter version that provides all the new APIs |
||||||
|
Related: rhbz#1330488 |
||||||
|
|
||||||
|
* Thu Jun 30 2016 Owen Taylor <otaylor@redhat.com> - 3.14.4-26 |
||||||
|
- Turn on newly added "threaded swap wait" functionality in Cogl |
||||||
|
so that on NVIDIA cards, frame completion is handled in a proper |
||||||
|
non-blocking fashion, fixing bugs with idles not running when |
||||||
|
they should. |
||||||
|
Resolves: #1305076 |
||||||
|
|
||||||
|
* Wed Jun 29 2016 Rui Matos <rmatos@redhat.com> - 3.14.4-25 |
||||||
|
- Handle video memory purge errors |
||||||
|
Resolves: #1330488 |
||||||
|
|
||||||
|
* Tue Jun 28 2016 Florian Müllner <fmuellner@redhat.com> - 3.14.4-24 |
||||||
|
- Update translations |
||||||
|
Resolves: #1304233 |
||||||
|
|
||||||
|
* Fri Jun 17 2016 Florian Müllner <fmuellner@redhat.com> - 3.14.4-23 |
||||||
|
- Track ignored damage |
||||||
|
Resolves: #1165840 |
||||||
|
|
||||||
|
* Thu May 19 2016 Florian Müllner <fmuellner@redhat.com> - 3.14.4-22 |
||||||
|
- Support external monitor layout configuration |
||||||
|
Related: #1290448 |
||||||
|
|
||||||
|
* Thu May 12 2016 Florian Müllner <fmuellner@redhat.com> - 3.14.4-21 |
||||||
|
- Ignore window groups for stacking |
||||||
|
Resolves: #1167889 |
||||||
|
|
||||||
|
* Tue May 10 2016 Owen Taylor <otaylor@redhat.com> - 3.14.4-20 |
||||||
|
- Rebase and add back stereo support patch that was dropped in |
||||||
|
update to 3.14. |
||||||
|
- Retain the last active window for seamless restarts. |
||||||
|
Resolves: #1305076 |
||||||
|
|
||||||
|
* Thu Apr 21 2016 Florian Müllner <fmuellner@redhat.com> - 3.14.4-19 |
||||||
|
- Make Cogl errors non-fatal |
||||||
|
Related: #1326372 |
||||||
|
|
||||||
|
* Wed Apr 20 2016 Carlos Garnacho <cgarnach@redhat.com> - 3.14.4-18 |
||||||
|
- Fix unredirected windows being transparent to input in sloppy focus |
||||||
|
Resolves: #1299616 |
||||||
|
|
||||||
|
* Mon Oct 26 2015 Rui Matos <rmatos@redhat.com> - 3.14.4-17 |
||||||
|
- Fix a crash when plugging monitors |
||||||
|
Resolves: #1275215 |
||||||
|
- Avoid a critical message when unplugging monitors |
||||||
|
Resolves: #1275220 |
||||||
|
- Fix monitors remaining undetected on resume from suspend |
||||||
|
Resolves: #1219476 |
||||||
|
|
||||||
|
* Fri Oct 16 2015 Florian Müllner <fmuellner@redhat.com> - 3.14.4-16 |
||||||
|
- Fix crash during session saving when saving sticky windows |
||||||
|
Related: #1272106 |
||||||
|
|
||||||
|
* Tue Oct 6 2015 Rui Matos <rmatos@redhat.com> - 3.14.4-15 |
||||||
|
- Fix integer sign oversight in the previous patch |
||||||
|
Related: #1265511 |
||||||
|
|
||||||
|
* Tue Oct 6 2015 Rui Matos <rmatos@redhat.com> - 3.14.4-14 |
||||||
|
- Add a couple of fixes for Xvnc resolution changes |
||||||
|
Resolves: #1265511 |
||||||
|
|
||||||
|
* Thu Oct 01 2015 Florian Müllner <fmuellner@redhat.com> - 3.14.4-13 |
||||||
|
- Fix a couple more errors in headless mode |
||||||
|
Related: #1212702 |
||||||
|
|
||||||
|
* Fri Sep 04 2015 Florian Müllner <fmuellner@redhat.com> - 3.14.4-12 |
||||||
|
- Fix maximum potential number of monitors |
||||||
|
Resolves: #1260082 |
||||||
|
|
||||||
|
* Thu Sep 03 2015 Florian Müllner <fmuellner@redhat.com> - 3.14.4-11 |
||||||
|
- Fix screen flicking issue with propriertary NVidia drivers |
||||||
|
Resolves: #1258842 |
||||||
|
|
||||||
|
* Thu Jul 30 2015 Florian Müllner <fmuellner@redhat.com> - 3.14.4-10 |
||||||
|
- Fix placement of fullscreen windows |
||||||
|
Resolves: #1247718 |
||||||
|
|
||||||
|
* Fri Jul 24 2015 Florian Müllner <fmuellner@redhat.com> - 3.14.4-9 |
||||||
|
- Fix some more headless-mode warnings |
||||||
|
Related: #1212702 |
||||||
|
|
||||||
|
* Fri Jul 24 2015 Florian Müllner <fmuellner@redhat.com> - 3.14.4-8 |
||||||
|
- Fix focus_serial overflow |
||||||
|
Resolves: #1236113 |
||||||
|
|
||||||
|
* Tue Jul 21 2015 Matthias Clasen <mclasen@redhat.com> - 3.14.4-7 |
||||||
|
- Fix coverity spotted bugs |
||||||
|
Related #1174722 |
||||||
|
|
||||||
|
* Fri Jul 17 2015 Florian Müllner <fmuellner@redhat.com> - 3.14.4-6 |
||||||
|
- Fix oversight in headless-mode backport |
||||||
|
Resolves: #1212702 |
||||||
|
|
||||||
|
* Thu Jul 16 2015 Florian Müllner <fmuellner@redhat.com> - 3.14.4-5 |
||||||
|
- Support headless mode |
||||||
|
Resolves: #1212702 |
||||||
|
|
||||||
|
* Fri Jul 10 2015 Florian Müllner <fmuellner@redhat.com> - 3.14.4-4 |
||||||
|
- Don't try to focus hidden windows |
||||||
|
Related: #1174722 |
||||||
|
|
||||||
|
* Thu May 21 2015 Florian Müllner <fmuellner@redhat.com> - 3.14.4-3 |
||||||
|
- support suggested output position |
||||||
|
Resolves: rhbz#1166319 |
||||||
|
|
||||||
|
* Wed May 06 2015 Ray Strode <rstrode@redhat.com> 3.14.4-2 |
||||||
|
- rebuild against new gnome-desktop3 |
||||||
|
Related: #1174722 |
||||||
|
|
||||||
|
* Tue Mar 24 2015 Florian Müllner <fmuellner@redhat.com> - 3.14.4-1 |
||||||
|
- Drop obsolete patches, rebase still relevant one |
||||||
|
|
||||||
|
* Mon Mar 23 2015 Richard Hughes <rhughes@redhat.com> - 3.14.3-1 |
||||||
|
- Update to 3.14.3 |
||||||
|
- Resolves: #1174722 |
||||||
|
|
||||||
|
* Wed Jan 14 2015 Florian Müllner <fmuellner@redhat.com> - 3.8.4.16 |
||||||
|
- Fix window placement regression |
||||||
|
Resolves: rhbz#1153641 |
||||||
|
|
||||||
|
* Thu Nov 13 2014 Florian Müllner <fmuellner@redhat.com> - 3.8.4-15 |
||||||
|
- Fix delayed mouse mode |
||||||
|
Resolves: rhbz#1149585 |
||||||
|
|
||||||
|
* Thu Oct 09 2014 Florian Müllner <fmueller@redhat.com> - 3.8.4-14 |
||||||
|
- Preserve window placement on monitor changes |
||||||
|
Resolves: rhbz#1126754 |
||||||
|
|
||||||
|
* Thu Oct 09 2014 Florian Müllner <fmueller@redhat.com> - 3.8.4-13 |
||||||
|
- Improve handling of vertical monitor layouts |
||||||
|
Resolves: rhbz#1108322 |
||||||
|
|
||||||
|
* Thu Jul 17 2014 Owen Taylor <otaylor@redhat.com> 3.8.4-13 |
||||||
|
- Add patches for quadbuffer stereo suppport |
||||||
|
Fix a bad performance problem drawing window thumbnails |
||||||
|
Resolves: rhbz#861507 |
||||||
|
|
||||||
|
* Tue Mar 11 2014 Florian Müllner <fmuellner@redhat.com> - 3.8.4-10 |
||||||
|
- Fix crash when encountering over-sized windows |
||||||
|
Resolves: #1027832 |
||||||
|
|
||||||
|
* Tue Mar 11 2014 Florian Müllner <fmuellner@redhat.com> - 3.8.4-10 |
||||||
|
- Backport another minor memory leak fix |
||||||
|
Resolves: #1067456 |
||||||
|
|
||||||
|
* Tue Mar 11 2014 Debarshi Ray <rishi@fedoraproject.org> - 3.8.4-9 |
||||||
|
- Do not save pixbuf in user data |
||||||
|
Resolves: #1067456 |
||||||
|
|
||||||
|
* Wed Feb 12 2014 Carlos Garnacho <cgarnach@redhat.com> - 3.8.4-8 |
||||||
|
- Fix window dragging on touchscreens |
||||||
|
Resolves: #1051006 |
||||||
|
|
||||||
|
* Tue Feb 11 2014 Owen Taylor <otaylor@redhat.com> - 3.8.4-7 |
||||||
|
- Add an upstream patch that fixes a bug with left-over window |
||||||
|
shadows that show up when we add patches to Clutter to stop |
||||||
|
redrawing the entire screen on every window move. |
||||||
|
Resolves: rhbz#1063984 |
||||||
|
|
||||||
|
* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 3.8.4-6 |
||||||
|
- Mass rebuild 2014-01-24 |
||||||
|
|
||||||
|
* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 3.8.4-5 |
||||||
|
- Mass rebuild 2013-12-27 |
||||||
|
|
||||||
|
* Thu Nov 28 2013 Florian Müllner <fmuellner@redhat.com> - 3.8.4-4 |
||||||
|
- Include translation updates |
||||||
|
Resolves: rhbz#1030369 |
||||||
|
|
||||||
|
* Mon Nov 11 2013 Florian Müllner <fmuellner@redhat.com> - 3.8.4-3 |
||||||
|
- Backport allowing sliced textures for large backgrounds |
||||||
|
Resolves: rhbz#1028586 |
||||||
|
|
||||||
|
* Thu Oct 31 2013 Florian Müllner <fmuellner@redhat.com> - 3.8.4-2 |
||||||
|
- Backport performance improvements for software rendering from 3.10 |
||||||
|
|
||||||
|
* Tue Jul 30 2013 Ray Strode <rstrode@redhat.com> 3.8.4-1 |
||||||
|
- Update to 3.8.4 |
||||||
|
|
||||||
|
* Tue Jul 02 2013 Florian Müllner <fmuellner@redhat.com> - 3.8.3-2 |
||||||
|
- Rebuild with (re-)fixed download URL |
||||||
|
|
||||||
|
* Fri Jun 07 2013 Florian Müllner <fmuellner@redhat.com> - 3.8.3-1 |
||||||
|
- Update to 3.8.3 |
||||||
|
|
||||||
|
* Tue May 14 2013 Florian Müllner <fmuellner@redhat.com> - 3.8.2-1 |
||||||
|
- Update to 3.8.2 |
||||||
|
|
||||||
|
* Tue Apr 16 2013 Florian Müllner <fmuellner@redhat.com> - 3.8.1-1 |
||||||
|
- Update to 3.8.1 |
||||||
|
|
||||||
|
* Tue Mar 26 2013 Florian Müllner <fmuellner@redhat.com> - 3.8.0-1 |
||||||
|
- Update to 3.8.0 |
||||||
|
|
||||||
|
* Tue Mar 19 2013 Florian Müllner <fmuellner@redhat.com> - 3.7.92-1 |
||||||
|
- Update to 3.7.92 |
||||||
|
|
||||||
|
* Mon Mar 04 2013 Florian Müllner <fmuellner@redhat.com> - 3.7.91-1 |
||||||
|
- Update to 3.7.91 |
||||||
|
|
||||||
|
* Wed Feb 20 2013 Florian Müllner <fmuellner@redhat.com> - 3.7.90-1 |
||||||
|
- Update to 3.7.90 |
||||||
|
|
||||||
|
* Tue Feb 05 2013 Florian Müllner <fmuellner@redhat.com> - 3.7.5-1 |
||||||
|
- Update to 3.7.5 |
||||||
|
|
||||||
|
* Fri Jan 25 2013 Peter Robinson <pbrobinson@fedoraproject.org> 3.7.4-2 |
||||||
|
- Rebuild for new cogl |
||||||
|
|
||||||
|
* Tue Jan 15 2013 Florian Müllner <fmuellner@redhat.com> - 3.7.4-1 |
||||||
|
- Update to 3.7.4 |
||||||
|
|
||||||
|
* Tue Dec 18 2012 Florian Müllner <fmuellner@redhat.com> - 3.7.3-1 |
||||||
|
- Update to 3.7.3 |
||||||
|
|
||||||
|
* Mon Nov 19 2012 Florian Müllner <fmuellner@redhat.com> - 3.7.2-1 |
||||||
|
- Update to 3.7.2 |
||||||
|
|
||||||
|
* Fri Nov 09 2012 Kalev Lember <kalevlember@gmail.com> - 3.7.1-1 |
||||||
|
- Update to 3.7.1 |
||||||
|
|
||||||
|
* Mon Oct 15 2012 Florian Müllner <fmuellner@redhat.com> - 3.6.1-1 |
||||||
|
- Update to 3.6.1 |
||||||
|
|
||||||
|
* Tue Sep 25 2012 Florian Müllner <fmuellner@redhat.com> - 3.6.0-1 |
||||||
|
- Update to 3.6.0 |
||||||
|
|
||||||
|
* Wed Sep 19 2012 Florian Müllner <fmuellner@redhat.com> - 3.5.92-1 |
||||||
|
- Update to 3.5.92 |
||||||
|
|
||||||
|
* Tue Sep 04 2012 Debarshi Ray <rishi@fedoraproject.org> - 3.5.91-2 |
||||||
|
- Rebuild against new cogl |
||||||
|
|
||||||
|
* Tue Sep 04 2012 Debarshi Ray <rishi@fedoraproject.org> - 3.5.91-1 |
||||||
|
- Update to 3.5.91 |
||||||
|
|
||||||
|
* Tue Aug 28 2012 Matthias Clasen <mclasen@redhat.com> - 3.5.90-2 |
||||||
|
- Rebuild against new cogl/clutter |
||||||
|
|
||||||
|
* Tue Aug 21 2012 Richard Hughes <hughsient@gmail.com> - 3.5.90-1 |
||||||
|
- Update to 3.5.90 |
||||||
|
|
||||||
|
* Tue Aug 07 2012 Richard Hughes <hughsient@gmail.com> - 3.5.5-1 |
||||||
|
- Update to 3.5.5 |
||||||
|
|
||||||
|
* Fri Jul 27 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.5.4-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild |
||||||
|
|
||||||
|
* Tue Jul 17 2012 Richard Hughes <hughsient@gmail.com> - 3.5.4-1 |
||||||
|
- Update to 3.5.4 |
||||||
|
|
||||||
|
* Tue Jun 26 2012 Matthias Clasen <mclasen@redhat.com> - 3.5.3-1 |
||||||
|
- Update to 3.5.3 |
||||||
|
|
||||||
|
* Fri Jun 8 2012 Matthias Clasen <mclasen@redhat.com> - 3.5.2-3 |
||||||
|
- Make resize grip area larger |
||||||
|
|
||||||
|
* Thu Jun 07 2012 Matthias Clasen <mclasen@redhat.com> - 3.5.2-2 |
||||||
|
- Don't check for Xinerama anymore - it is now mandatory |
||||||
|
|
||||||
|
* Thu Jun 07 2012 Richard Hughes <hughsient@gmail.com> - 3.5.2-1 |
||||||
|
- Update to 3.5.2 |
||||||
|
- Remove upstreamed patches |
||||||
|
|
||||||
|
* Wed May 09 2012 Adam Jackson <ajax@redhat.com> 3.4.1-3 |
||||||
|
- mutter-never-slice-shape-mask.patch, mutter-use-cogl-texrect-api.patch: |
||||||
|
Fix window texturing on hardware without ARB_texture_non_power_of_two |
||||||
|
(#813648) |
||||||
|
|
||||||
|
* Wed Apr 18 2012 Kalev Lember <kalevlember@gmail.com> - 3.4.1-2 |
||||||
|
- Silence glib-compile-schemas scriplets |
||||||
|
|
||||||
|
* Wed Apr 18 2012 Kalev Lember <kalevlember@gmail.com> - 3.4.1-1 |
||||||
|
- Update to 3.4.1 |
||||||
|
- Conflict with gnome-shell versions older than 3.4.1 |
||||||
|
|
||||||
|
* Tue Mar 27 2012 Richard Hughes <hughsient@gmail.com> - 3.4.0-1 |
||||||
|
- Update to 3.4.0 |
||||||
|
|
||||||
|
* Wed Mar 21 2012 Kalev Lember <kalevlember@gmail.com> - 3.3.92-1 |
||||||
|
- Update to 3.3.92 |
||||||
|
|
||||||
|
* Sat Mar 10 2012 Matthias Clasen <mclasen@redhat.com> - 3.3.90-2 |
||||||
|
- Rebuild against new cogl |
||||||
|
|
||||||
|
* Sat Feb 25 2012 Matthias Clasen <mclasen@redhat.com> - 3.3.90-1 |
||||||
|
- Update to 3.3.90 |
||||||
|
|
||||||
|
* Tue Feb 7 2012 Matthias Clasen <mclasen@redhat.com> - 3.3.5-1 |
||||||
|
- Update to 3.3.5 |
||||||
|
|
||||||
|
* Fri Jan 20 2012 Matthias Clasen <mclasen@redhat.com> - 3.3.4-1 |
||||||
|
- Update to 3.3.4 |
||||||
|
|
||||||
|
* Thu Jan 19 2012 Matthias Clasen <mclasen@redhat.com> - 3.3.3-2 |
||||||
|
- Rebuild against new cogl |
||||||
|
|
||||||
|
* Thu Jan 5 2012 Matthias Clasen <mclasen@redhat.com> - 3.3.3-1 |
||||||
|
- Update to 3.3.3 |
||||||
|
|
||||||
|
* Wed Nov 23 2011 Matthias Clasen <mclasen@redhat.com> - 3.3.2-2 |
||||||
|
- Rebuild against new clutter |
||||||
|
|
||||||
|
* Tue Nov 22 2011 Matthias Clasen <mclasen@redhat.com> - 3.3.2-1 |
||||||
|
- Update to 3.3.2 |
||||||
|
|
||||||
|
* Wed Oct 26 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.2.1-2 |
||||||
|
- Rebuilt for glibc bug#747377 |
||||||
|
|
||||||
|
* Wed Oct 19 2011 Matthias Clasen <mclasen@redhat.com> - 3.2.1-1 |
||||||
|
- Update to 3.2.1 |
||||||
|
|
||||||
|
* Mon Sep 26 2011 Owen Taylor <otaylor@redhat.com> - 3.2.0-1 |
||||||
|
- Update to 3.2.0 |
||||||
|
|
||||||
|
* Tue Sep 20 2011 Matthias Clasen <mclasen@redhat.com> - 3.1.92-1 |
||||||
|
- Update to 3.1.92 |
||||||
|
|
||||||
|
* Wed Sep 14 2011 Owen Taylor <otaylor@redhat.com> - 3.1.91.1-1 |
||||||
|
- Update to 3.1.91.1 |
||||||
|
|
||||||
|
* Wed Aug 31 2011 Matthias Clasen <mclasen@redhat.com> - 3.1.90.1-1 |
||||||
|
- Update to 3.1.90.1 |
||||||
|
|
||||||
|
* Wed Jul 27 2011 Matthias Clasen <mclasen@redhat.com> - 3.1.4-1 |
||||||
|
- Update to 3.1.4 |
||||||
|
|
||||||
|
* Wed Jul 27 2011 Matthias Clasen <mclasen@redhat.com> - 3.1.3.1-3 |
||||||
|
- Rebuild |
||||||
|
|
||||||
|
* Mon Jul 4 2011 Peter Robinson <pbrobinson@gmail.com> - 3.1.3.1-2 |
||||||
|
- rebuild against new clutter/cogl |
||||||
|
|
||||||
|
* Mon Jul 04 2011 Adam Williamson <awilliam@redhat.com> - 3.1.3.1-1 |
||||||
|
- Update to 3.1.3.1 |
||||||
|
|
||||||
|
* Thu Jun 30 2011 Owen Taylor <otaylor@redhat.com> - 3.1.3-1 |
||||||
|
- Update to 3.1.3 |
||||||
|
|
||||||
|
* Wed May 25 2011 Owen Taylor <otaylor@redhat.com> - 3.0.2.1-1 |
||||||
|
- Update to 3.0.2.1 |
||||||
|
|
||||||
|
* Fri Apr 29 2011 Matthias Clasen <mclasen@redhat.com> - 3.0.1-3 |
||||||
|
- Actually apply the patch for #700276 |
||||||
|
|
||||||
|
* Thu Apr 28 2011 Matthias Clasen <mclasen@redhat.com> - 3.0.1-2 |
||||||
|
- Make session saving of gnome-shell work |
||||||
|
|
||||||
|
* Mon Apr 25 2011 Owen Taylor <otaylor@redhat.com> - 3.0.1-1 |
||||||
|
- Update to 3.0.1 |
||||||
|
|
||||||
|
* Mon Apr 4 2011 Owen Taylor <otaylor@redhat.com> - 3.0.0-1 |
||||||
|
- Update to 3.0.0 |
||||||
|
|
||||||
|
* Mon Mar 28 2011 Matthias Clasen <mclasen@redhat.com> - 2.91.93-1 |
||||||
|
- Update to 2.91.93 |
||||||
|
|
||||||
|
* Wed Mar 23 2011 Matthias Clasen <mclasen@redhat.com> - 2.91.92-1 |
||||||
|
- Update to 2.91.92 |
||||||
|
|
||||||
|
* Mon Mar 7 2011 Owen Taylor <otaylor@redhat.com> - 2.91.91-1 |
||||||
|
- Update to 2.91.91 |
||||||
|
|
||||||
|
* Tue Mar 1 2011 Matthias Clasen <mclasen@redhat.com> - 2.91.90-2 |
||||||
|
- Build against libcanberra, to enable AccessX feedback features |
||||||
|
|
||||||
|
* Tue Feb 22 2011 Matthias Clasen <mclasen@redhat.com> - 2.91.90-1 |
||||||
|
- Update to 2.91.90 |
||||||
|
|
||||||
|
* Thu Feb 10 2011 Matthias Clasen <mclasen@redhat.com> - 2.91.6-4 |
||||||
|
- Rebuild against newer gtk |
||||||
|
|
||||||
|
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.91.6-3 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild |
||||||
|
|
||||||
|
* Wed Feb 2 2011 Matthias Clasen <mclasen@redhat.com> - 2.91.6-2 |
||||||
|
- Rebuild against newer gtk |
||||||
|
|
||||||
|
* Tue Feb 1 2011 Owen Taylor <otaylor@redhat.com> - 2.91.6-1 |
||||||
|
- Update to 2.91.6 |
||||||
|
|
||||||
|
* Tue Jan 11 2011 Matthias Clasen <mclasen@redhat.com> - 2.91.5-1 |
||||||
|
- Update to 2.91.5 |
||||||
|
|
||||||
|
* Fri Jan 7 2011 Matthias Clasen <mclasen@redhat.com> - 2.91.4-1 |
||||||
|
- Update to 2.91.4 |
||||||
|
|
||||||
|
* Fri Dec 3 2010 Matthias Clasen <mclasen@redhat.com> - 2.91.3-2 |
||||||
|
- Rebuild against new gtk |
||||||
|
- Drop no longer needed %%clean etc |
||||||
|
|
||||||
|
* Mon Nov 29 2010 Owen Taylor <otaylor@redhat.com> - 2.91.3-1 |
||||||
|
- Update to 2.91.3 |
||||||
|
|
||||||
|
* Tue Nov 9 2010 Owen Taylor <otaylor@redhat.com> - 2.91.2-1 |
||||||
|
- Update to 2.91.2 |
||||||
|
|
||||||
|
* Tue Nov 2 2010 Matthias Clasen <mclasen@redhat.com> - 2.91.1-2 |
||||||
|
- Rebuild against newer gtk3 |
||||||
|
|
||||||
|
* Fri Oct 29 2010 Owen Taylor <otaylor@redhat.com> - 2.91.1-1 |
||||||
|
- Update to 2.91.1 |
||||||
|
|
||||||
|
* Mon Oct 4 2010 Owen Taylor <otaylor@redhat.com> - 2.91.0-1 |
||||||
|
- Update to 2.91.0 |
||||||
|
|
||||||
|
* Wed Sep 22 2010 Matthias Clasen <mclasen@redhat.com> - 2.31.5-4 |
||||||
|
- Rebuild against newer gobject-introspection |
||||||
|
|
||||||
|
* Wed Jul 14 2010 Colin Walters <walters@verbum.org> - 2.31.5-3 |
||||||
|
- Rebuild for new gobject-introspection |
||||||
|
|
||||||
|
* Tue Jul 13 2010 Adel Gadllah <adel.gadllah@gmail.com> - 2.31.5-2 |
||||||
|
- Build against gtk3 |
||||||
|
|
||||||
|
* Mon Jul 12 2010 Colin Walters <walters@pocket> - 2.31.5-1 |
||||||
|
- New upstream version |
||||||
|
|
||||||
|
* Mon Jul 12 2010 Colin Walters <walters@verbum.org> - 2.31.2-5 |
||||||
|
- Rebuild against new gobject-introspection |
||||||
|
|
||||||
|
* Tue Jul 6 2010 Colin Walters <walters@verbum.org> - 2.31.2-4 |
||||||
|
- Changes to support snapshot builds |
||||||
|
|
||||||
|
* Fri Jun 25 2010 Colin Walters <walters@megatron> - 2.31.2-3 |
||||||
|
- drop gir-repository-devel dep |
||||||
|
|
||||||
|
* Wed May 26 2010 Adam Miller <maxamillion@fedoraproject.org> - 2.31.2-2 |
||||||
|
- removed "--with-clutter" as configure is claiming it to be an unknown option |
||||||
|
|
||||||
|
* Wed May 26 2010 Adam Miller <maxamillion@fedoraproject.org> - 2.31.2-1 |
||||||
|
- New upstream 2.31.2 release |
||||||
|
|
||||||
|
* Thu Mar 25 2010 Peter Robinson <pbrobinson@gmail.com> 2.29.1-1 |
||||||
|
- New upstream 2.29.1 release |
||||||
|
|
||||||
|
* Wed Mar 17 2010 Peter Robinson <pbrobinson@gmail.com> 2.29.0-1 |
||||||
|
- New upstream 2.29.0 release |
||||||
|
|
||||||
|
* Tue Feb 16 2010 Adam Jackson <ajax@redhat.com> 2.28.1-0.2 |
||||||
|
- mutter-2.28.1-add-needed.patch: Fix FTBFS from --no-add-needed |
||||||
|
|
||||||
|
* Thu Feb 4 2010 Peter Robinson <pbrobinson@gmail.com> 2.28.1-0.1 |
||||||
|
- Move to git snapshot |
||||||
|
|
||||||
|
* Wed Oct 7 2009 Owen Taylor <otaylor@redhat.com> - 2.28.0-1 |
||||||
|
- Update to 2.28.0 |
||||||
|
|
||||||
|
* Tue Sep 15 2009 Owen Taylor <otaylor@redhat.com> - 2.27.5-1 |
||||||
|
- Update to 2.27.5 |
||||||
|
|
||||||
|
* Fri Sep 4 2009 Owen Taylor <otaylor@redhat.com> - 2.27.4-1 |
||||||
|
- Remove workaround for #520209 |
||||||
|
- Update to 2.27.4 |
||||||
|
|
||||||
|
* Sat Aug 29 2009 Owen Taylor <otaylor@redhat.com> - 2.27.3-3 |
||||||
|
- Fix %%preun GConf script to properly be for package removal |
||||||
|
|
||||||
|
* Fri Aug 28 2009 Owen Taylor <otaylor@redhat.com> - 2.27.3-2 |
||||||
|
- Add a workaround for Red Hat bug #520209 |
||||||
|
|
||||||
|
* Fri Aug 28 2009 Owen Taylor <otaylor@redhat.com> - 2.27.3-1 |
||||||
|
- Update to 2.27.3, remove mutter-metawindow.patch |
||||||
|
|
||||||
|
* Fri Aug 21 2009 Peter Robinson <pbrobinson@gmail.com> 2.27.2-2 |
||||||
|
- Add upstream patch needed by latest mutter-moblin |
||||||
|
|
||||||
|
* Tue Aug 11 2009 Peter Robinson <pbrobinson@gmail.com> 2.27.2-1 |
||||||
|
- New upstream 2.27.2 release. Drop upstreamed patches. |
||||||
|
|
||||||
|
* Wed Jul 29 2009 Peter Robinson <pbrobinson@gmail.com> 2.27.1-5 |
||||||
|
- Add upstream patches for clutter 1.0 |
||||||
|
|
||||||
|
* Wed Jul 29 2009 Peter Robinson <pbrobinson@gmail.com> 2.27.1-4 |
||||||
|
- Add patch to fix mutter --replace |
||||||
|
|
||||||
|
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.27.1-3 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild |
||||||
|
|
||||||
|
* Sat Jul 18 2009 Peter Robinson <pbrobinson@gmail.com> 2.27.1-2 |
||||||
|
- Updates from review request |
||||||
|
|
||||||
|
* Fri Jul 17 2009 Peter Robinson <pbrobinson@gmail.com> 2.27.1-1 |
||||||
|
- Update to official 2.27.1 and review updates |
||||||
|
|
||||||
|
* Thu Jun 18 2009 Peter Robinson <pbrobinson@gmail.com> 2.27.0-0.2 |
||||||
|
- Updates from initial reviews |
||||||
|
|
||||||
|
* Thu Jun 18 2009 Peter Robinson <pbrobinson@gmail.com> 2.27.0-0.1 |
||||||
|
- Initial packaging |
Loading…
Reference in new issue