diff --git a/programs/sxmo_screenlock.c b/programs/sxmo_screenlock.c index 3c31c71..e44ac3f 100644 --- a/programs/sxmo_screenlock.c +++ b/programs/sxmo_screenlock.c @@ -32,6 +32,7 @@ void lockscreen(Display *dpy, int screen); void readinputloop(Display *dpy, int screen); void setpineled(enum Color c); void syncstate(); +void updatestatusbar(); void writefile(char *filepath, char *str); // Variables @@ -237,6 +238,8 @@ syncstate() setpineled(Red); configuresuspendsettingsandwakeupsources(); writefile(powerstatefile, "mem"); + // Just woke up + updatestatusbar(); state = StateSuspendPending; syncstate(); } else if (state == StateNoInput) { @@ -251,6 +254,18 @@ syncstate() } } +void +updatestatusbar() +{ + pid_t statusbarpid = -1; + char buffer[999]; + // TODO: there's probably a better way.. + if (fgets(buffer, 999, popen("pgrep -f sxmo_statusbar.sh", "r")) != NULL) + statusbarpid = (pid_t) atoi(buffer); + if (statusbarpid != -1) + kill(statusbarpid, SIGUSR1); +} + void writefile(char *filepath, char *str) {