summaryrefslogtreecommitdiff
path: root/mktrayicon.c
diff options
context:
space:
mode:
authorJon Gjengset <jon@thesquareplanet.com>2013-09-05 20:39:21 +0100
committerJon Gjengset <jon@thesquareplanet.com>2013-09-05 20:39:21 +0100
commit079773723f9f4a50c3827a2faa618c2093f14b14 (patch)
treefafd5dbd169f969abde1496c80d179d191c7a008 /mktrayicon.c
parentAllow removal of tooltips (diff)
downloadmktrayicon-079773723f9f4a50c3827a2faa618c2093f14b14.tar.gz
mktrayicon-079773723f9f4a50c3827a2faa618c2093f14b14.tar.bz2
mktrayicon-079773723f9f4a50c3827a2faa618c2093f14b14.zip
Try to maintain correct context
Diffstat (limited to 'mktrayicon.c')
-rw-r--r--mktrayicon.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/mktrayicon.c b/mktrayicon.c
index 76f056b..b065d0e 100644
--- a/mktrayicon.c
+++ b/mktrayicon.c
@@ -11,6 +11,7 @@
#include <pthread.h>
#include <sys/stat.h>
+GMainContext *mainc;
GtkStatusIcon *icon;
char *onclick = NULL;
@@ -75,14 +76,16 @@ void *watch_fifo(void *argv)
while (1) {
if (stat(fifo_path, &fifo_st) != 0) {
perror("FIFO does not exist, exiting\n");
- g_main_context_invoke(NULL, do_quit, fifo);
+ g_main_context_invoke(mainc, do_quit, fifo);
+ break;
}
fifo = fopen(fifo_path, "r");
if (fifo == NULL) {
perror("FIFO went away, exiting\n");
- g_main_context_invoke(NULL, do_quit, fifo);
+ g_main_context_invoke(mainc, do_quit, fifo);
+ break;
}
read = fgets(buf, 1024 * sizeof(char), fifo);
@@ -105,19 +108,19 @@ void *watch_fifo(void *argv)
switch (*buf) {
case 'q':
- g_main_context_invoke(NULL, do_quit, param);
+ g_main_context_invoke(mainc, do_quit, param);
break;
case 't': /* tooltip */
- g_main_context_invoke(NULL, set_tooltip, param);
+ g_main_context_invoke(mainc, set_tooltip, param);
break;
case 'i': /* icon */
- g_main_context_invoke(NULL, set_icon, param);
+ g_main_context_invoke(mainc, set_icon, param);
break;
case 'h': /* hide */
- g_main_context_invoke(NULL, set_visible, (void *)0);
+ g_main_context_invoke(mainc, set_visible, (void *)0);
break;
case 's': /* show */
- g_main_context_invoke(NULL, set_visible, (void *)1);
+ g_main_context_invoke(mainc, set_visible, (void *)1);
break;
case 'c': /* click */
if (onclick != NULL) {
@@ -180,6 +183,7 @@ int main(int argc, char **argv)
}
icon = create_tray_icon(start_icon);
+ mainc = g_main_context_default();
pthread_create(&reader, NULL, watch_fifo, argv[argc-1]);
gtk_main();
return 0;
bgstack15