diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2015-04-29 19:13:41 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2015-04-29 19:28:42 +0200 |
commit | 015f050724ac89422abeb1448b9e95ab74e82801 (patch) | |
tree | ba0c401ff6eafc9cb972e50d8ee6f2d2219c59fd | |
parent | b23917f0a279aba4599cdc7a5b34055f3d8975ba (diff) | |
download | gnome-settings-daemon-015f050724ac89422abeb1448b9e95ab74e82801.tar.gz |
wacom: Remove calibration notification
On sane hardware it is mainly unneeded, and the UI on g-c-c is
discoverable enough for the cases where it isn't, so let's avoid
nagging about something mostly superfluous.
https://bugzilla.gnome.org/show_bug.cgi?id=748659
-rw-r--r-- | data/org.gnome.settings-daemon.peripherals.wacom.gschema.xml.in.in | 5 | ||||
-rw-r--r-- | plugins/wacom/gsd-wacom-manager.c | 210 |
2 files changed, 0 insertions, 215 deletions
diff --git a/data/org.gnome.settings-daemon.peripherals.wacom.gschema.xml.in.in b/data/org.gnome.settings-daemon.peripherals.wacom.gschema.xml.in.in index 4e027707..083913ab 100644 --- a/data/org.gnome.settings-daemon.peripherals.wacom.gschema.xml.in.in +++ b/data/org.gnome.settings-daemon.peripherals.wacom.gschema.xml.in.in @@ -41,11 +41,6 @@ <_summary>Wacom touch feature</_summary> <_description>Enable this to move the cursor when the user touches the tablet.</_description> </key> - <key name="last-calibrated-resolution" type="(ii)"> - <default>(-1, -1)</default> - <_summary>Wacom last calibrated resolution</_summary> - <_description>Holds the last calibrated resolution to help check if calibration is needed.</_description> - </key> </schema> <schema gettext-domain="@GETTEXT_PACKAGE@" id="org.gnome.settings-daemon.peripherals.wacom.stylus"> <key name="pressurecurve" type="ai"> diff --git a/plugins/wacom/gsd-wacom-manager.c b/plugins/wacom/gsd-wacom-manager.c index 6fd21131..f0732bd7 100644 --- a/plugins/wacom/gsd-wacom-manager.c +++ b/plugins/wacom/gsd-wacom-manager.c @@ -64,7 +64,6 @@ #define KEY_IS_ABSOLUTE "is-absolute" #define KEY_AREA "area" #define KEY_KEEP_ASPECT "keep-aspect" -#define KEY_LAST_CALIBRATED_RESOLUTION "last-calibrated-resolution" /* Stylus and Eraser settings */ #define KEY_BUTTON_MAPPING "buttonmapping" @@ -80,8 +79,6 @@ /* See "Wacom Pressure Threshold" */ #define DEFAULT_PRESSURE_THRESHOLD 27 -#define CALIBRATION_NOTIFICATION_TIMEOUT 15000 -#define SHOW_CALIBRATION_TIMEOUT 2000 #define UNKNOWN_DEVICE_NOTIFICATION_TIMEOUT 15000 #define GSD_WACOM_DBUS_PATH GSD_DBUS_PATH "/Wacom" @@ -98,13 +95,6 @@ static const gchar introspection_xml[] = " </interface>" "</node>"; -typedef struct -{ - NotifyNotification *calibration_notification; - GsdWacomDevice *device; - guint notification_timeout_id; -} GsdWacomDeviceCalibration; - struct GsdWacomManagerPrivate { guint start_idle_id; @@ -138,8 +128,6 @@ static void gsd_wacom_manager_class_init (GsdWacomManagerClass *klass); static void gsd_wacom_manager_init (GsdWacomManager *wacom_manager); static void gsd_wacom_manager_finalize (GObject *object); -static void wacom_device_calibration_check (GsdWacomDevice *device); - static gboolean osd_window_toggle_visibility (GsdWacomManager *manager, GsdWacomDevice *device); @@ -866,10 +854,6 @@ wacom_settings_changed (GSettings *settings, type != WACOM_TYPE_PAD && type != WACOM_TYPE_TOUCH) set_absolute (device, g_settings_get_boolean (settings, key)); - } else if (g_str_equal (key, KEY_LAST_CALIBRATED_RESOLUTION)) { - if (type == WACOM_TYPE_STYLUS && - gsd_wacom_device_is_screen_tablet (device)) - wacom_device_calibration_check (device); } else if (g_str_equal (key, KEY_AREA)) { if (type != WACOM_TYPE_CURSOR && type != WACOM_TYPE_PAD && @@ -1095,10 +1079,6 @@ gsd_wacom_manager_add_gdk_device (GsdWacomManager *manager, } set_wacom_settings (manager, device); - - if (type == WACOM_TYPE_STYLUS && - gsd_wacom_device_is_screen_tablet (device)) - wacom_device_calibration_check (device); } static void @@ -1578,194 +1558,6 @@ gsd_wacom_manager_idle_cb (GsdWacomManager *manager) return FALSE; } -static gboolean -check_need_for_calibration (GsdWacomDevice *device) -{ - GSettings *settings; - GVariant *variant; - gint width, height; - GdkScreen *screen; - GdkDevice *gdk_device; - GsdDevice *gsd_device; - GsdDeviceMapper *mapper; - gint monitor; - GdkRectangle geometry; - - g_debug ("Checking calibration for: %s", gsd_wacom_device_get_name (device)); - - width = -1; - height = -1; - - screen = gdk_screen_get_default (); - mapper = gsd_device_mapper_get (); - gdk_device = gsd_wacom_device_get_gdk_device (device); - gsd_device = gsd_x11_device_manager_lookup_gdk_device (GSD_X11_DEVICE_MANAGER (gsd_device_manager_get ()), - gdk_device); - monitor = gsd_device_mapper_get_device_monitor (mapper, gsd_device); - - if (monitor < 0) { - geometry.width = gdk_screen_get_width (screen); - geometry.height = gdk_screen_get_height (screen); - } else { - gdk_screen_get_monitor_geometry (screen, monitor, &geometry); - } - - settings = gsd_wacom_device_get_settings (device); - - variant = g_settings_get_value (settings, KEY_LAST_CALIBRATED_RESOLUTION); - - g_variant_get (variant, "(ii)", &width, &height); - - g_debug ("Last calibrated resolution: %d, %d", width, height); - - return width == -1 || width != geometry.width || - height == -1 || height != geometry.height; -} - -static void -wacom_device_calibration_data_unset (GsdWacomDevice *device) -{ - g_object_set_data (G_OBJECT (device), - "gsd-wacom-calibration-data", NULL); -} - -static void -on_notification_closed (NotifyNotification *notification, - GsdWacomDeviceCalibration *data) -{ - wacom_device_calibration_data_unset (data->device); -} - -static void -on_notification_action (NotifyNotification *notification, - gchar *action, - gpointer user_data) -{ - gboolean success; - gchar *command; - const gchar *device_name; - GError *error = NULL; - GsdWacomDeviceCalibration *data = user_data; - - device_name = gsd_wacom_device_get_name (data->device); - - if (g_strcmp0 (action, "run-calibration") == 0) { - command = g_strdup_printf ("gnome-control-center wacom run-calibration \"%s\"", - device_name); - success = g_spawn_command_line_async (command, &error); - if (!success) { - g_warning ("Failure launching gnome-control-center: %s", - error->message); - g_clear_error (&error); - } - g_free (command); - } - - wacom_device_calibration_data_unset (data->device); -} - -static void -wacom_device_calibration_data_free (GsdWacomDeviceCalibration *data) -{ - if (data->notification_timeout_id) - g_source_remove (data->notification_timeout_id); - - if (data->calibration_notification) { - notify_notification_close (data->calibration_notification, NULL); - g_object_unref (data->calibration_notification); - } - - g_free (data); -} - -static void -wacom_device_calibration_data_update (GsdWacomDeviceCalibration *data) -{ - gchar *msg_body; - - if (data->calibration_notification) { - notify_notification_close (data->calibration_notification, NULL); - g_object_unref (data->calibration_notification); - } - - msg_body = g_strdup_printf (_("Tablet %s needs to be calibrated."), - gsd_wacom_device_get_name (data->device)); - data->calibration_notification = notify_notification_new (_("Calibration needed"), - msg_body, - "input-tablet"); - notify_notification_set_app_name (data->calibration_notification, - _("Wacom Settings")); - notify_notification_set_timeout (data->calibration_notification, - CALIBRATION_NOTIFICATION_TIMEOUT); - notify_notification_set_urgency (data->calibration_notification, - NOTIFY_URGENCY_NORMAL); - /* TRANSLATORS: launches the calibration screen for the - tablet in question */ - notify_notification_add_action (data->calibration_notification, - "run-calibration", - _("Calibrate"), - on_notification_action, - data, - NULL); - - g_signal_connect (data->calibration_notification, - "closed", - G_CALLBACK (on_notification_closed), - data); - - g_free (msg_body); -} - -static GsdWacomDeviceCalibration * -wacom_device_calibration_data_get (GsdWacomDevice *device) -{ - GsdWacomDeviceCalibration *data; - - data = g_object_get_data (G_OBJECT (device), "gsd-wacom-calibration-data"); - - if (data) - return data; - - data = g_new0 (GsdWacomDeviceCalibration, 1); - data->device = device; - - g_object_set_data_full (G_OBJECT (device), - "gsd-wacom-calibration-data", data, - (GDestroyNotify) wacom_device_calibration_data_free); - return data; -} - -static gboolean -notify_need_for_calibration (gpointer user_data) -{ - GsdWacomDeviceCalibration *data = user_data; - - notify_notification_show (data->calibration_notification, NULL); - data->notification_timeout_id = 0; - - return G_SOURCE_REMOVE; -} - -static void -wacom_device_calibration_check (GsdWacomDevice *device) -{ - if (check_need_for_calibration (device)) { - GsdWacomDeviceCalibration *data; - - data = wacom_device_calibration_data_get (device); - wacom_device_calibration_data_update (data); - - if (data->notification_timeout_id == 0) { - data->notification_timeout_id = g_timeout_add (SHOW_CALIBRATION_TIMEOUT, - notify_need_for_calibration, - data); - g_source_set_name_by_id (data->notification_timeout_id, "[gnome-settings-daemon] notify_need_for_calibration"); - } - } else { - wacom_device_calibration_data_unset (device); - } -} - /* * The monitors-changed signal is emitted when the number, size or * position of the monitors attached to the screen change. @@ -1800,8 +1592,6 @@ on_screen_changed_cb (GnomeRRScreen *rr_screen, if (type != WACOM_TYPE_TOUCH) { if (gsd_wacom_device_is_screen_tablet (device) == FALSE) { set_keep_aspect (device, g_settings_get_boolean (settings, KEY_KEEP_ASPECT)); - } else if (type == WACOM_TYPE_STYLUS) { - wacom_device_calibration_check (device); } set_area (device, g_settings_get_value (settings, KEY_AREA)); |