Update to 42.0

(cherry picked from commit 62ef86324960e8b055e293d234539bb8a79f5171)
This commit is contained in:
zhang__3125 2022-04-13 16:58:37 +08:00 committed by openeuler-sync-bot
parent 3db4e7ec25
commit 0a0732d120
8 changed files with 112 additions and 193 deletions

View File

@ -1,165 +0,0 @@
From cba2fdd2ee9fc3decd4179feeda0cb7d833f1022 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Tue, 14 Aug 2018 14:41:43 +0200
Subject: [PATCH 1/2] Add support for new ConfirmedRebootToBootOptions signal
send by org.gnome.SessionManager.EndSessionDialog
In order to allow the user to choose advanced boot-options on systems where
the boot menu is not shown by default at boot, gnome-shell's endSessionDialog.js
may emit a new ConfirmedRebootToBootOptions signal to indicate that
gnome-session should reboot the system in such a way that the boot-menu will
be shown next boot.
This implements the backend for the "Boot Options" button from:
https://wiki.gnome.org/Design/OS/BootOptions
Note that at the moment ConfirmedRebootToBootOptions is just treated as an
alias to ConfirmedReboot, since there is no bootloader agnostic way yet to
indicate the menu should be shown.
For now the FIXME may be patched with a distro specific patch to implement
this for the distro's chosen bootloader. I will start a discussion on
systemd-devel to come up with a distro / bootloader agnostic interface
for this.
---
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
index 6839a02..a915785 100644
--- a/gnome-session/gsm-manager.c
+++ b/gnome-session/gsm-manager.c
@@ -117,6 +117,7 @@ typedef enum
GSM_MANAGER_LOGOUT_NONE,
GSM_MANAGER_LOGOUT_LOGOUT,
GSM_MANAGER_LOGOUT_REBOOT,
+ GSM_MANAGER_LOGOUT_REBOOT_TO_BOOT_OPTIONS,
GSM_MANAGER_LOGOUT_REBOOT_INTERACT,
GSM_MANAGER_LOGOUT_SHUTDOWN,
GSM_MANAGER_LOGOUT_SHUTDOWN_INTERACT,
@@ -176,6 +177,7 @@ struct GsmManagerPrivate
guint shell_end_session_dialog_confirmed_logout_id;
guint shell_end_session_dialog_confirmed_shutdown_id;
guint shell_end_session_dialog_confirmed_reboot_id;
+ guint shell_end_session_dialog_confirmed_reboot_to_boot_options_id;
};
enum {
@@ -490,6 +492,7 @@ gsm_manager_quit (GsmManager *manager)
gsm_quit ();
break;
case GSM_MANAGER_LOGOUT_REBOOT:
+ case GSM_MANAGER_LOGOUT_REBOOT_TO_BOOT_OPTIONS:
case GSM_MANAGER_LOGOUT_REBOOT_INTERACT:
gsm_system_complete_shutdown (manager->priv->system);
gsm_quit ();
@@ -1161,6 +1164,7 @@ end_session_or_show_shell_dialog (GsmManager *manager)
type = GSM_SHELL_END_SESSION_DIALOG_TYPE_LOGOUT;
break;
case GSM_MANAGER_LOGOUT_REBOOT:
+ case GSM_MANAGER_LOGOUT_REBOOT_TO_BOOT_OPTIONS:
case GSM_MANAGER_LOGOUT_REBOOT_INTERACT:
type = GSM_SHELL_END_SESSION_DIALOG_TYPE_RESTART;
break;
@@ -3455,6 +3459,12 @@ disconnect_shell_dialog_signals (GsmManager *manager)
manager->priv->shell_end_session_dialog_confirmed_reboot_id = 0;
}
+ if (manager->priv->shell_end_session_dialog_confirmed_reboot_to_boot_options_id != 0) {
+ g_signal_handler_disconnect (manager->priv->shell,
+ manager->priv->shell_end_session_dialog_confirmed_reboot_to_boot_options_id);
+ manager->priv->shell_end_session_dialog_confirmed_reboot_to_boot_options_id = 0;
+ }
+
if (manager->priv->shell_end_session_dialog_open_failed_id != 0) {
g_signal_handler_disconnect (manager->priv->shell,
manager->priv->shell_end_session_dialog_open_failed_id);
@@ -3517,6 +3527,14 @@ on_shell_end_session_dialog_confirmed_reboot (GsmShell *shell,
disconnect_shell_dialog_signals (manager);
}
+static void
+on_shell_end_session_dialog_confirmed_reboot_to_boot_options (GsmShell *shell,
+ GsmManager *manager)
+{
+ _handle_end_session_dialog_response (manager, GSM_MANAGER_LOGOUT_REBOOT_TO_BOOT_OPTIONS);
+ disconnect_shell_dialog_signals (manager);
+}
+
static void
connect_shell_dialog_signals (GsmManager *manager)
{
@@ -3552,6 +3570,12 @@ connect_shell_dialog_signals (GsmManager *manager)
"end-session-dialog-confirmed-reboot",
G_CALLBACK (on_shell_end_session_dialog_confirmed_reboot),
manager);
+
+ manager->priv->shell_end_session_dialog_confirmed_reboot_to_boot_options_id =
+ g_signal_connect (manager->priv->shell,
+ "end-session-dialog-confirmed-reboot-to-boot-options",
+ G_CALLBACK (on_shell_end_session_dialog_confirmed_reboot_to_boot_options),
+ manager);
}
static void
@@ -3825,6 +3849,10 @@ do_query_end_session_exit (GsmManager *manager)
case GSM_MANAGER_LOGOUT_REBOOT_INTERACT:
reboot = TRUE;
break;
+ case GSM_MANAGER_LOGOUT_REBOOT_TO_BOOT_OPTIONS:
+ /* FIXME tell bootmanager to show menu on next boot */
+ reboot = TRUE;
+ break;
case GSM_MANAGER_LOGOUT_SHUTDOWN:
case GSM_MANAGER_LOGOUT_SHUTDOWN_INTERACT:
shutdown = TRUE;
diff --git a/gnome-session/gsm-shell.c b/gnome-session/gsm-shell.c
index 04cfa2f..ac2a157 100644
--- a/gnome-session/gsm-shell.c
+++ b/gnome-session/gsm-shell.c
@@ -69,6 +69,7 @@ enum {
END_SESSION_DIALOG_CONFIRMED_LOGOUT,
END_SESSION_DIALOG_CONFIRMED_SHUTDOWN,
END_SESSION_DIALOG_CONFIRMED_REBOOT,
+ END_SESSION_DIALOG_CONFIRMED_REBOOT_TO_BOOT_OPTIONS,
NUMBER_OF_SIGNALS
};
@@ -179,6 +180,14 @@ gsm_shell_class_init (GsmShellClass *shell_class)
NULL, NULL, NULL,
G_TYPE_NONE, 0);
+ signals [END_SESSION_DIALOG_CONFIRMED_REBOOT_TO_BOOT_OPTIONS] =
+ g_signal_new ("end-session-dialog-confirmed-reboot-to-boot-options",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GsmShellClass, end_session_dialog_confirmed_reboot_to_boot_options),
+ NULL, NULL, NULL,
+ G_TYPE_NONE, 0);
+
g_type_class_add_private (shell_class, sizeof (GsmShellPrivate));
}
@@ -342,6 +351,7 @@ on_end_session_dialog_dbus_signal (GDBusProxy *proxy,
{ "Canceled", END_SESSION_DIALOG_CANCELED },
{ "ConfirmedLogout", END_SESSION_DIALOG_CONFIRMED_LOGOUT },
{ "ConfirmedReboot", END_SESSION_DIALOG_CONFIRMED_REBOOT },
+ { "ConfirmedRebootToBootOptions", END_SESSION_DIALOG_CONFIRMED_REBOOT_TO_BOOT_OPTIONS },
{ "ConfirmedShutdown", END_SESSION_DIALOG_CONFIRMED_SHUTDOWN },
{ NULL, -1 }
};
diff --git a/gnome-session/gsm-shell.h b/gnome-session/gsm-shell.h
index e236493..b1cdd45 100644
--- a/gnome-session/gsm-shell.h
+++ b/gnome-session/gsm-shell.h
@@ -64,9 +64,10 @@ struct _GsmShellClass
void (* end_session_dialog_closed) (GsmShell *shell);
void (* end_session_dialog_canceled) (GsmShell *shell);
- void (* end_session_dialog_confirmed_logout) (GsmShell *shell);
- void (* end_session_dialog_confirmed_shutdown) (GsmShell *shell);
- void (* end_session_dialog_confirmed_reboot) (GsmShell *shell);
+ void (* end_session_dialog_confirmed_logout) (GsmShell *shell);
+ void (* end_session_dialog_confirmed_shutdown) (GsmShell *shell);
+ void (* end_session_dialog_confirmed_reboot) (GsmShell *shell);
+ void (* end_session_dialog_confirmed_reboot_to_boot_options) (GsmShell *shell);
};

