[gnome-control-center] display-config: Parse privacy screen property and expose it per monitor
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] display-config: Parse privacy screen property and expose it per monitor
- Date: Thu, 28 Jul 2022 22:52:05 +0000 (UTC)
commit 2f6d086c6f8c00c1b04687bd9db5532ad7f4b773
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date: Mon Mar 22 06:58:51 2021 +0100
display-config: Parse privacy screen property and expose it per monitor
Each monitor can have a privacy screen property, so read it and expose
so that it can be at upper levels.
panels/display/cc-display-config-dbus.c | 24 ++++++++++++++++++++++++
panels/display/cc-display-config.c | 6 ++++++
panels/display/cc-display-config.h | 11 +++++++++++
3 files changed, 41 insertions(+)
---
diff --git a/panels/display/cc-display-config-dbus.c b/panels/display/cc-display-config-dbus.c
index be496a898..bea07e228 100644
--- a/panels/display/cc-display-config-dbus.c
+++ b/panels/display/cc-display-config-dbus.c
@@ -340,6 +340,7 @@ struct _CcDisplayMonitorDBus
int height_mm;
gboolean builtin;
CcDisplayMonitorUnderscanning underscanning;
+ CcDisplayMonitorPrivacy privacy_screen;
int max_width;
int max_height;
@@ -625,6 +626,14 @@ cc_display_monitor_dbus_get_underscanning (CcDisplayMonitor *pself)
return self->underscanning == UNDERSCANNING_ENABLED;
}
+static CcDisplayMonitorPrivacy
+cc_display_monitor_dbus_get_privacy (CcDisplayMonitor *pself)
+{
+ CcDisplayMonitorDBus *self = CC_DISPLAY_MONITOR_DBUS (pself);
+
+ return self->privacy_screen;
+}
+
static void
cc_display_monitor_dbus_set_underscanning (CcDisplayMonitor *pself,
gboolean underscanning)
@@ -843,6 +852,7 @@ cc_display_monitor_dbus_class_init (CcDisplayMonitorDBusClass *klass)
parent_class->supports_underscanning = cc_display_monitor_dbus_supports_underscanning;
parent_class->get_underscanning = cc_display_monitor_dbus_get_underscanning;
parent_class->set_underscanning = cc_display_monitor_dbus_set_underscanning;
+ parent_class->get_privacy = cc_display_monitor_dbus_get_privacy;
parent_class->set_mode = cc_display_monitor_dbus_set_mode;
parent_class->set_compatible_clone_mode = cc_display_monitor_dbus_set_compatible_clone_mode;
parent_class->set_position = cc_display_monitor_dbus_set_position;
@@ -932,6 +942,20 @@ cc_display_monitor_dbus_new (GVariant *variant,
{
g_variant_get (v, "s", &self->display_name);
}
+ else if (g_str_equal (s, "privacy-screen-state"))
+ {
+ gboolean enabled;
+ gboolean locked;
+ g_variant_get (v, "(bb)", &enabled, &locked);
+
+ if (enabled)
+ self->privacy_screen = CC_DISPLAY_MONITOR_PRIVACY_ENABLED;
+ else
+ self->privacy_screen = CC_DISPLAY_MONITOR_PRIVACY_DISABLED;
+
+ if (locked)
+ self->privacy_screen |= CC_DISPLAY_MONITOR_PRIVACY_LOCKED;
+ }
}
return self;
diff --git a/panels/display/cc-display-config.c b/panels/display/cc-display-config.c
index 271342cbf..b7532f99a 100644
--- a/panels/display/cc-display-config.c
+++ b/panels/display/cc-display-config.c
@@ -334,6 +334,12 @@ cc_display_monitor_set_underscanning (CcDisplayMonitor *self,
return CC_DISPLAY_MONITOR_GET_CLASS (self)->set_underscanning (self, underscanning);
}
+CcDisplayMonitorPrivacy
+cc_display_monitor_get_privacy (CcDisplayMonitor *self)
+{
+ return CC_DISPLAY_MONITOR_GET_CLASS (self)->get_privacy (self);
+}
+
void
cc_display_monitor_set_mode (CcDisplayMonitor *self, CcDisplayMode *m)
{
diff --git a/panels/display/cc-display-config.h b/panels/display/cc-display-config.h
index 852efa109..1241adcd5 100644
--- a/panels/display/cc-display-config.h
+++ b/panels/display/cc-display-config.h
@@ -68,6 +68,14 @@ typedef enum _CcDisplayRotation
CC_DISPLAY_ROTATION_270_FLIPPED,
} CcDisplayRotation;
+typedef enum _CcDisplayMonitorPrivacy
+{
+ CC_DISPLAY_MONITOR_PRIVACY_UNSUPPORTED = 0,
+ CC_DISPLAY_MONITOR_PRIVACY_DISABLED = 1 << 0,
+ CC_DISPLAY_MONITOR_PRIVACY_ENABLED = 1 << 1,
+ CC_DISPLAY_MONITOR_PRIVACY_LOCKED = 1 << 2,
+} CcDisplayMonitorPrivacy;
+
#define CC_TYPE_DISPLAY_MODE (cc_display_mode_get_type ())
G_DECLARE_DERIVABLE_TYPE (CcDisplayMode, cc_display_mode,
@@ -123,6 +131,7 @@ struct _CcDisplayMonitorClass
gboolean (*get_underscanning) (CcDisplayMonitor *self);
void (*set_underscanning) (CcDisplayMonitor *self,
gboolean u);
+ CcDisplayMonitorPrivacy (*get_privacy) (CcDisplayMonitor *self);
CcDisplayMode* (*get_mode) (CcDisplayMonitor *self);
CcDisplayMode* (*get_preferred_mode) (CcDisplayMonitor *self);
GList* (*get_modes) (CcDisplayMonitor *self);
@@ -218,6 +227,8 @@ gboolean cc_display_monitor_get_underscanning (CcDisplayMonitor *
void cc_display_monitor_set_underscanning (CcDisplayMonitor *monitor,
gboolean underscanning);
+CcDisplayMonitorPrivacy cc_display_monitor_get_privacy (CcDisplayMonitor *self);
+
CcDisplayMode* cc_display_monitor_get_mode (CcDisplayMonitor *monitor);
void cc_display_monitor_get_geometry (CcDisplayMonitor *monitor,
int *x,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]