Introduction
Introduction Statistics Contact Development Disclaimer Help
slock-auto-timeout.1.5.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
slock-auto-timeout.1.5.diff (2417B)
---
1 From 4abaf79e90a54c645fbd1a8439a976ee2ba5dde7 Mon Sep 17 00:00:00 2001
2 From: Karsaell <[email protected]>
3 Date: Wed, 5 Oct 2022 14:25:12 +0200
4 Subject: [PATCH] [patch][auto-timeout] updated patch autotimeout
5
6 Previous patch had an infinite loop without sleep()
7 causing slock to run at 100% CPU
8 (Noticed it because my laptop's fan started a few seconds after slock)
9
10 Now the timeout and its command are run in a separate thread
11 This adds a dependency to pthread at compile time
12 (not sure if this can be an issue ?)
13 ---
14 config.def.h | 8 ++++++++
15 config.mk | 2 +-
16 slock.c | 20 ++++++++++++++++++++
17 3 files changed, 29 insertions(+), 1 deletion(-)
18
19 diff --git a/config.def.h b/config.def.h
20 index 9855e21..a1179a8 100644
21 --- a/config.def.h
22 +++ b/config.def.h
23 @@ -10,3 +10,11 @@ static const char *colorname[NUMCOLS] = {
24
25 /* treat a cleared input like a wrong password (color) */
26 static const int failonclear = 1;
27 +
28 +/* Patch: auto-timeout */
29 +/* should [command] be run only once? */
30 +static const int runonce = 0;
31 +/* length of time (seconds) until [command] is executed */
32 +static const int timeoffset = 30;
33 +/* command to be run after [timeoffset] seconds has passed */
34 +static const char *command = "/usr/bin/xset dpms force off";
35 diff --git a/config.mk b/config.mk
36 index 1e1ca45..8955075 100644
37 --- a/config.mk
38 +++ b/config.mk
39 @@ -29,4 +29,4 @@ COMPATSRC = explicit_bzero.c
40 #COMPATSRC =
41
42 # compiler and linker
43 -CC = cc
44 +CC = cc -pthread
45 diff --git a/slock.c b/slock.c
46 index 5ae738c..c56c944 100644
47 --- a/slock.c
48 +++ b/slock.c
49 @@ -19,6 +19,10 @@
50 #include <X11/Xlib.h>
51 #include <X11/Xutil.h>
52
53 +/*POSIX threading for auto-timeout*/
54 +#include <pthread.h>
55 +#include <time.h>
56 +
57 #include "arg.h"
58 #include "util.h"
59
60 @@ -219,6 +223,18 @@ readpw(Display *dpy, struct xrandr *rr, struct lock…
61 }
62 }
63
64 +void *timeoutCommand(void *args)
65 +{
66 + int runflag=0;
67 + while (!runonce || !runflag)
68 + {
69 + sleep(timeoffset);
70 + runflag = 1;
71 + system(command);
72 + }
73 + return args;
74 +}
75 +
76 static struct lock *
77 lockscreen(Display *dpy, struct xrandr *rr, int screen)
78 {
79 @@ -388,6 +404,10 @@ main(int argc, char **argv) {
80 }
81 }
82
83 + /*Start the auto-timeout command in its own thread*/
84 + pthread_t thread_id;
85 + pthread_create(&thread_id, NULL, timeoutCommand, NULL);
86 +
87 /* everything is now blank. Wait for the correct password */
88 readpw(dpy, &rr, locks, nscreens, hash);
89
90 --
91 2.30.2
92
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.