]> Dogcows Code - chaz/tint2/blobdiff - src/clock/clock.c
*fix* segfault fixed when removing last desktop and we've been on last desktop
[chaz/tint2] / src / clock / clock.c
index b5c3e41920bc271a36e7a857718c84dd289c0c31..876536cbca6407c147908210f1f075ed5ea67f15 100644 (file)
@@ -46,6 +46,7 @@ static char buf_time[40];
 static char buf_date[40];
 static char buf_tooltip[40];
 int clock_enabled;
+static const struct timeout* clock_timeout=0;
 
 
 void update_clocks()
@@ -69,10 +70,11 @@ const char* clock_get_tooltip(void* obj)
 
 void init_clock()
 {
-       if(time1_format) {
+       if(time1_format && clock_timeout==0) {
                if (strchr(time1_format, 'S') || strchr(time1_format, 'T') || strchr(time1_format, 'r'))
-                       install_timer(0, 1000000, 1, 0, update_clocks);
-               else install_timer(0, 1000000, 60, 0, update_clocks);
+                       clock_timeout = add_timeout(10, 1000, update_clocks);
+               else
+                       clock_timeout = add_timeout(10, 60000, update_clocks);
        }
 }
 
@@ -263,12 +265,12 @@ void clock_action(int button)
        }
        if (command) {
                pid_t pid;
-               sigset_t sigset;
-               sigprocmask(SIG_SETMASK, &sigset, 0);
-               sigprocmask(SIG_UNBLOCK, &sigset, 0);
                pid = fork();
-               sigprocmask(SIG_BLOCK, &sigset, 0);
                if (pid == 0) {
+                       // change for the fork the signal mask
+                       sigset_t sigset;
+                       sigprocmask(SIG_SETMASK, &sigset, 0);
+                       sigprocmask(SIG_UNBLOCK, &sigset, 0);
                        execl("/bin/sh", "/bin/sh", "-c", command, NULL);
                        _exit(0);
                }
This page took 0.023274 seconds and 4 git commands to generate.