Question pour les ultra baleze de la prog XFree - C++ - Programmation
Marsh Posté le 25-03-2003 à 11:12:45
Apres avoir debuggé mon programme , j ai remarqué un truc :
J ai une page avec une trentaine de receiver , qui font 20x20 pixels... et bah si je les "allume" 1 par 1 , c qu au bout du 3eme affiché que les 3 precedents s affichent... or si je les "eteins" tous d un coup , c bon il me les eteint bien.
J en deduis que le dessin avec XPutImage est effectivement fait qu a partir d'une quantité suffisante de donnees dessinées()... y a t il un moyen de forcer le dessin ?
merci
Marsh Posté le 26-03-2003 à 10:20:08
Il y a la commande
XSync(display, discard)
Display *display;
Bool discard;
qui pourrait peut-être te servir. Va voir dans les pages man si ça fait bien ce que tu veux.
Marsh Posté le 26-03-2003 à 12:10:39
Hourrah merci ... bon c pas XSync , mais c XFlush. Enfin j ai trouvé grace a toi.
encore merci
Marsh Posté le 21-03-2003 à 15:14:42
Salut,
J ai un bug monstrueux que je n arrive pas resoudre ... c tres compliqué a expliquer alors je vais essayer d etre clair.
J'ai une application qui tourne sous linux , et en gros j ai des boutons (sender) et des zones de texte (receiver)
lors que j appuie sur un bouton ( sender) ca envoie un ordre vers le port serie, puis je recupere une reponse (un texte) que j affiche dans la zone de texte (receiver)
Dans mon exemple , j ai un bouton et 2 zone de texte.
Le bouton lorsque j appuie , je le redessine appuyé
lorsque je le relache, je le redessine relevé
Mon texte : je l affiche en "piochant" les 4 caracteres dans une image correspondant a mon texte (ex : D V D 4)
Le pb est :
j appuie (et je laisse appuyé) : je dessine mon bouton enfonce et j envoie l ordre...
je recois mon ordre : c est un texte j affiche donc mon texte dans zone1 et zone2 -> dans zone1 il s affiche bien mais dans zone2 il ne s affiche pas
je RELACHE le bouton: je dessine donc mon bouton relevé et LA SEULEMENT il m'affiche bien mon texte dans zone2 (pourtant c pas au meme endroit)
Si je mets 3 zones de texte au lieu de 2 , bah leS 2 premiere ca marche , et la 3eme ne marche pas ... etc
ma police est donc un fichier bitmap dans lequel j ai tous mes caracteres de dessiné et je vais chercher les caracteres en fonctiondes coordonnees enregistrées.. elle fait une certaine taille (la police). Si je prend un fichier beaucoup plus gros (ie police plus grosse) le phenomene n apparait plus
En gros je ne comprends pas ce qu il se passe , mais j'ai peut etre une petite idee : est ce xfree bufferise les images et ne redessine que lorsque la quantité est suffisante ? un peu comme un fprintf dans un fichier il ecrit que lorsque le buffer est plein sauf si un fflush est fait... dans ce cas existe-t-il une commande "fflush" pour forcer le dessin (ATTENTION j ai pas dit un redessin genre XClearArea)
Ou alors ai je fait une erreur ????
A savoir, j utilise les fonctions de base de XFree, en gros pour afficher une image , j utilise la fonction XPutImage
Merci d avance