View File

@ -0,0 +1,49 @@
From e3d6f1c1d342d0c74f2125ea0efa2a9669aaa8df Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Tue, 14 Aug 2018 14:49:59 +0200
Subject: [PATCH] Fedora: Set grub boot-flags on shutdown / reboot
Fedora's grub will automatically hide the boot-menu if the previous
boot has set the boot_success flag in grub's environment. This happens
automatically 30 seconds after login.
But if the user shuts down or reboots from the system-menu before then
(e.g. directly from gdm) then the boot_success flag gets not set. If
a reboot / shutdown is initiated through gnome-session then the user
is successfully interacting with the system, so set the boot_success
flag from gnome_session for this case to fix reboot from gdm leading to
the boot-menu not being hidden.
---
gnome-session/gsm-manager.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
index 6839a02d..589efb02 100644
--- a/gnome-session/gsm-manager.c
+++ b/gnome-session/gsm-manager.c
@@ -3823,10 +3823,22 @@ do_query_end_session_exit (GsmManager *manager)
break;
case GSM_MANAGER_LOGOUT_REBOOT:
case GSM_MANAGER_LOGOUT_REBOOT_INTERACT:
+ /*
+ * Fedora specific patch to make sure the boot-menu does not
+ * show when it is configured to auto-hide and a reboot is
+ * initiated directly from gdm.
+ */
+ system("/usr/sbin/grub2-set-bootflag boot_success");
reboot = TRUE;
break;
case GSM_MANAGER_LOGOUT_SHUTDOWN:
case GSM_MANAGER_LOGOUT_SHUTDOWN_INTERACT:
+ /*
+ * Fedora specific patch to make sure the boot-menu does not
+ * show when it is configured to auto-hide and a shutdown is
+ * initiated directly from gdm.
+ */
+ system("/usr/sbin/grub2-set-bootflag boot_success");
shutdown = TRUE;
break;
default:
--
2.28.0

