diff options
author | Philip Withnall <philip@tecnocode.co.uk> | 2021-09-07 10:16:40 +0000 |
---|---|---|
committer | Philip Withnall <philip@tecnocode.co.uk> | 2021-09-07 10:16:40 +0000 |
commit | b52de547cb782679f2f4115f19ac433fadf2db69 (patch) | |
tree | c0fa2f140a8ba452b82164a926f2cfab6f74cf6d | |
parent | e99ee3588a3c156bc0f4004d450c3e1bcc17f698 (diff) | |
parent | 4f62fdfd29f574333ad4350b28045193057fd047 (diff) | |
download | glib-b52de547cb782679f2f4115f19ac433fadf2db69.tar.gz |
Merge branch '2481-power-profile-default-value' into 'main'
gpowerprofilemonitorportal: Set property value by default
Closes #2481
See merge request GNOME/glib!2241
-rw-r--r-- | gio/gpowerprofilemonitordbus.c | 4 | ||||
-rw-r--r-- | gio/gpowerprofilemonitorportal.c | 7 | ||||
-rwxr-xr-x | gio/tests/power-profile-monitor-portal.py.in | 16 |
3 files changed, 26 insertions, 1 deletions
diff --git a/gio/gpowerprofilemonitordbus.c b/gio/gpowerprofilemonitordbus.c index 8bbfe3acc..cbd9f4aaa 100644 --- a/gio/gpowerprofilemonitordbus.c +++ b/gio/gpowerprofilemonitordbus.c @@ -116,7 +116,8 @@ ppd_proxy_cb (GObject *source_object, } active_profile_variant = g_dbus_proxy_get_cached_property (proxy, "ActiveProfile"); - if (g_variant_is_of_type (active_profile_variant, G_VARIANT_TYPE_STRING)) + if (active_profile_variant != NULL && + g_variant_is_of_type (active_profile_variant, G_VARIANT_TYPE_STRING)) { active_profile = g_variant_get_string (active_profile_variant, NULL); power_saver_enabled = g_strcmp0 (active_profile, "power-saver") == 0; @@ -126,6 +127,7 @@ ppd_proxy_cb (GObject *source_object, g_object_notify (G_OBJECT (dbus), "power-saver-enabled"); } } + g_clear_pointer (&active_profile_variant, g_variant_unref); dbus->signal_id = g_signal_connect (G_OBJECT (proxy), "g-properties-changed", G_CALLBACK (ppd_properties_changed_cb), dbus); diff --git a/gio/gpowerprofilemonitorportal.c b/gio/gpowerprofilemonitorportal.c index bb1b4fd15..6bc251fd5 100644 --- a/gio/gpowerprofilemonitorportal.c +++ b/gio/gpowerprofilemonitorportal.c @@ -108,6 +108,7 @@ g_power_profile_monitor_portal_initable_init (GInitable *initable, GPowerProfileMonitorPortal *ppm = G_POWER_PROFILE_MONITOR_PORTAL (initable); GDBusProxy *proxy; gchar *name_owner; + GVariant *power_saver_enabled_v = NULL; if (!glib_should_use_portal ()) { @@ -143,6 +144,12 @@ g_power_profile_monitor_portal_initable_init (GInitable *initable, ppm->signal_id = g_signal_connect (proxy, "g-properties-changed", G_CALLBACK (proxy_properties_changed), ppm); + power_saver_enabled_v = g_dbus_proxy_get_cached_property (proxy, "power-saver-enabled"); + if (power_saver_enabled_v != NULL && + g_variant_is_of_type (power_saver_enabled_v, G_VARIANT_TYPE_BOOLEAN)) + ppm->power_saver_enabled = g_variant_get_boolean (power_saver_enabled_v); + g_clear_pointer (&power_saver_enabled_v, g_variant_unref); + ppm->proxy = g_steal_pointer (&proxy); return TRUE; diff --git a/gio/tests/power-profile-monitor-portal.py.in b/gio/tests/power-profile-monitor-portal.py.in index 960a62232..09e9a450d 100755 --- a/gio/tests/power-profile-monitor-portal.py.in +++ b/gio/tests/power-profile-monitor-portal.py.in @@ -28,6 +28,7 @@ try: import dbusmock from gi.repository import GLib from gi.repository import Gio + from gi.repository import GObject dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) @@ -65,12 +66,16 @@ try: try: self.xdp = subprocess.Popen([XDG_DESKTOP_PORTAL_PATH]) except FileNotFoundError: + self.p_mock.terminate() + self.p_mock.wait() raise unittest.SkipTest("xdg-desktop-portal not available") try: self.wait_for_bus_object('org.freedesktop.portal.Desktop', '/org/freedesktop/portal/desktop') except: + self.p_mock.terminate() + self.p_mock.wait() raise # subprocess.Popen(['gdbus', 'monitor', '--session', '--dest', 'org.freedesktop.portal.Desktop']) @@ -116,6 +121,17 @@ try: self.dbus_props.Set('net.hadess.PowerProfiles', 'ActiveProfile', dbus.String('balanced', variant_level=1)) self.assertEventually(lambda: self.power_saver_enabled == False, "power-saver didn't become disabled", 10) + def test_power_profile_power_saver_enabled_portal_default(self): + '''power-saver-enabled property default value''' + + self.dbus_props.Set('net.hadess.PowerProfiles', 'ActiveProfile', dbus.String('power-saver', variant_level=1)) + + # Create a new power profile monitor and check its property value is + # correct by default. + new_power_profile_monitor = GObject.new(GObject.type_from_name('GPowerProfileMonitorPortal')) + new_power_profile_monitor.init() + self.assertTrue(new_power_profile_monitor.get_power_saver_enabled()) + except ImportError as e: @unittest.skip("Cannot import %s" % e.name) class TestPowerProfileMonitorPortal(unittest.TestCase): |