[XFree 4.3.0] Pb de rafraichissement XEvent

Pb de rafraichissement XEvent [XFree 4.3.0] - C - Programmation

Marsh Posté le 28-10-2003 à 14:52:14    

J'arrive a la fin du developpement de mon programme et apres l'avoir mis en test, un probleme non mis en evidence vient d'apparaitre.  
 
Il m'arrive parfois d'avoir des événements bloqués ( <> perdus). Je mexplique :
 
Dans mon application, je recupere uniquement les evenements souris que je transmets a mon interface.
 
Pour cela j utilise la fonction XNextEvent() qui bloque tant qu il n y a pas d événement, et qui rend la main dès qu'un événement surgit.
 
Seulement, si je clique tres rapidement sur la souris (evenement clic gauche enfoncé, clic gauche relevé) il arrive parfois que le dernier événement ne soit pas transmis, et au prochain événement, les 2 derniers sont transmis.
 
 
Ex :
 
j appuie sue le bouton gauche de la souris -> evenement MOUSE_DOWN
je relache le bouton gauche de la souris ->RIEN
 
je réappuie sur le bouton gauche de la souris -> evenement precedent MOUSE_UP ET événement MOUSE_DOWN (le dernier quoi).
 
 
Le probleme est que ce phenomene arrive TRES rarement (quasi impossible de le simuler pour debugger) mais il arrive quand meme, et c'est tres génant car ca provoque non seulement des pbs de rafraichissement (bouton resté enfoncé alors qu il est relevé) mais aussi des pbs de synchro par rapport a l action que le bouton est censée faire.
 
 
Quelqu'un a-t-il deja rencontré le pb ? je n'ai pas trouvé de fonction flush ou equivalent pour flusher les messages.
 
 
merci :)

Reply

Marsh Posté le 28-10-2003 à 14:52:14   

Reply

Marsh Posté le 28-10-2003 à 18:36:41    

up

Reply

Marsh Posté le 29-10-2003 à 09:22:47    

up :sweat:

Reply

Marsh Posté le 29-10-2003 à 10:44:39    

va demander sur le chan irc des dev de Xfree, tu auras sûrement une réponse :)
 
xfree86 et xfree86-devel sur irc.freenode.net
 
bonne chance !

Reply

Marsh Posté le 29-10-2003 à 12:37:53    

ok je vais voir, merci

Reply

Marsh Posté le 30-10-2003 à 14:40:13    

ben sinon comme fct pr flusher: XFlush (a tester)
 
Si tu veux une aide sur l'api xlib:
http://www.the-labs.com/X11/XLib-Manual/
 
en telechargement sur http://www.the-labs.com/X11/xlib-manual.tar.gz
 
Sinon, qu'est ce que tu entends par le fait d'avoir 2 evenement en même tps. Normallement tu ne prends qu' un evenement a la fois ???

Reply

Marsh Posté le 30-10-2003 à 15:30:52    

oui je sais que je prends un seul événement à la fois :)
 
 
Je vais essayer de détailler mon schéma :
 
 
AVANT : x appels a XNextEvent ca a aucune importance ....
 
a un moment donné :
 
J'appuie sur la dalle tactile (qui correspond a l'enfoncement du bouton gauche de la souris) -> Ceci génére un evenement BOUTON_GAUCHE_ENFONCE -> Je le recois bien donc ma boucle XNextEvent traite ce message.
je relache mon appui sur la dalle tactile (qui correspond au relachement du bouton gauche de la souris) -> Ceci est cencé générer un evenement BOUTON_GAUCHE_RELACHE -> Je ne RECOIS pas cet événement (ce qui signifie que je suis toujours bloqué sur XNextEvent dans ma boucle d'événement).
 
je fais a nouveau n'importe quel action après (par exemple appuyer a nouveau n'importe ou a l'écran) -> ceci génére donc un message BOUTON_GAUCHE_ENFONCE -> Je recois D'ABORD mon événement précédent "perdu" (donc le BOUTON_GAUCHE_RELEVE) , je le traite, PUIS je recois (au deuxieme passage de ma boucle d'événement , donc deuxieme appel a XNextEvent) mon message BOUTON_GAUCHE_ENFONCE.
 
 
Je ne sais pas si c est clair mais c est exactement ca qu'il se passe :(
 
 
 

Reply

Marsh Posté le 17-11-2003 à 11:02:41    

up

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed