• [^] # Re: Only one thread can use GTK+

    Posté par . En réponse au message glib::2 threads en parallele, pb de synchro.... Évalué à 1.

    Hmm, les threads et la Xlib (utilisés par GTK) est un coktail assez explosif. Tu as intérêt à savoir ce que tu fais avant de toucher à ta fenêtre. Pour info, la connexion avec le serveur X est un descripteur de fichier, tout ce qu'il y a de plus banal (socket unix locale).

    Maintenant si tu t'amuses à faire des mises à jour dans chaque thread de ton interface, les paquets Xlib (XDrawText, XCopyArea, etc...) risque de s'emméler et foutre complètement en l'air le protocole.

    Deux façon de faire, d'abord la casse gueule :
    - Tu fais tes mises à jour n'importe quel thread, en faisant attention d'encadrer CHAQUE appel à gtk/X11/gdk par un appel à mutex, je lancerais aussi un XFlush() avant.

    Plus propre :
    - Un et un seul thread s'occupe de gérer l'affichage, synchronisé avec une classe qui va bien (mutex, pipe, & co).

    En tous les cas l'erreur que tu as reçu de la Xlib est typiquement le reflet d'un problème de paquets entremélés.

    Ah, les joies de la programmtion multi-threadé en environnement X11 ....