[mutter] settings: Read desktop privacy settings and monitor privacy-screen option
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] settings: Read desktop privacy settings and monitor privacy-screen option
- Date: Tue, 25 Jan 2022 08:10:39 +0000 (UTC)
commit 55469fda787537e6dd260fa4eb958a4973a26023
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date: Mon Mar 22 01:09:43 2021 +0100
settings: Read desktop privacy settings and monitor privacy-screen option
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1952>
src/backends/meta-settings-private.h | 2 ++
src/backends/meta-settings.c | 51 ++++++++++++++++++++++++++++++++++++
2 files changed, 53 insertions(+)
---
diff --git a/src/backends/meta-settings-private.h b/src/backends/meta-settings-private.h
index cde7e04391..a56a8bcc4a 100644
--- a/src/backends/meta-settings-private.h
+++ b/src/backends/meta-settings-private.h
@@ -78,4 +78,6 @@ gboolean meta_settings_are_xwayland_grabs_allowed (MetaSettings *settings);
int meta_settings_get_xwayland_disable_extensions (MetaSettings *settings);
+gboolean meta_settings_is_privacy_screen_enabled (MetaSettings *settings);
+
#endif /* META_SETTINGS_PRIVATE_H */
diff --git a/src/backends/meta-settings.c b/src/backends/meta-settings.c
index 6a754d4e0a..d11e0b720b 100644
--- a/src/backends/meta-settings.c
+++ b/src/backends/meta-settings.c
@@ -41,6 +41,7 @@ enum
GLOBAL_SCALING_FACTOR_CHANGED,
FONT_DPI_CHANGED,
EXPERIMENTAL_FEATURES_CHANGED,
+ PRIVACY_SCREEN_CHANGED,
N_SIGNALS
};
@@ -55,6 +56,7 @@ struct _MetaSettings
GSettings *interface_settings;
GSettings *mutter_settings;
+ GSettings *privacy_settings;
GSettings *wayland_settings;
int ui_scaling_factor;
@@ -62,6 +64,8 @@ struct _MetaSettings
int font_dpi;
+ gboolean privacy_screen;
+
MetaExperimentalFeature experimental_features;
gboolean experimental_features_overridden;
@@ -221,6 +225,25 @@ interface_settings_changed (GSettings *interface_settings,
}
}
+static void
+privacy_settings_changed (GSettings *privacy_settings,
+ const char *key,
+ MetaSettings *settings)
+{
+ if (g_str_equal (key, "privacy-screen"))
+ {
+ gboolean privacy_screen;
+
+ privacy_screen = g_settings_get_boolean (privacy_settings, key);
+
+ if (settings->privacy_screen != privacy_screen)
+ {
+ settings->privacy_screen = privacy_screen;
+ g_signal_emit (settings, signals[PRIVACY_SCREEN_CHANGED], 0);
+ }
+ }
+}
+
gboolean
meta_settings_is_experimental_feature_enabled (MetaSettings *settings,
MetaExperimentalFeature feature)
@@ -400,6 +423,14 @@ update_xwayland_disable_extensions (MetaSettings *settings)
"xwayland-disable-extension");
}
+static void
+update_privacy_settings (MetaSettings *settings)
+{
+ privacy_settings_changed (settings->privacy_settings,
+ "privacy-screen",
+ settings);
+}
+
static void
wayland_settings_changed (GSettings *wayland_settings,
gchar *key,
@@ -441,6 +472,12 @@ meta_settings_get_xwayland_disable_extensions (MetaSettings *settings)
return (settings->xwayland_disable_extensions);
}
+gboolean
+meta_settings_is_privacy_screen_enabled (MetaSettings *settings)
+{
+ return settings->privacy_screen;
+}
+
MetaSettings *
meta_settings_new (MetaBackend *backend)
{
@@ -459,6 +496,7 @@ meta_settings_dispose (GObject *object)
g_clear_object (&settings->mutter_settings);
g_clear_object (&settings->interface_settings);
+ g_clear_object (&settings->privacy_settings);
g_clear_object (&settings->wayland_settings);
g_clear_pointer (&settings->xwayland_grab_allow_list_patterns,
g_ptr_array_unref);
@@ -475,6 +513,10 @@ meta_settings_init (MetaSettings *settings)
g_signal_connect (settings->interface_settings, "changed",
G_CALLBACK (interface_settings_changed),
settings);
+ settings->privacy_settings = g_settings_new ("org.gnome.desktop.privacy");
+ g_signal_connect (settings->privacy_settings, "changed",
+ G_CALLBACK (privacy_settings_changed),
+ settings);
settings->mutter_settings = g_settings_new ("org.gnome.mutter");
g_signal_connect (settings->mutter_settings, "changed",
G_CALLBACK (mutter_settings_changed),
@@ -495,6 +537,7 @@ meta_settings_init (MetaSettings *settings)
update_xwayland_grab_access_rules (settings);
update_xwayland_allow_grabs (settings);
update_xwayland_disable_extensions (settings);
+ update_privacy_settings (settings);
}
static void
@@ -556,4 +599,12 @@ meta_settings_class_init (MetaSettingsClass *klass)
0,
NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_UINT);
+
+ signals[PRIVACY_SCREEN_CHANGED] =
+ g_signal_new ("privacy-screen-changed",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL, NULL,
+ G_TYPE_NONE, 0);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]