wacom: Update from gnome-settings-daemon

This commit is contained in:
Bastien Nocera 2012-01-25 19:12:13 +00:00
parent abbc0210e6
commit e091f68b70
2 changed files with 65 additions and 31 deletions

View file

@ -37,7 +37,7 @@
#include "gsd-input-helper.h"
#include "gnome-settings-daemon/gsd-enums.h"
#include "gsd-enums.h"
#include "gsd-wacom-device.h"
#define GSD_WACOM_STYLUS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_WACOM_STYLUS, GsdWacomStylusPrivate))
@ -224,6 +224,14 @@ gsd_wacom_stylus_get_stylus_type (GsdWacomStylus *stylus)
return WACOM_STYLUS_TYPE_UNKNOWN;
}
int
gsd_wacom_stylus_get_id (GsdWacomStylus *stylus)
{
g_return_val_if_fail (GSD_IS_WACOM_STYLUS (stylus), -1);
return stylus->priv->id;
}
#define GSD_WACOM_DEVICE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_WACOM_DEVICE, GsdWacomDevicePrivate))
/* we support two types of settings:
@ -399,14 +407,6 @@ get_device_type (XDeviceInfo *dev)
return ret;
}
static char *
get_device_name (WacomDevice *device)
{
return g_strdup_printf ("%s %s",
libwacom_get_vendor (device),
libwacom_get_product (device));
}
/* Finds an output which matches the given EDID information. Any NULL
* parameter will be interpreted to match any value.
*/
@ -472,6 +472,9 @@ find_output_by_display (GsdWacomDevice *device)
GVariant *display;
const gchar **edid;
if (device == NULL)
return NULL;
tablet = device->priv->wacom_settings;
display = g_settings_get_value (tablet, "display");
edid = g_variant_get_strv (display, &n);
@ -508,10 +511,19 @@ set_display_by_output (GsdWacomDevice *device,
return;
}
o_vendor = g_malloc0 (4);
gnome_rr_output_info_get_vendor (rr_output_info, o_vendor);
o_product = g_strdup_printf ("%d", gnome_rr_output_info_get_product (rr_output_info));
o_serial = g_strdup_printf ("%d", gnome_rr_output_info_get_serial (rr_output_info));
if (rr_output_info == NULL)
{
o_vendor = g_strdup ("");
o_product = g_strdup ("");
o_serial = g_strdup ("");
}
else
{
o_vendor = g_malloc0 (4);
gnome_rr_output_info_get_vendor (rr_output_info, o_vendor);
o_product = g_strdup_printf ("%d", gnome_rr_output_info_get_product (rr_output_info));
o_serial = g_strdup_printf ("%d", gnome_rr_output_info_get_serial (rr_output_info));
}
values[0] = o_vendor;
values[1] = o_product;
@ -684,7 +696,7 @@ gsd_wacom_device_update_from_db (GsdWacomDevice *device,
device->priv->wacom_settings = g_settings_new_with_path (WACOM_TABLET_SCHEMA,
settings_path);
device->priv->name = get_device_name (wacom_device);
device->priv->name = g_strdup (libwacom_get_name (wacom_device));
device->priv->reversible = libwacom_is_reversible (wacom_device);
device->priv->is_screen_tablet = libwacom_is_builtin (wacom_device);
if (device->priv->is_screen_tablet) {
@ -1000,6 +1012,7 @@ gsd_wacom_device_set_current_stylus (GsdWacomDevice *device,
int stylus_id)
{
GList *l;
GsdWacomStylus *stylus;
g_return_if_fail (GSD_IS_WACOM_DEVICE (device));
@ -1011,7 +1024,7 @@ gsd_wacom_device_set_current_stylus (GsdWacomDevice *device,
}
for (l = device->priv->styli; l; l = l->next) {
GsdWacomStylus *stylus = l->data;
stylus = l->data;
/* Set a nice default if 0x0 */
if (stylus_id == 0x0 &&
@ -1026,7 +1039,27 @@ gsd_wacom_device_set_current_stylus (GsdWacomDevice *device,
}
}
g_warning ("Could not find stylus ID 0x%x for tablet '%s'", stylus_id, device->priv->name);
/* Setting the default stylus to be the generic one */
for (l = device->priv->styli; l; l = l->next) {
stylus = l->data;
/* Set a nice default if 0x0 */
if (stylus->priv->type == WSTYLUS_GENERAL) {
g_debug ("Could not find stylus ID 0x%x for tablet '%s', setting general pen ID 0x%x instead",
stylus_id, device->priv->name, stylus->priv->id);
g_object_set (device, "last-stylus", stylus, NULL);
return;
}
}
g_warning ("Could not set the current stylus ID 0x%x for tablet '%s', no general pen found",
stylus_id, device->priv->name);
/* Setting the default stylus to be the first one */
g_assert (device->priv->styli);
stylus = device->priv->styli->data;
g_object_set (device, "last-stylus", stylus, NULL);
}
GsdWacomDeviceType
@ -1130,17 +1163,17 @@ gsd_wacom_device_create_fake_cintiq (void)
GList *devices;
device = gsd_wacom_device_create_fake (WACOM_TYPE_STYLUS,
"Cintiq 21UX2",
"Wacom Cintiq 21UX2",
"Wacom Cintiq 21UX2 stylus");
devices = g_list_prepend (NULL, device);
device = gsd_wacom_device_create_fake (WACOM_TYPE_ERASER,
"Cintiq 21UX2",
"Wacom Cintiq 21UX2",
"Wacom Cintiq 21UX2 eraser");
devices = g_list_prepend (devices, device);
device = gsd_wacom_device_create_fake (WACOM_TYPE_PAD,
"Cintiq 21UX2",
"Wacom Cintiq 21UX2",
"Wacom Cintiq 21UX2 pad");
devices = g_list_prepend (devices, device);
@ -1154,22 +1187,22 @@ gsd_wacom_device_create_fake_bt (void)
GList *devices;
device = gsd_wacom_device_create_fake (WACOM_TYPE_STYLUS,
"Graphire Wireless",
"Wacom Graphire Wireless",
"Graphire Wireless stylus");
devices = g_list_prepend (NULL, device);
device = gsd_wacom_device_create_fake (WACOM_TYPE_ERASER,
"Graphire Wireless",
"Wacom Graphire Wireless",
"Graphire Wireless eraser");
devices = g_list_prepend (devices, device);
device = gsd_wacom_device_create_fake (WACOM_TYPE_PAD,
"Graphire Wireless",
"Wacom Graphire Wireless",
"Graphire Wireless pad");
devices = g_list_prepend (devices, device);
device = gsd_wacom_device_create_fake (WACOM_TYPE_CURSOR,
"Graphire Wireless",
"Wacom Graphire Wireless",
"Graphire Wireless cursor");
devices = g_list_prepend (devices, device);
@ -1183,13 +1216,13 @@ gsd_wacom_device_create_fake_x201 (void)
GList *devices;
device = gsd_wacom_device_create_fake (WACOM_TYPE_STYLUS,
"Serial Tablet WACf004",
"Serial Tablet WACf004 stylus");
"Wacom Serial Tablet WACf004",
"Wacom Serial Tablet WACf004 stylus");
devices = g_list_prepend (NULL, device);
device = gsd_wacom_device_create_fake (WACOM_TYPE_ERASER,
"Serial Tablet WACf004",
"Serial Tablet WACf004 eraser");
"Wacom Serial Tablet WACf004",
"Wacom Serial Tablet WACf004 eraser");
devices = g_list_prepend (devices, device);
return devices;
@ -1202,22 +1235,22 @@ gsd_wacom_device_create_fake_intuos4 (void)
GList *devices;
device = gsd_wacom_device_create_fake (WACOM_TYPE_STYLUS,
"Intuos 4 M 6x9",
"Wacom Intuos 4 M 6x9",
"Wacom Intuos4 6x9 stylus");
devices = g_list_prepend (NULL, device);
device = gsd_wacom_device_create_fake (WACOM_TYPE_ERASER,
"Intuos 4 M 6x9",
"Wacom Intuos 4 M 6x9",
"Wacom Intuos4 6x9 eraser");
devices = g_list_prepend (devices, device);
device = gsd_wacom_device_create_fake (WACOM_TYPE_PAD,
"Intuos 4 M 6x9",
"Wacom Intuos 4 M 6x9",
"Wacom Intuos4 6x9 pad");
devices = g_list_prepend (devices, device);
device = gsd_wacom_device_create_fake (WACOM_TYPE_CURSOR,
"Intuos 4 M 6x9",
"Wacom Intuos 4 M 6x9",
"Wacom Intuos4 6x9 cursor");
devices = g_list_prepend (devices, device);

View file

@ -85,6 +85,7 @@ const char * gsd_wacom_stylus_get_icon_name (GsdWacomStylus *stylus);
GsdWacomDevice * gsd_wacom_stylus_get_device (GsdWacomStylus *stylus);
gboolean gsd_wacom_stylus_get_has_eraser (GsdWacomStylus *stylus);
int gsd_wacom_stylus_get_num_buttons(GsdWacomStylus *stylus);
int gsd_wacom_stylus_get_id (GsdWacomStylus *stylus);
GsdWacomStylusType gsd_wacom_stylus_get_stylus_type (GsdWacomStylus *stylus);
/* Device types to apply a setting to */