[XFree] XError , je ne comprends pas a quoi ca correspond

XError , je ne comprends pas a quoi ca correspond [XFree] - C - Programmation

Marsh Posté le 30-10-2003 à 12:11:28    

Salut,
 
J'ai des erreurs XError qui surgissent dans mon programme mais je ne vois pas d ou ca peut venir.
 
Ca quitte carrément mon programme (je trouve ca violent) et j'ai comme message d erreur le message suivant :
 

Code :
  1. XError of failed request:  BadLength (poly request too large or internal Xlib length error)
  2. Major opcode of failed request:  76 (X_ImageText8)
  3. Serial number of failed request:  760
  4. Current serial number in output stream:  800


La seule fonction que j utilise est :
 
XPutImage.
 
 
Je n utilise rien d autre.
 
(Ah si : XNextEvent pour recuperer les evenements et XCreateWindows au debut pour creer la fenetre)
 
 
merci de votre aide :)

Reply

Marsh Posté le 30-10-2003 à 12:11:28   

Reply

Marsh Posté le 30-10-2003 à 14:16:55    

difficile de dire comme ça. Si tu pouvais deja ns donner la ligne de code qui pose pbm, ça pourrait ns aider...

Reply

Marsh Posté le 30-10-2003 à 15:24:28    

Bah je veux bien donner la ligne de code mais il ne s agit que d un appel a :
XPutImage  
 
Et il y a tellement de fonctions imbriquées que ca ne servirait a rien de filer la ligne de code.
 
 
 
Par contre, apres quelques tests , je viens de m apercevoir que dans un certain cas, j'avais plus de 2000 appels a cette fonction en un meme temps (ce qui est aberrant je suis d'accord) , et ca doit etre ca qui provoque le plantage.
 
 
 
Je continue a tester ...

Reply

Marsh Posté le 03-11-2003 à 15:30:22    

Bon, je commence a avoir de serieux problemes et je ne comprends pas d'ou ca vient.
 
Je peine a trouver sur internet des exemples de code ou des solutions pour resoudre mon probleme, je n'ai meme pas trouvé la liste des codes d'erreur.
 
 
A savoir : mon application fonctionne sous windows et sous linux , donc mis a part les appels systemes (creation de fenetre, dessin d'une image, dialogue avec le port serie) le code est identique.  
 
Cette application fonctionne tres bien sous windows mais elle est essentiellement destiné a linux et elle plante non pas sur des problemes de memoire (pas de coredump ou autre) mais bien sur les appels aux fonctions X (puisque l 'application quitte inopinément avec un message d erreur X).
 
Le probleme est que RIEN n est expliqué dans la doc de X, ni la facon d'utiliser les fonctions que j'utilise.
 
 
En gros mon application se resume à :
 
- Je cree une fenetre.
- Je cache mon pointeur.
- Je cree une boucle d'evenement (un while sur la fonction XNextEvent).
- Selon les evenements (click souris) , je redessine a l'aide la fonction XPutImage ma fenêtre.
- J'ai egalement un thread de reception qui lit sur le port série, et selon ce qui est recu , dessine aussi dans la fenetre a l aide de la fonction XPutImage.
 
On a donc la fonction XPutImage appelée a la fois dans mon processus principal et egalement dans le(s) thread(s) secondaires. (peut etre ca vient de la).
 
J'ai mis un compteur sur mon appel XPutImage, il arrive parfois que j'ai 100 a 200 appels a cette fonction (rien que pour dessiner les caracteres). Je pense que c est peu.
 
Autre info : a chaque appel XPutImage , je fais appel a XFlush egalement sinon si les surfaces dessinées sont trop petites, elles sont ignorées (les plantages arrivent aussi sans cette fonction donc je ne pense pas que ca vienne de la).
 
J'aimerai donc savoir si il existe un autre moyen simple d afficher des images (16 bits toutes simples) autrement qu en utilisant la fonction XPutImage. (Un exemple d application minimal serait genial).
 
Existe t il aussi la liste des codes d erreurs de XFree car ca serait plus pratique de savoir pourquoi l appel XFree plante. Et je n'ai pas trouvé cette liste sur le site www.xfree.org.
 
 
Merci de votre aide , ca m'aiderait grandement.:)

Reply

Marsh Posté le 05-11-2003 à 12:12:31    

Après avoir un peu cherché, j'ai vu qu'apparement le serveur X a besoin d'etre configuré d'une façon spéciale si tu utilise des threads (via fct comme XInitThreads(), XLockDisplay(), ...).
+ d'info sur  
http://tronche.com/gui/x/xlib/display/threads.html
 
Mais maintenant, c'est à toi de te débrouiller car j'ai bien peur de ne pouvoir plus t'aider.
Désolé :(


Message édité par bounty le 05-11-2003 à 12:12:55
Reply

Marsh Posté le 05-11-2003 à 14:35:18    

Parfait, c etait exactement ca. Merci beaucoup, j'ai donc un probleme de resolu. Il apparait evident que ca venait de la, lorsque j'avais 2 acces concurentiel a une fonction de dessin mais je pensais que c etait implicite comme sous windows. (Je ne vois pas bien l'interet de proposer un mode monotache mais il y a surement une raison pour ).
 
 
Il me reste a resoudre ce probleme de message qui reste dans la queue des messages (voir autre post). Je suis allé sur le channel irc mais y a autant de monde qu en terre adélie.

Reply

Sujets relatifs:

Leave a Replay

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