Threading problèmes avec GTK

Je suis en train de construire une assez simple C application utilisant GTK, mais ont à effectuer un certain blocage IO qui va déclencher les mises à jour de l'interface graphique. Pour ce faire, je commence une nouvelle pthread juste avant gtk_main() en tant que tel:

/* global variables */
GMainContext *mainc;

/* local variables */
FILE *fifo;
pthread_t reader;

/* main() */
mainc = g_main_context_default();
pthread_create(&reader, NULL, watch_fifo, argv[argc-1]);
gtk_main();

Lorsque le pthread lit des données, des mises à jour de l'interface graphique comme suit:

g_main_context_invoke(mainc, set_icon, param);

set_icon est

gboolean set_icon(gpointer data)
{
    char *p = (char*)data;
    gtk_status_icon_set_from_icon_name(icon, p);
    return FALSE;
}

Tout cela fonctionne la plupart du temps, mais chaque maintenant et encore je obtenir de ce curieux message d'erreur:

[xcb] Inconnu numéro de séquence lors du traitement de la file d'attente 
[xcb] le Plus probable c'est un multi-thread client et XInitThreads n'a pas été appelé 
[xcb] l'Abandon, désolé. 
mktrayicon: xcb_io.c:274: poll_for_event: Assertion `!xcb_xlib_threads_sequence_lost' a échoué. 

Je pensais que tout le point de l'utilisation de g_main_context_invoke était pour éviter les problèmes avec les threads? En faisant un peu de recherche sur Google, je suis tombé sur gdk_threads_initgdk_threads_enter et des amis, mais ils semblent tous être obsolète? Je sais que le GTK documentation dit que tous les GUI updaes doit être effectuée sur le thread principal, mais cela ne les combine pas très bien avec le blocage des IO, et je préfère ne pas avoir à construire des complexes mécanisme de communication entre les threads.

Et donc, ma question est, comment dois-je traiter correctement avec cette?

EDIT: Le code complet peut être vu ici
EDIT2: Comme une mise à jour basé sur @ptomato réponse, j'ai déménagé à GThreads et à l'aide de gdk_threads_add_idle() comme on le voit dans cette s'engager, mais le problème est toujours présent.

source d'informationauteur Jon Gjengset