summaryrefslogtreecommitdiff
path: root/gdk/wayland
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2014-07-25 09:32:55 -0400
committerJasper St. Pierre <jstpierre@mecheye.net>2014-07-25 09:42:35 -0400
commit4eb2a74fb83d5287e645c91d30899dbc9525b603 (patch)
tree7348a88d5742250d4646b2a650c7fc5716c92ef4 /gdk/wayland
parentded609a7351a092346d11a5dcf663fb4dadd21e0 (diff)
downloadgtk+-4eb2a74fb83d5287e645c91d30899dbc9525b603.tar.gz
wayland-device: Refactor a bit
Delay the keyboard settings creation until we're delivering the key press. This means we don't have to create the settings for a server that sends us repeat information.
Diffstat (limited to 'gdk/wayland')
-rw-r--r--gdk/wayland/gdkdevice-wayland.c46
1 files changed, 26 insertions, 20 deletions
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index 9dfa84af1b..aa879b36e3 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -1084,6 +1084,26 @@ translate_keyboard_string (GdkEventKey *event)
}
}
+static GSettings *
+get_keyboard_settings (GdkWaylandDeviceData *device)
+{
+ if (!device->keyboard_settings)
+ {
+ GSettingsSchemaSource *source;
+ GSettingsSchema *schema;
+
+ source = g_settings_schema_source_get_default ();
+ schema = g_settings_schema_source_lookup (source, "org.gnome.settings-daemon.peripherals.keyboard", FALSE);
+ if (schema != NULL)
+ {
+ device->keyboard_settings = g_settings_new_full (schema, NULL, NULL);
+ g_settings_schema_unref (schema);
+ }
+ }
+
+ return device->keyboard_settings;
+}
+
static gboolean
get_key_repeat (GdkWaylandDeviceData *device,
guint *delay,
@@ -1091,11 +1111,13 @@ get_key_repeat (GdkWaylandDeviceData *device,
{
gboolean repeat;
- if (device->keyboard_settings)
+ GSettings *keyboard_settings = get_keyboard_settings (device);
+
+ if (keyboard_settings)
{
- repeat = g_settings_get_boolean (device->keyboard_settings, "repeat");
- *delay = g_settings_get_uint (device->keyboard_settings, "delay");
- *interval = g_settings_get_uint (device->keyboard_settings, "repeat-interval");
+ repeat = g_settings_get_boolean (keyboard_settings, "repeat");
+ *delay = g_settings_get_uint (keyboard_settings, "delay");
+ *interval = g_settings_get_uint (keyboard_settings, "repeat-interval");
}
else
{
@@ -1566,21 +1588,6 @@ static const struct wl_seat_listener seat_listener = {
};
static void
-init_settings (GdkWaylandDeviceData *device)
-{
- GSettingsSchemaSource *source;
- GSettingsSchema *schema;
-
- source = g_settings_schema_source_get_default ();
- schema = g_settings_schema_source_lookup (source, "org.gnome.settings-daemon.peripherals.keyboard", FALSE);
- if (schema != NULL)
- {
- device->keyboard_settings = g_settings_new_full (schema, NULL, NULL);
- g_settings_schema_unref (schema);
- }
-}
-
-static void
init_devices (GdkWaylandDeviceData *device)
{
GdkWaylandDeviceManager *device_manager =
@@ -1657,7 +1664,6 @@ _gdk_wayland_device_manager_add_seat (GdkDeviceManager *device_manager,
wl_compositor_create_surface (display_wayland->compositor);
init_devices (device);
- init_settings (device);
}
void