Accepting request 422188 from X11:windowmanagers
1 OBS-URL: https://build.opensuse.org/request/show/422188 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/icewm?expand=0&rev=49
This commit is contained in:
commit
f7ef211418
64
icewm-exit-fork.patch
Normal file
64
icewm-exit-fork.patch
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
Author: Fabian Vogt <fvogt@suse.com>
|
||||||
|
Subject: Start shutdown and reboot commands in background
|
||||||
|
|
||||||
|
When polkit is enabled, systemctl may in turn wait for the
|
||||||
|
graphical password prompt to return. The created window cannot
|
||||||
|
be handled by icewm as it is busy with systemctl.
|
||||||
|
This avoids this deadlock by starting systemctl in background.
|
||||||
|
|
||||||
|
---
|
||||||
|
src/wmmgr.cc | 23 +++++++++++++++++++----
|
||||||
|
src/wmmgr.h | 1 +
|
||||||
|
2 files changed, 20 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
Index: icewm-1.3.12/src/wmmgr.cc
|
||||||
|
===================================================================
|
||||||
|
--- icewm-1.3.12.orig/src/wmmgr.cc
|
||||||
|
+++ icewm-1.3.12/src/wmmgr.cc
|
||||||
|
@@ -3011,16 +3011,30 @@ void YWindowManager::updateUserTime(Time
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+void YWindowManager::execAfterFork(const char *command) {
|
||||||
|
+ pid_t pid = fork();
|
||||||
|
+ switch(pid) {
|
||||||
|
+ case -1: /* Failed */
|
||||||
|
+ warn("fork failed (%d)", errno);
|
||||||
|
+ return;
|
||||||
|
+ case 0: /* Child */
|
||||||
|
+ execl("/bin/sh", "sh", "-c", command, (char *) 0);
|
||||||
|
+ return; /* Never reached */
|
||||||
|
+ default: /* Parent */
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void YWindowManager::checkLogout() {
|
||||||
|
if (fShuttingDown && !haveClients()) {
|
||||||
|
+ fShuttingDown = false; /* Only run the command once */
|
||||||
|
+
|
||||||
|
if (rebootOrShutdown == 1 && rebootCommand && rebootCommand[0]) {
|
||||||
|
msg("reboot... (%s)", rebootCommand);
|
||||||
|
- if (system(rebootCommand) == -1)
|
||||||
|
- return;
|
||||||
|
+ execAfterFork(rebootCommand);
|
||||||
|
} else if (rebootOrShutdown == 2 && shutdownCommand && shutdownCommand[0]) {
|
||||||
|
msg("shutdown ... (%s)", shutdownCommand);
|
||||||
|
- if (system(shutdownCommand) == -1)
|
||||||
|
- return;
|
||||||
|
+ execAfterFork(shutdownCommand);
|
||||||
|
} else
|
||||||
|
app->exit(0);
|
||||||
|
}
|
||||||
|
Index: icewm-1.3.12/src/wmmgr.h
|
||||||
|
===================================================================
|
||||||
|
--- icewm-1.3.12.orig/src/wmmgr.h
|
||||||
|
+++ icewm-1.3.12/src/wmmgr.h
|
||||||
|
@@ -188,6 +188,7 @@ public:
|
||||||
|
|
||||||
|
void wmCloseSession();
|
||||||
|
void exitAfterLastClient(bool shuttingDown);
|
||||||
|
+ void execAfterFork(const char *command);
|
||||||
|
void checkLogout();
|
||||||
|
|
||||||
|
virtual void resetColormap(bool active);
|
@ -44,11 +44,11 @@ Index: src/preferences
|
|||||||
|
|
||||||
# Command to shutdown the system
|
# Command to shutdown the system
|
||||||
-# ShutdownCommand="/bin/sh -c "{ test -e /run/systemd/system && systemctl poweroff; } ||:""
|
-# ShutdownCommand="/bin/sh -c "{ test -e /run/systemd/system && systemctl poweroff; } ||:""
|
||||||
+ShutdownCommand="/bin/sh -c "systemctl poweroff ||:""
|
+ShutdownCommand="/bin/sh -c 'systemctl poweroff ||:'"
|
||||||
|
|
||||||
# Command to reboot the system
|
# Command to reboot the system
|
||||||
-# RebootCommand="/bin/sh -c "{ test -e /run/systemd/system && systemctl reboot; } ||:""
|
-# RebootCommand="/bin/sh -c "{ test -e /run/systemd/system && systemctl reboot; } ||:""
|
||||||
+RebootCommand="/bin/sh -c "systemctl reboot ||:""
|
+RebootCommand="/bin/sh -c 'systemctl reboot ||:'"
|
||||||
|
|
||||||
# Command to run on CPU status
|
# Command to run on CPU status
|
||||||
# CPUStatusCommand="xterm -name top -title Process\ Status -e top"
|
# CPUStatusCommand="xterm -name top -title Process\ Status -e top"
|
||||||
|
@ -1,3 +1,14 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Aug 25 10:00:58 UTC 2016 - fvogt@suse.com
|
||||||
|
|
||||||
|
- Add patch icewm-exit-fork.patch to avoid deadlock (bsc#977233)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Aug 24 07:55:56 UTC 2016 - tyang@suse.com
|
||||||
|
|
||||||
|
- Modify: icewm-preferences.patch
|
||||||
|
bnc#977233 modify the command to correct one.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Jun 2 11:30:11 UTC 2016 - tchvatal@suse.com
|
Thu Jun 2 11:30:11 UTC 2016 - tchvatal@suse.com
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package icewm
|
# spec file for package icewm
|
||||||
#
|
#
|
||||||
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
# Copyright (c) 2016 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -32,6 +32,8 @@ Patch0: icewm-mate.patch
|
|||||||
Patch1: icewm-susemenu.patch
|
Patch1: icewm-susemenu.patch
|
||||||
# PATCH-FIX-UPSTREAM tweak the desktop session files to work correctly
|
# PATCH-FIX-UPSTREAM tweak the desktop session files to work correctly
|
||||||
Patch2: icewm-session-desktop.patch
|
Patch2: icewm-session-desktop.patch
|
||||||
|
# PATCH-FIX-OPENSUSE run shutdown and reboot in background
|
||||||
|
Patch3: icewm-exit-fork.patch
|
||||||
Patch99: icewm-preferences.patch
|
Patch99: icewm-preferences.patch
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
@ -134,6 +136,7 @@ mailbox status, and a digital clock. It is fast and small.
|
|||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
|
%patch3 -p1
|
||||||
# Do not require needlessly new gettext.
|
# Do not require needlessly new gettext.
|
||||||
sed -i 's/0.19.6/0.18.3/g' configure.ac
|
sed -i 's/0.19.6/0.18.3/g' configure.ac
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user