mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-04-25 07:32:19 +02:00
77 lines
2.2 KiB
Diff
77 lines
2.2 KiB
Diff
diff --git a/modules/misc/inhibit/xdg.c b/modules/misc/inhibit/xdg.c
|
|
index 3f297c6..e16a21e 100644
|
|
--- a/modules/misc/inhibit/xdg.c
|
|
+++ b/modules/misc/inhibit/xdg.c
|
|
@@ -27,7 +27,11 @@
|
|
#include <vlc_inhibit.h>
|
|
#include <assert.h>
|
|
#include <signal.h>
|
|
-#include <spawn.h>
|
|
+#if !defined(_POSIX_SPAWN)
|
|
+# define _POSIX_SPAWN -1
|
|
+#else
|
|
+# include <spawn.h>
|
|
+#endif
|
|
#include <sys/wait.h>
|
|
|
|
static int Open (vlc_object_t *);
|
|
@@ -47,7 +51,9 @@ struct vlc_inhibit_sys
|
|
vlc_thread_t thread;
|
|
vlc_cond_t update, inactive;
|
|
vlc_mutex_t lock;
|
|
+#if (_POSIX_SPAWN >= 0)
|
|
posix_spawnattr_t attr;
|
|
+#endif
|
|
bool suspend, suspended;
|
|
};
|
|
|
|
@@ -67,17 +73,19 @@ static int Open (vlc_object_t *obj)
|
|
vlc_mutex_init (&p_sys->lock);
|
|
vlc_cond_init (&p_sys->update);
|
|
vlc_cond_init (&p_sys->inactive);
|
|
- posix_spawnattr_init (&p_sys->attr);
|
|
/* Reset signal handlers to default and clear mask in the child process */
|
|
{
|
|
sigset_t set;
|
|
|
|
sigemptyset (&set);
|
|
- posix_spawnattr_setsigmask (&p_sys->attr, &set);
|
|
sigaddset (&set, SIGPIPE);
|
|
+#if (_POSIX_SPAWN >= 0)
|
|
+ posix_spawnattr_init (&p_sys->attr);
|
|
+ posix_spawnattr_setsigmask (&p_sys->attr, &set);
|
|
posix_spawnattr_setsigdefault (&p_sys->attr, &set);
|
|
posix_spawnattr_setflags (&p_sys->attr, POSIX_SPAWN_SETSIGDEF
|
|
| POSIX_SPAWN_SETSIGMASK);
|
|
+#endif
|
|
}
|
|
p_sys->suspend = false;
|
|
p_sys->suspended = false;
|
|
@@ -106,7 +114,9 @@ static void Close (vlc_object_t *obj)
|
|
|
|
vlc_cancel (p_sys->thread);
|
|
vlc_join (p_sys->thread, NULL);
|
|
+#if (_POSIX_SPAWN >= 0)
|
|
posix_spawnattr_destroy (&p_sys->attr);
|
|
+#endif
|
|
vlc_cond_destroy (&p_sys->inactive);
|
|
vlc_cond_destroy (&p_sys->update);
|
|
vlc_mutex_destroy (&p_sys->lock);
|
|
@@ -153,8 +163,16 @@ static void *Thread (void *data)
|
|
pid_t pid;
|
|
|
|
vlc_mutex_unlock (&p_sys->lock);
|
|
+#if (_POSIX_SPAWN >= 0)
|
|
if (!posix_spawnp (&pid, "xdg-screensaver", NULL, &p_sys->attr,
|
|
argv, environ))
|
|
+#else
|
|
+ pid = fork();
|
|
+ if (pid == 0) {
|
|
+ execvp("xdg-screensaver", argv);
|
|
+ exit(1);
|
|
+ } else if (pid > 0)
|
|
+#endif
|
|
{
|
|
int status;
|
|
|