IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

gtk+ & thread


Sujet :

GTK+ avec C & C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Points : 29
    Points
    29
    Par défaut gtk+ & thread
    Bonjour, j'ai besoin de lancer une ou plusieurs fenêtres gtk+ en C dans un plugin xchat pendant qu'xchat tourne, le problème est au niveau de gtk_main() qui bloque xchat.
    Je me suis donc tourné vers les threads et j'ai trouvé cet exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    gdk_threads_enter()
    gtk_main()
    gdk_threads_leave()
    Mais ces deux fonctions gdk_threads_* sont devenues deprecated et je n'arrive pas à faire sans.
    Quelqu'un aurait un exemple pour me passer de ces deux fonctions deprecated ? svp

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    D'après la doc de gdk_threads_init:

    All GDK and GTK+ calls should be made from the main thread
    Le commit qui rend gdk_threads_enter/leave obsolète donne un peu plus de détails. L'explication de l'obsolescence est donnée:

    This commit deprecates gdk_threads_init, gdk_threads_enter,
    gdk_threads_leave and gdk_threads_set_lock_functions. Using GTK+
    from multiple threads does not work at all on Windows, and is
    problematic on other platforms as well. We want to move to a world
    where all GTK+ calls are made from the main thread.
    Use g_main_context_invoke, g_idle_add and related functions if you
    need to schedule GTK+ calls from other threads.
    La marche à suivre est données dans la doc des macros GDK_THREADS_ENTER/LEAVE:
    Use g_main_context_invoke(), g_idle_add() and related functions if you need to schedule GTK+ calls from other threads.
    Tous les appels à GTK doivent se faire dans le thread principal, tu ne fais plus que faire passer les info au thread principal grâce à g_main_context_invoke et g_idle_add.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    Merci beaucoup pour ta réponse.

    Mais alors le thread principal c'est celui de xchat ?
    Donc, pour afficher ma fenêtre, il me faut le 'handle' du gui d'xchat non ? pour pouvoir l'afficher en mode 'popup' avec gtk_window_set_transient_for par exemple ?

    Merci encore.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    Désolé le problème venait de ma pipeline gstreamer, tout est ok.

    Merci encore

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 7
    Points : 10
    Points
    10
    Par défaut g_idle_add synchrone ?
    Je déterre le sujet car je suis bien embêté aussi avec l'obsolescence de gdk_threads_enter/leave.

    @liberforce

    Sais-tu s'il est possible de mettre en fil d'attente une fonction de manière synchrone, c'est à dire que le second thread demandeur d'une intervention sur la GUI attendra que la fonction calback retourne avant de poursuivre le traitement ? Car à ma connaissance, g_idle_add ajoute une fonction callback dans la boucle principale mais retourne tout de suite ? Ou je me trompe ? J'ai du mal à voir dans la doc les fonction à utiliser pour faire cela.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. GTK+ et threads
    Par Al_th dans le forum C
    Réponses: 1
    Dernier message: 21/09/2010, 13h32
  2. GTk entre plusieur thread
    Par yan dans le forum GTK+ avec C & C++
    Réponses: 9
    Dernier message: 14/10/2008, 12h00
  3. Raffraichissement - GTK - un deuxieme threads
    Par hoffmann2 dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 27/04/2008, 20h37
  4. Thread Linux windows et GTK
    Par Heero Yui dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 29/05/2007, 11h57
  5. Gtk vs Threads sous Win32
    Par Snark dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 21/03/2007, 14h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo