From fe077ffc4d751652a9a5f05ca1b5902b9a3c82c8 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Tue, 24 Aug 2021 16:44:10 +0200 Subject: [PATCH] + xdg-desktop-portal-1.8.1-6 Add PowerProfileMonitor portal Resolves: rhbz#1994468 --- power-profiles-daemon-gnome-40-backport.patch | 314 ++++++++++++++++++ xdg-desktop-portal.spec | 20 +- 2 files changed, 331 insertions(+), 3 deletions(-) create mode 100644 power-profiles-daemon-gnome-40-backport.patch diff --git a/power-profiles-daemon-gnome-40-backport.patch b/power-profiles-daemon-gnome-40-backport.patch new file mode 100644 index 0000000..808b1ad --- /dev/null +++ b/power-profiles-daemon-gnome-40-backport.patch @@ -0,0 +1,314 @@ +From 9e5e5ae969a96ab8ef6de7c28a0ebc1deae08b86 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Mon, 9 Aug 2021 16:41:29 +0200 +Subject: [PATCH 1/3] data: add PowerProfileMonitor interface definition + +--- + data/Makefile.am.inc | 1 + + ...freedesktop.portal.PowerProfileMonitor.xml | 43 +++++++++++++++++++ + 2 files changed, 44 insertions(+) + create mode 100644 data/org.freedesktop.portal.PowerProfileMonitor.xml + +diff --git a/data/Makefile.am.inc b/data/Makefile.am.inc +index aacba2a..3aabe16 100644 +--- a/data/Makefile.am.inc ++++ b/data/Makefile.am.inc +@@ -15,6 +15,7 @@ dist_introspection_DATA = \ + data/org.freedesktop.portal.NetworkMonitor.xml \ + data/org.freedesktop.portal.Notification.xml \ + data/org.freedesktop.portal.OpenURI.xml \ ++ data/org.freedesktop.portal.PowerProfileMonitor.xml \ + data/org.freedesktop.portal.Print.xml \ + data/org.freedesktop.portal.ProxyResolver.xml \ + data/org.freedesktop.portal.RemoteDesktop.xml \ +diff --git a/data/org.freedesktop.portal.PowerProfileMonitor.xml b/data/org.freedesktop.portal.PowerProfileMonitor.xml +new file mode 100644 +index 0000000..daf487a +--- /dev/null ++++ b/data/org.freedesktop.portal.PowerProfileMonitor.xml +@@ -0,0 +1,43 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +-- +2.31.1 + + +From 9a5ab798e345063eecaf6ef049cfab1ee3d52925 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Mon, 9 Aug 2021 17:11:25 +0200 +Subject: [PATCH 2/3] power-profile-monitor: Add portal implementation for + GPowerProfileMonitor + +See glib references: +https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2194 +--- + src/Makefile.am.inc | 3 + + src/power-profile-monitor.c | 113 ++++++++++++++++++++++++++++++++++++ + src/power-profile-monitor.h | 25 ++++++++ + src/xdg-desktop-portal.c | 2 + + 4 files changed, 143 insertions(+) + create mode 100644 src/power-profile-monitor.c + create mode 100644 src/power-profile-monitor.h + +diff --git a/src/Makefile.am.inc b/src/Makefile.am.inc +index 961a722..7e803dd 100644 +--- a/src/Makefile.am.inc ++++ b/src/Makefile.am.inc +@@ -41,6 +41,7 @@ PORTAL_IFACE_FILES =\ + data/org.freedesktop.portal.Camera.xml \ + data/org.freedesktop.portal.Secret.xml \ + data/org.freedesktop.portal.Wallpaper.xml \ ++ data/org.freedesktop.portal.PowerProfileMonitor.xml \ + $(NULL) + + PORTAL_IMPL_IFACE_FILES =\ +@@ -126,6 +127,8 @@ xdg_desktop_portal_SOURCES = \ + src/memory-monitor.h \ + src/network-monitor.c \ + src/network-monitor.h \ ++ src/power-profile-monitor.c \ ++ src/power-profile-monitor.h \ + src/proxy-resolver.c \ + src/proxy-resolver.h \ + src/screenshot.c \ +diff --git a/src/power-profile-monitor.c b/src/power-profile-monitor.c +new file mode 100644 +index 0000000..9ffa87a +--- /dev/null ++++ b/src/power-profile-monitor.c +@@ -0,0 +1,113 @@ ++/* ++ * Copyright © 2021 Red Hat, Inc ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library. If not, see . ++ * ++ * Authors: ++ * Bastien Nocera ++ */ ++ ++#include "config.h" ++ ++#include ++#include ++ ++#include "power-profile-monitor.h" ++#include "request.h" ++#include "xdp-dbus.h" ++#include "xdp-utils.h" ++ ++#if GLIB_CHECK_VERSION(2, 69, 1) ++#define HAS_POWER_PROFILE_MONITOR 1 ++#endif ++ ++typedef struct _PowerProfileMonitor PowerProfileMonitor; ++typedef struct _PowerProfileMonitorClass PowerProfileMonitorClass; ++ ++struct _PowerProfileMonitor ++{ ++ XdpPowerProfileMonitorSkeleton parent_instance; ++ ++#ifdef HAS_POWER_PROFILE_MONITOR ++ GPowerProfileMonitor *monitor; ++#endif /* HAS_POWER_PROFILE_MONITOR */ ++}; ++ ++struct _PowerProfileMonitorClass ++{ ++ XdpPowerProfileMonitorSkeletonClass parent_class; ++}; ++ ++static PowerProfileMonitor *power_profile_monitor; ++ ++GType power_profile_monitor_get_type (void) G_GNUC_CONST; ++static void power_profile_monitor_iface_init (XdpPowerProfileMonitorIface *iface); ++ ++G_DEFINE_TYPE_WITH_CODE (PowerProfileMonitor, power_profile_monitor, XDP_TYPE_POWER_PROFILE_MONITOR_SKELETON, ++ G_IMPLEMENT_INTERFACE (XDP_TYPE_POWER_PROFILE_MONITOR, power_profile_monitor_iface_init)); ++ ++static void ++power_profile_monitor_iface_init (XdpPowerProfileMonitorIface *iface) ++{ ++} ++ ++#ifdef HAS_POWER_PROFILE_MONITOR ++static void ++power_saver_enabled_changed_cb (GObject *gobject, ++ GParamSpec *pspec, ++ PowerProfileMonitor *ppm) ++{ ++ xdp_power_profile_monitor_set_power_saver_enabled (XDP_POWER_PROFILE_MONITOR (ppm), ++ g_power_profile_monitor_get_power_saver_enabled (ppm->monitor)); ++} ++#endif /* HAS_POWER_PROFILE_MONITOR */ ++ ++static void ++power_profile_monitor_init (PowerProfileMonitor *ppm) ++{ ++#ifdef HAS_POWER_PROFILE_MONITOR ++ ppm->monitor = g_power_profile_monitor_dup_default (); ++ g_signal_connect (ppm->monitor, "notify::power-saver-enabled", G_CALLBACK (power_saver_enabled_changed_cb), ppm); ++#endif /* HAS_POWER_PROFILE_MONITOR */ ++ ++ xdp_power_profile_monitor_set_version (XDP_POWER_PROFILE_MONITOR (ppm), 1); ++} ++ ++static void ++power_profile_monitor_finalize (GObject *object) ++{ ++#ifdef HAS_POWER_PROFILE_MONITOR ++ PowerProfileMonitor *ppm = (PowerProfileMonitor *) object; ++ ++ g_clear_object (&ppm->monitor); ++#endif /* HAS_POWER_PROFILE_MONITOR */ ++ ++ G_OBJECT_CLASS (power_profile_monitor_parent_class)->finalize (object); ++} ++ ++static void ++power_profile_monitor_class_init (PowerProfileMonitorClass *klass) ++{ ++ GObjectClass *object_class = G_OBJECT_CLASS (klass); ++ ++ object_class->finalize = power_profile_monitor_finalize; ++} ++ ++GDBusInterfaceSkeleton * ++power_profile_monitor_create (GDBusConnection *connection) ++{ ++ power_profile_monitor = g_object_new (power_profile_monitor_get_type (), NULL); ++ ++ return G_DBUS_INTERFACE_SKELETON (power_profile_monitor); ++} +diff --git a/src/power-profile-monitor.h b/src/power-profile-monitor.h +new file mode 100644 +index 0000000..b23ea8b +--- /dev/null ++++ b/src/power-profile-monitor.h +@@ -0,0 +1,25 @@ ++/* ++ * Copyright © 2021 Red Hat, Inc ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library. If not, see . ++ * ++ * Authors: ++ * Bastien Nocera ++ */ ++ ++#pragma once ++ ++#include ++ ++GDBusInterfaceSkeleton * power_profile_monitor_create (GDBusConnection *connection); +diff --git a/src/xdg-desktop-portal.c b/src/xdg-desktop-portal.c +index 88a6c5e..e5f3002 100644 +--- a/src/xdg-desktop-portal.c ++++ b/src/xdg-desktop-portal.c +@@ -40,6 +40,7 @@ + #include "print.h" + #include "memory-monitor.h" + #include "network-monitor.h" ++#include "power-profile-monitor.h" + #include "proxy-resolver.h" + #include "screenshot.h" + #include "notification.h" +@@ -227,6 +228,7 @@ on_bus_acquired (GDBusConnection *connection, + lockdown = xdp_impl_lockdown_skeleton_new (); + + export_portal_implementation (connection, memory_monitor_create (connection)); ++ export_portal_implementation (connection, power_profile_monitor_create (connection)); + export_portal_implementation (connection, network_monitor_create (connection)); + export_portal_implementation (connection, proxy_resolver_create (connection)); + export_portal_implementation (connection, trash_create (connection)); +-- +2.31.1 + + +From ba7413f52dfd2c933a261509e511ce724dd5042a Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Tue, 24 Aug 2021 16:38:18 +0200 +Subject: [PATCH 3/3] Force power-profiles-daemon support in + +--- + src/power-profile-monitor.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/power-profile-monitor.c b/src/power-profile-monitor.c +index 9ffa87a..d033fed 100644 +--- a/src/power-profile-monitor.c ++++ b/src/power-profile-monitor.c +@@ -28,9 +28,7 @@ + #include "xdp-dbus.h" + #include "xdp-utils.h" + +-#if GLIB_CHECK_VERSION(2, 69, 1) + #define HAS_POWER_PROFILE_MONITOR 1 +-#endif + + typedef struct _PowerProfileMonitor PowerProfileMonitor; + typedef struct _PowerProfileMonitorClass PowerProfileMonitorClass; +-- +2.31.1 + diff --git a/xdg-desktop-portal.spec b/xdg-desktop-portal.spec index 857b725..811720d 100644 --- a/xdg-desktop-portal.spec +++ b/xdg-desktop-portal.spec @@ -1,11 +1,11 @@ %global pipewire_version 0.2.90 %global geoclue_version 2.5.2 -%global glib_version 2.63.3 +%global glib_version 2.68.3-5 %global low_memory_monitor_version 2.0 Name: xdg-desktop-portal Version: 1.8.1 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Portal frontend service to flatpak License: LGPLv2+ @@ -23,6 +23,11 @@ BuildRequires: pkgconfig(libpipewire-0.3) >= %{pipewire_version} BuildRequires: /usr/bin/xmlto %{?systemd_requires} BuildRequires: systemd +BuildRequires: git +BuildRequires: automake +BuildRequires: autoconf +BuildRequires: libtool +BuildRequires: gettext-devel Requires: dbus # Required version for icon validator. @@ -36,6 +41,9 @@ Requires: /usr/bin/fusermount # Required for the GMemoryMonitor GIO API Requires: low-memory-monitor >= %{low_memory_monitor_version} +# https://github.com/flatpak/xdg-desktop-portal/pull/613 +Patch0: power-profiles-daemon-gnome-40-backport.patch + %description xdg-desktop-portal works by exposing a series of D-Bus interfaces known as portals under a well-known name (org.freedesktop.portal.Desktop) and object @@ -51,7 +59,8 @@ The pkg-config file for %{name}. %prep -%autosetup -p1 +%autosetup -S git -p1 +autoreconf -f -i %build @@ -102,6 +111,11 @@ install -dm 755 %{buildroot}/%{_datadir}/%{name}/portals %changelog +* Tue Aug 24 2021 Bastien Nocera - 1.8.1-6 ++ xdg-desktop-portal-1.8.1-6 +- Add PowerProfileMonitor portal +- Resolves: rhbz#1994468 + * Tue Aug 10 2021 Mohan Boddu - 1.8.1-5 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688