[mutter/bilelmoussaoui/settings-daemon: 1/2] backend: Check if the gsettings scheme exists
- From: Bilal Elmoussaoui <bilelmoussaoui src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/bilelmoussaoui/settings-daemon: 1/2] backend: Check if the gsettings scheme exists
- Date: Wed, 4 May 2022 11:28:37 +0000 (UTC)
commit c373f253edf6c3d70a31f5b7a0a975d5fba309b1
Author: Bilal Elmoussaoui <belmouss redhat com>
Date: Tue May 3 12:40:13 2022 +0200
backend: Check if the gsettings scheme exists
Mutter makes use of a gsettings scheme that comes from
gnome-settings-daemon to check for the screen orientation.
In use cases where gnome-settings-daemon is not available,
this would lead to a crash as the key doesn't exists
src/backends/meta-orientation-manager.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
---
diff --git a/src/backends/meta-orientation-manager.c b/src/backends/meta-orientation-manager.c
index 7989aa84fc..7c2510611c 100644
--- a/src/backends/meta-orientation-manager.c
+++ b/src/backends/meta-orientation-manager.c
@@ -122,7 +122,8 @@ sync_state (MetaOrientationManager *self)
if (had_accel != self->has_accel)
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_HAS_ACCELEROMETER]);
- if (g_settings_get_boolean (self->settings, ORIENTATION_LOCK_KEY))
+ if (self->settings != NULL &&
+ g_settings_get_boolean (self->settings, ORIENTATION_LOCK_KEY))
return;
if (self->prev_orientation == self->curr_orientation)
@@ -273,6 +274,8 @@ iio_sensor_vanished_cb (GDBusConnection *connection,
static void
meta_orientation_manager_init (MetaOrientationManager *self)
{
+
+ GSettingsSchemaSource *schema_source = g_settings_schema_source_get_default ();
self->iio_watch_id = g_bus_watch_name (G_BUS_TYPE_SYSTEM,
"net.hadess.SensorProxy",
G_BUS_NAME_WATCHER_FLAGS_NONE,
@@ -281,10 +284,13 @@ meta_orientation_manager_init (MetaOrientationManager *self)
self,
NULL);
- self->settings = g_settings_new (CONF_SCHEMA);
- g_signal_connect_object (self->settings, "changed::"ORIENTATION_LOCK_KEY,
- G_CALLBACK (orientation_lock_changed), self, 0);
- sync_state (self);
+ if (g_settings_schema_source_lookup (schema_source, CONF_SCHEMA, TRUE))
+ {
+ self->settings = g_settings_new (CONF_SCHEMA);
+ g_signal_connect_object (self->settings, "changed::"ORIENTATION_LOCK_KEY,
+ G_CALLBACK (orientation_lock_changed), self, 0);
+ sync_state (self);
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]