diff options
author | Jon Gjengset <jon@thesquareplanet.com> | 2013-09-05 20:39:21 +0100 |
---|---|---|
committer | Jon Gjengset <jon@thesquareplanet.com> | 2013-09-05 20:39:21 +0100 |
commit | 079773723f9f4a50c3827a2faa618c2093f14b14 (patch) | |
tree | fafd5dbd169f969abde1496c80d179d191c7a008 | |
parent | Allow removal of tooltips (diff) | |
download | mktrayicon-079773723f9f4a50c3827a2faa618c2093f14b14.tar.gz mktrayicon-079773723f9f4a50c3827a2faa618c2093f14b14.tar.bz2 mktrayicon-079773723f9f4a50c3827a2faa618c2093f14b14.zip |
Try to maintain correct context
-rw-r--r-- | mktrayicon.c | 18 |
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; |