Date: Wednesday, April 15, 2015 @ 13:08:53 Author: heftig Revision: 236646
Revert a crasher Added: mutter/trunk/revert.patch Modified: mutter/trunk/PKGBUILD --------------+ PKGBUILD | 16 +++ revert.patch | 244 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 257 insertions(+), 3 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2015-04-15 10:20:29 UTC (rev 236645) +++ PKGBUILD 2015-04-15 11:08:53 UTC (rev 236646) @@ -5,7 +5,7 @@ pkgname=mutter pkgver=3.16.1 -pkgrel=1 +pkgrel=2 pkgdesc="A window manager for GNOME" arch=(i686 x86_64) license=('GPL') @@ -17,9 +17,19 @@ groups=('gnome') options=('!emptydirs') install=mutter.install -source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver:0:4}/$pkgname-$pkgver.tar.xz) -sha256sums=('be487f92bfa60c88fe474bd99f9665d57506479a06a48e00a7dd3171029b701c') +source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver:0:4}/$pkgname-$pkgver.tar.xz + revert.patch) +sha256sums=('be487f92bfa60c88fe474bd99f9665d57506479a06a48e00a7dd3171029b701c' + 'ec06d41973e82a608d9de7e7369ad323a58f6f644016657ac54ce226321a6570') +prepare() { + cd "$pkgname-$pkgver" + + # Revert input-settings: Ensure that we always apply the same set of settings + # because it asserts when VT switching + patch -Np1 -i ../revert.patch +} + build() { cd "$pkgname-$pkgver" ./configure --prefix=/usr --sysconfdir=/etc \ Added: revert.patch =================================================================== --- revert.patch (rev 0) +++ revert.patch 2015-04-15 11:08:53 UTC (rev 236646) @@ -0,0 +1,244 @@ +diff --git c/src/backends/meta-input-settings.c i/src/backends/meta-input-settings.c +index 004044e..4860fa9 100644 +--- c/src/backends/meta-input-settings.c ++++ i/src/backends/meta-input-settings.c +@@ -279,82 +279,51 @@ update_mouse_left_handed (MetaInputSettings *input_settings, + } + } + +-static GSettings * +-get_settings_for_device_type (MetaInputSettings *input_settings, +- ClutterInputDeviceType type) +-{ +- MetaInputSettingsPrivate *priv; +- priv = meta_input_settings_get_instance_private (input_settings); +- switch (type) +- { +- case CLUTTER_POINTER_DEVICE: +- return priv->mouse_settings; +- case CLUTTER_TOUCHPAD_DEVICE: +- return priv->touchpad_settings; +- default: +- return NULL; +- } +-} +- + static void + update_device_speed (MetaInputSettings *input_settings, +- ClutterInputDevice *device) ++ GSettings *settings, ++ ClutterInputDevice *device, ++ ClutterInputDeviceType type) + { +- GSettings *settings; +- ConfigDoubleFunc func; +- const gchar *key = "speed"; ++ MetaInputSettingsClass *input_settings_class; ++ gdouble speed; + +- func = META_INPUT_SETTINGS_GET_CLASS (input_settings)->set_speed; ++ input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings); ++ speed = g_settings_get_double (settings, "speed"); + + if (device) +- { +- settings = get_settings_for_device_type (input_settings, +- clutter_input_device_get_device_type (device)); +- if (!settings) +- return; +- +- settings_device_set_double_setting (input_settings, device, func, +- g_settings_get_double (settings, key)); +- } ++ settings_device_set_double_setting (input_settings, device, ++ input_settings_class->set_speed, ++ speed); + else +- { +- settings = get_settings_for_device_type (input_settings, CLUTTER_POINTER_DEVICE); +- settings_set_double_setting (input_settings, CLUTTER_POINTER_DEVICE, func, +- g_settings_get_double (settings, key)); +- settings = get_settings_for_device_type (input_settings, CLUTTER_TOUCHPAD_DEVICE); +- settings_set_double_setting (input_settings, CLUTTER_TOUCHPAD_DEVICE, func, +- g_settings_get_double (settings, key)); +- } ++ settings_set_double_setting (input_settings, type, ++ input_settings_class->set_speed, ++ speed); + } + + static void + update_device_natural_scroll (MetaInputSettings *input_settings, +- ClutterInputDevice *device) ++ GSettings *settings, ++ ClutterInputDevice *device, ++ ClutterInputDeviceType type) + { +- GSettings *settings; +- ConfigBoolFunc func; +- const gchar *key = "natural-scroll"; ++ MetaInputSettingsClass *input_settings_class; ++ gboolean enabled; + +- func = META_INPUT_SETTINGS_GET_CLASS (input_settings)->set_invert_scroll; ++ input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings); ++ enabled = g_settings_get_boolean (settings, "natural-scroll"); + + if (device) + { +- settings = get_settings_for_device_type (input_settings, +- clutter_input_device_get_device_type (device)); +- if (!settings) +- return; +- +- settings_device_set_bool_setting (input_settings, device, func, +- g_settings_get_boolean (settings, key)); ++ settings_device_set_bool_setting (input_settings, device, ++ input_settings_class->set_invert_scroll, ++ enabled); + } + else + { +- settings = get_settings_for_device_type (input_settings, CLUTTER_POINTER_DEVICE); +- settings_set_bool_setting (input_settings, CLUTTER_POINTER_DEVICE, func, +- g_settings_get_boolean (settings, key)); +- settings = get_settings_for_device_type (input_settings, CLUTTER_TOUCHPAD_DEVICE); +- settings_set_bool_setting (input_settings, CLUTTER_TOUCHPAD_DEVICE, func, +- g_settings_get_boolean (settings, key)); ++ settings_set_bool_setting (input_settings, type, ++ input_settings_class->set_invert_scroll, ++ enabled); + } + } + +@@ -488,9 +457,7 @@ update_trackball_scroll_button (MetaInputSettings *input_settings, + + priv = meta_input_settings_get_instance_private (input_settings); + input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings); +- /* This key is 'i' in the schema but it also specifies a minimum +- * range of 0 so the cast here is safe. */ +- button = (guint) g_settings_get_int (priv->trackball_settings, "scroll-wheel-emulation-button"); ++ button = g_settings_get_uint (priv->trackball_settings, "scroll-wheel-emulation-button"); + + if (device && device_is_trackball (device)) + { +@@ -606,18 +573,22 @@ meta_input_settings_changed_cb (GSettings *settings, + if (strcmp (key, "left-handed") == 0) + update_mouse_left_handed (input_settings, NULL); + else if (strcmp (key, "speed") == 0) +- update_device_speed (input_settings, NULL); ++ update_device_speed (input_settings, settings, NULL, ++ CLUTTER_POINTER_DEVICE); + else if (strcmp (key, "natural-scroll") == 0) +- update_device_natural_scroll (input_settings, NULL); ++ update_device_natural_scroll (input_settings, settings, ++ NULL, CLUTTER_POINTER_DEVICE); + } + else if (settings == priv->touchpad_settings) + { + if (strcmp (key, "left-handed") == 0) + update_touchpad_left_handed (input_settings, NULL); + else if (strcmp (key, "speed") == 0) +- update_device_speed (input_settings, NULL); ++ update_device_speed (input_settings, settings, NULL, ++ CLUTTER_TOUCHPAD_DEVICE); + else if (strcmp (key, "natural-scroll") == 0) +- update_device_natural_scroll (input_settings, NULL); ++ update_device_natural_scroll (input_settings, settings, ++ NULL, CLUTTER_TOUCHPAD_DEVICE); + else if (strcmp (key, "tap-to-click") == 0) + update_touchpad_tap_enabled (input_settings, NULL); + else if (strcmp (key, "send-events") == 0) +@@ -736,34 +707,44 @@ check_add_mappable_device (MetaInputSettings *input_settings, + } + + static void +-apply_device_settings (MetaInputSettings *input_settings, +- ClutterInputDevice *device) +-{ +- update_mouse_left_handed (input_settings, device); +- update_device_speed (input_settings, device); +- update_device_natural_scroll (input_settings, device); +- +- update_touchpad_left_handed (input_settings, device); +- update_device_speed (input_settings, device); +- update_device_natural_scroll (input_settings, device); +- update_touchpad_tap_enabled (input_settings, device); +- update_touchpad_send_events (input_settings, device); +- update_touchpad_scroll_method (input_settings, device); +- update_touchpad_click_method (input_settings, device); +- +- update_trackball_scroll_button (input_settings, device); +-} +- +-static void + meta_input_settings_device_added (ClutterDeviceManager *device_manager, + ClutterInputDevice *device, + MetaInputSettings *input_settings) + { ++ ClutterInputDeviceType type; ++ MetaInputSettingsPrivate *priv; ++ + if (clutter_input_device_get_device_mode (device) == CLUTTER_INPUT_MODE_MASTER) + return; + +- apply_device_settings (input_settings, device); +- check_add_mappable_device (input_settings, device); ++ priv = meta_input_settings_get_instance_private (input_settings); ++ type = clutter_input_device_get_device_type (device); ++ ++ if (type == CLUTTER_POINTER_DEVICE) ++ { ++ update_mouse_left_handed (input_settings, device); ++ update_device_speed (input_settings, priv->mouse_settings, device, type); ++ ++ if (device_is_trackball (device)) ++ update_trackball_scroll_button (input_settings, device); ++ } ++ else if (type == CLUTTER_TOUCHPAD_DEVICE) ++ { ++ update_touchpad_left_handed (input_settings, device); ++ update_touchpad_tap_enabled (input_settings, device); ++ update_touchpad_scroll_method (input_settings, device); ++ update_touchpad_click_method (input_settings, device); ++ update_touchpad_send_events (input_settings, device); ++ ++ update_device_speed (input_settings, priv->touchpad_settings, ++ device, type); ++ update_device_natural_scroll (input_settings, priv->touchpad_settings, ++ device, type); ++ } ++ else ++ { ++ check_add_mappable_device (input_settings, device); ++ } + } + + static void +@@ -801,9 +782,25 @@ static void + meta_input_settings_constructed (GObject *object) + { + MetaInputSettings *input_settings = META_INPUT_SETTINGS (object); ++ MetaInputSettingsPrivate *priv; ++ ++ priv = meta_input_settings_get_instance_private (input_settings); ++ ++ update_mouse_left_handed (input_settings, NULL); ++ ++ update_touchpad_left_handed (input_settings, NULL); ++ update_touchpad_tap_enabled (input_settings, NULL); ++ update_touchpad_send_events (input_settings, NULL); ++ ++ update_device_natural_scroll (input_settings, priv->touchpad_settings, ++ NULL, CLUTTER_TOUCHPAD_DEVICE); ++ update_device_speed (input_settings, priv->touchpad_settings, NULL, ++ CLUTTER_TOUCHPAD_DEVICE); ++ update_device_speed (input_settings, priv->mouse_settings, NULL, ++ CLUTTER_POINTER_DEVICE); + +- apply_device_settings (input_settings, NULL); + update_keyboard_repeat (input_settings); ++ + check_mappable_devices (input_settings); + } +