wmshutdown: Destroy dialog window before shutting down. This is especially useful...
[dockapps.git] / wmmemfree / wmmemfree.c
blob38c62464a1add64472aeb1d717850eeca6f71a28
1 /*
2 * wmmemfree - dockapp which displays memory usage
4 * Copyright (C) 2003 Draghicioiu Mihai <misuceldestept@go.ro>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
21 #include <bits/types/struct_timeval.h>
22 #include <stdio.h>
23 #include <signal.h>
24 #include <sys/time.h>
26 #include "wmmemfree.h"
27 #include "dockapp.h"
28 #include "draw.h"
29 #include "options.h"
31 int argc;
32 char **argv;
33 int exitloop = 0;
35 void handle_timer(int sig)
37 if(sig == SIGALRM)
39 draw_window();
43 void start_timer()
45 struct itimerval tv;
47 tv.it_value.tv_sec = 2; /* give 2 seconds for safety */
48 tv.it_value.tv_usec = 0;
49 tv.it_interval.tv_sec = 0;
50 tv.it_interval.tv_usec = opt_milisecs * 1000;
51 signal(SIGALRM, handle_timer);
52 setitimer(ITIMER_REAL, &tv, NULL);
55 void stop_timer()
57 struct itimerval tv;
59 signal(SIGALRM, SIG_IGN);
60 tv.it_value.tv_sec = 0;
61 tv.it_value.tv_usec = 0;
62 tv.it_interval.tv_sec = 0;
63 tv.it_interval.tv_usec = 0;
64 setitimer(ITIMER_REAL, &tv, NULL);
67 int main(int carg, char **varg)
69 argc = carg;
70 argv = varg;
71 parse_args();
72 make_window();
73 start_timer();
74 while(!exitloop)
76 process_events();
78 stop_timer();
79 free_stuff();
80 return 0;