Accueil > Forum > > > > GTK+ interface graphique geler
GTK+ interface graphique geler
samedi 9 février 2008 à 21:30:53 |
GTK+ interface graphique geler

Raf15
|
Bonjour à tous, Voila j'ecris un programme en c (debutant) avec la bibliothèque GTK+ pour creer une interface graphique. Je voudrais changer en temps reel le texte d'un label seulement mon interface graphique reste geler et ce jusqu'a la fin du traitement. D'après mes recherche c'est normal mais je ne ccomprend pas comment remedier... merci de me repondre
|
|
dimanche 10 février 2008 à 00:27:29 |
Re : GTK+ interface graphique geler
|
dimanche 10 février 2008 à 16:32:40 |
Re : GTK+ interface graphique geler

Raf15
|
Yes, merci t'avais raison avec un thread ca fonctionne. Seulement il ya juste un petit soucis, le label s'affiche que si je bouge la souris (si je ne touche pas la souris le label ne s'affiche pas). Je trouve ca bizzar... Si t'as une idée de ce sui peut ce passer fait le moi savoir parce que moi je nage un peu...(je débute en prog).
|
|
dimanche 10 février 2008 à 17:45:24 |
Re : GTK+ interface graphique geler

luhtor
|
Tu utilises bien un système d'évément pour mettre a jour le label ? Tu modifies pas le label depuis ton thread quand meme ?
|
|
dimanche 10 février 2008 à 17:49:39 |
Re : GTK+ interface graphique geler

Raf15
|
...  ...ben...en fait...si... Un systeme d'evenement? Je ne vois pas très bien... Pourrais tu m'expliquer? dsl mais je débute et j'essaye d'apprendre petit à petit
|
|
dimanche 10 février 2008 à 19:29:33 |
Re : GTK+ interface graphique geler

luhtor
|
Aucune librairie de GUI n'est thread safe, c'est à dire que des que tu créés un thread, il est ABSOLUMENT interdit pour lui d'appeler des fonctions de la gui. En fait, gtk dispose de fonctions pour permettre ce genre de chose, mais c'est très délicat à utiliser (gtk_thread_enter/gtk_thread_leave (de mémoire)).
En règle général, des que tu veux modifier la gui, il faut stocker dans une variable protégée (cad protégé par un mutex dans ton cas pour éviter à un thread de lire la variable pdt alors qu'elle est en cours de modification par un autre thread). Ensuite, la gui vient périodiquement (avec un timer) lire le contenu de la variable pour se mettre à jour si nécessaire. Donc ca, c'est la méthode artisanale qui fonctionne à coup sur.
Normalement, le librairie te fournit des systèmes d'événements asynchrones. Dans ton thread tu envois un événement (avec une méthode push_event, je connais pas la fonction sous gtk, mais il doit y avoir l'équivalent) contenant les données pour mettre à jour ton label. L'intéret c'est que la GUI sait que cet événement provient d'un thread. Donc elle le stocke et le traite dès que possible dans le thread principal.
Mais j'ai jeté un rapide coup d'oeil sur la doc de gtk, c'est un peu le bordel (il semblerait) donc la méthode artisanale me semble la plus pratique pour toi. Il faudrait passer du temps sur la doc de gtk, mais si tu débutes, tu seras plus perdu qu'autre chose. Donc tu créés une chaine de caractère et un mutex (http://library.gnome.org/devel/glib/stable/glib-Threads.html). Si tu sais pas ce que c'est => google.
Mais attention, tu te lances dans des trucs un peu technique. La pente risque d'etre un peu raide au début mais après t'arrives sur la plaine.
La doc intégrale de gtk/glib... à mettre en FAVORIS: http://library.gnome.org/devel/references
|
|
dimanche 10 février 2008 à 22:01:14 |
Re : GTK+ interface graphique geler

Raf15
|
Et ben...Je viens de passer une heure et demi a chercher sur le net des explication sur tout ca mais ca reste toujours aussi obscure...pourquoi être obliger de proteger une variable si tu ne fais que la lire (par le thread gerant la gui)? et...................bref je pipe rien...
En tout cas petite explication du programme: il s'agit d'un chronometre. Deux voiture miniature envoie une trame chacun sur le port RS232, le programme doit reconnaitre ces trames et lancer un chrono dès la reception... En console pas trop de soucis mais pour l'interface graphique c'est une autre paire de manche...Mon soucis étant l'affichage des temps a chaque tour de voiture en temps reel. donc en ce moment j'en suis là : je lance le thread avec le label passer en parametre.
Une fois la trame recu modification de la chaine que le label contient puis mis a jour du label par un gtk_label_set_text(GTK_LABEL(pTempLabel), tps_res);
Voila si quelqu'un peux m'éclairer, ce serait sympas...pour le mutex etc... je regarderais demain parce que là ca commence a me fatigué (moi qui penser etre arriver au bout du prog... )
En tout cas merci bcp luhtor de m'avoir accorder un peu de ton tps
|
|
dimanche 10 février 2008 à 22:11:00 |
Re : GTK+ interface graphique geler

gamemonde
|
je comprend ton probleme mais bon defois soit le faire en mfc ou en api est plus simple surtout quand on est debutant
en api simple tu créer reelement un thread qui va verifier ta donnée pas besoin de passer par un mutex juste faire des validations
surtout plus faicile si tu ne fais qu'affiché des infos
|
|
dimanche 10 février 2008 à 22:39:31 |
Re : GTK+ interface graphique geler

luhtor
|
"pourquoi être obliger de proteger une variable si tu ne fais que la lire (par le thread gerant la gui)" => Car la prog multithreadé, c'est délicat. Si tu comprends pas pourquoi, admets le :) Mais c'est facile de trouver un exemple:
Imagines une chaine de caractère avec un 0 terminal, le thread écrivain efface momentanément ce 0 pour par exemple, rallonger la chaine. Mais Windows l'interrompt avant qu'il est totalement fini. Bref, la chaine ne possède plus de 0 terminal or le thread de lecture passe par la et souhaite lire le contenu, et la, tu imagines la suite. Il va lire la chaine, plus plein de merde jusqu'à trouver un 0 en mémoire. Windows interrompt ce thread puis rend la mains au thread écrivain qui finit son boulot. Conclusion de l'histoire, ton thread lecteur a lu n'importe quoi.
Lecon => empecher le thread de lecture d'accéder a la variable tant que le thread écrivain a pas terminé => créer un mutex.
|
|
dimanche 10 février 2008 à 23:24:07 |
Re : GTK+ interface graphique geler

gamemonde
|
pas necessairement on peux empecher le thread de lecture et vice-versa de fonctionner si lautre est activé en utilisant les fonctions prevu a cette effet.
je comprend tres bien les programme multithreader mais j'utilise pas necessairement de mutex pour le faire j'utilise juste d'autre moyen
|
|
Cette discussion est classée dans : graphique, gtk, interface, geler
Répondre à ce message
Sujets en rapport avec ce message
HELP GTK - exe portable [ par UnderFlow ]
Bonjour à toutes et à tous, Afin de développer très rapidement une interface graphique en C++, j'ai utilisé Glade (éditeur graphique) et GTK (bibliot
interface graphique C [ par chiro2000 ]
Bonjour a tous Je suis actuellement entrain de faire de la migration d un logiciel qui est fait en C avec une interface DOS en Windows et linux; pour
interface graphique C [ par chiro2000 ]
Bonjour a tous je dispose d un code source qui entierement fait en C (sans classe ) contient que des structures; j aimerai savoir si il est possible d
[DOS] Interface graphique pour application [ par cccomputer ]
Bonjour, Je souhaite savoir s'il est possible de créer une application sous dos avec une interface graphique (8 ou 16 bits) qui gère la suppression d
interface graphique d'une calculatrice sr matlab [ par medbek ]
je veus faire une interface graphique avec matlab .est ce que vous pouvons me aider commnent le faire et quel est sa algorithme?
interface graphique c [ par marwa77 ]
bonjour, je suis entrain de réaliser mon projet c sous linux. j'aime bien savoir est ce-que je peux réaliser une interface graphique sous unix en c où
interface graphique avec C++ [ par davidsanton ]
salut je veux créer une interface graphique user mais je sais pas comment je vé la lier avec swi prolog car mes donner seront dans swi polog
min-projet [ par ghaziguesmi ]
En fait, ce min-projet pour Windows uniquement (min-projet de fin d'étude). Merci, mais votre aide, je vois que avant de commence le min-projet, il fa
interface graphique [ par foollefille ]
Bonjour, Je suis à la recherche d'un code qui me permet de tracer une fonction sinus en C++ ou bien .net je compte sur vous merci d'avance pour votr
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|