View File

@ -8,12 +8,14 @@ can't guess correctly. Be explicit.
Signed-off-by: Adam Jackson <ajax@redhat.com>
---
.../gnome-session-check-accelerated-gles-helper.c | 36 +++++++++++++++++++++-
1 file changed, 35 insertions(+), 1 deletion(-)
diff --git a/tools/gnome-session-check-accelerated-gles-helper.c b/tools/gnome-session-check-accelerated-gles-helper.c
index 6a4463d..e05d49f 100644
index 2a38d9e..472d1ad 100644
--- a/tools/gnome-session-check-accelerated-gles-helper.c
+++ b/tools/gnome-session-check-accelerated-gles-helper.c
@@ -38,11 +38,43 @@
@@ -34,11 +34,43 @@
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#include <EGL/egl.h>
@ -30,25 +32,25 @@ index 6a4463d..e05d49f 100644
+ const char *client_exts = eglQueryString (NULL, EGL_EXTENSIONS);
+
+ if (g_strstr_len (client_exts, -1, "EGL_KHR_platform_base")) {
+ PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
+ (void *) eglGetProcAddress ("eglGetPlatformDisplay");
+ PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
+ (void *) eglGetProcAddress ("eglGetPlatformDisplay");
+
+ if (get_platform_display)
+ dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL);
+ if (get_platform_display)
+ dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL);
+
+ if (dpy)
+ return dpy;
+ if (dpy)
+ return dpy;
+ }
+
+ if (g_strstr_len (client_exts, -1, "EGL_EXT_platform_base")) {
+ PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
+ (void *) eglGetProcAddress ("eglGetPlatformDisplayEXT");
+ PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
+ (void *) eglGetProcAddress ("eglGetPlatformDisplayEXT");
+
+ if (get_platform_display)
+ dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL);
+ if (get_platform_display)
+ dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL);
+
+ if (dpy)
+ return dpy;
+ if (dpy)
+ return dpy;
+ }
+
+ return eglGetDisplay ((EGLNativeDisplayType) native);
@ -57,14 +59,17 @@ index 6a4463d..e05d49f 100644
static char *
get_gles_renderer (void)
{
@@ -71,7 +103,9 @@ get_gles_renderer (void)
@@ -67,7 +99,9 @@ get_gles_renderer (void)
gdk_error_trap_push ();
display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
- egl_dpy = eglGetDisplay (display);
+
+ egl_dpy = get_display (display);
+ egl_dpy = get_display (display);
+
if (!egl_dpy) {
g_warning ("eglGetDisplay() failed");
goto out;
--
2.9.3

View File

@ -0,0 +1,12 @@
--- gnome-session/data/hardware-compatibility 2012-03-21 16:30:06.269104695 -0700
+++ gnome-session/data/hardware-compatibility.new 2012-03-22 23:26:37.201967075 -0700
@@ -19,6 +19,9 @@
-Mesa DRI R[12]00[^[:digit:]]
-Mesa DRI R[12]00$
+# NV30 family on Nouveau: https://bugzilla.redhat.com/show_bug.cgi?id=745202
+-Gallium .* on NV3[0-9A-F]$
+
# Old Mesa software GL renderer
-software rasterizer

Binary file not shown.

View File

@ -0,0 +1,12 @@
diff -up gnome-session-3.6.2/data/hardware-compatibility.jx gnome-session-3.6.2/data/hardware-compatibility
--- gnome-session-3.6.2/data/hardware-compatibility.jx 2012-12-10 12:43:06.000000000 -0500
+++ gnome-session-3.6.2/data/hardware-compatibility 2012-12-10 12:43:50.424352484 -0500
@@ -23,7 +23,7 @@
-Gallium .* on NV3[0-9A-F]$
# Old Mesa software GL renderer
--software rasterizer
+#software rasterizer
# Gallium has softpipe; we explicitly enable llvmpipe
-softpipe

BIN
gnome-session-42.0.tar.xz Normal file

Binary file not shown.

View File

@ -1,14 +1,17 @@
Name: gnome-session
Summary: Session Management Tools for the GNOME Desktop
Version: 3.38.0
Version: 42.0
Release: 1
License: GPLv2+
URL: http://www.gnome.org
Source0: http://download.gnome.org/sources/%{name}/3.38/%{name}-%{version}.tar.xz
Patch0001: 0001-check-accelerated-gles-Use-eglGetPlatformDisplay-EXT.patch
Patch0002: 0001-Add-support-for-new-ConfirmedRebootToBootOptions-sig.patch
URL: https://gitlab.gnome.org/GNOME/gnome-session
Source0: https://download.gnome.org/sources/%{name}/41/%{name}-%{version}.tar.xz
BuildRequires: meson gcc gettext intltool xmlto usermode /usr/bin/xsltproc
Patch1: gnome-session-3.3.92-nv30.patch
Patch3: gnome-session-3.6.2-swrast.patch
Patch4: 0001-check-accelerated-gles-Use-eglGetPlatformDisplay-EXT.patch
Patch5: 0001-Fedora-Set-grub-boot-flags-on-shutdown-reboot.patch
BuildRequires: meson gcc gettext intltool xmlto usermode libxslt
BuildRequires: pkgconfig(gl) pkgconfig(egl) pkgconfig(glesv2) pkgconfig(gnome-desktop-3.0)
BuildRequires: pkgconfig(gtk+-3.0) pkgconfig(libsystemd) pkgconfig(ice) pkgconfig(json-glib-1.0)
BuildRequires: pkgconfig(sm) pkgconfig(x11) pkgconfig(xau) pkgconfig(xcomposite) pkgconfig(xext)
@ -43,15 +46,18 @@ sed -i 's/idm[0-9]\{5,32\}\"/idm123456789123456\"/g' $(find -name %{name}.html)
%install
%meson_install
%find_lang %{name}-3.0
%find_lang %{name}-42
%files -f %{name}-3.0.lang
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files -f %{name}-42.lang
%license COPYING
%{_bindir}/*
%{_libexecdir}/%{name}*
%{_datadir}/%{name}/
%{_datadir}/glib-2.0/schemas/org.gnome.SessionManager.gschema.xml
%{_datadir}/GConf/gsettings/%{name}.convert
%{_datadir}/GConf/gsettings/gnome-session.convert
%{_datadir}/xsessions/*
%{_datadir}/wayland-sessions/*
%{_userunitdir}/gnome-session*
@ -62,10 +68,10 @@ sed -i 's/idm[0-9]\{5,32\}\"/idm123456789123456\"/g' $(find -name %{name}.html)
%doc %{_mandir}/man*/*
%{_datadir}/doc/%{name}/dbus/%{name}.html
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%changelog
* Tue Mar 22 2022 David King <amigadave@amigadave.com> - 42.0-1
- Update to 42.0
* Mon May 31 2021 weijin deng <weijin.deng@turbolinux.com.cn> - 3.38.0-1
- Upgrade to 3.38.0
- Update Version, Release, Source0, Obsoletes