Start/stop recording if not running/already running

This commit is contained in:
dec05eba
2022-03-31 02:38:18 +02:00
parent 900553e6c0
commit 5dc945eb6a
6 changed files with 244 additions and 18 deletions

View File

@@ -1,14 +1,19 @@
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <X11/Xlib.h>
#include <X11/keysym.h>
static int xerror_dummy(Display *dpy, XErrorEvent *ee) {
(void)dpy;
static int ignore_xerror(Display *display, XErrorEvent *ee) {
(void)display;
(void)ee;
return 0;
}
static void sigterm_handler(int dummy) {
(void)dummy;
}
static const KeySym toggle_overlay_key = XK_Z;
static void grab_keys(Display *display) {
unsigned int numlockmask = 0;
@@ -22,7 +27,7 @@ static void grab_keys(Display *display) {
}
XFreeModifiermap(modmap);
XErrorHandler prev_error_handler = XSetErrorHandler(xerror_dummy);
XErrorHandler prev_error_handler = XSetErrorHandler(ignore_xerror);
Window root_window = DefaultRootWindow(display);
unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask };
@@ -52,6 +57,10 @@ int main() {
grab_keys(display);
const KeyCode overlay_keycode = XKeysymToKeycode(display, toggle_overlay_key);
XSetErrorHandler(ignore_xerror);
/* Killing gpu-screen-recorder with SIGTERM also gives us SIGTERM. We want to ignore that as that has no meaning here */
signal(SIGTERM, sigterm_handler);
XEvent xev;
for(;;) {
XNextEvent(display, &xev);