Re: Et le clip ? Et le dispatching thread ?

2002-11-19 Par sujet Remi Forax
Herve AGNOUX wrote:


Bonjour,

J'ai une petite fenêtre, dans laquelle il y a un composant au layout 
null : je
me débrouille moi même pour dessiner ce que je dois y dessiner. Et je 
dois y
placer des infos venant d'un réseau, qui arrivent donc de façon 
non-synchrone
par rapport au dispatching thread de awt. Je fais alors religieusement
attention à me re-synchroniser sur ce thread.

A chaque info venant du réseau, je ne veux pas redessiner tout mon 
composant,
sinon mes performances vitesses vont s'écrouler. Je calcule le clip 
concerné,
et j'envoie le repaint. Je suis bien obligé de trouver le clip avant 
d'entrer
dans le dispatching thread, puisque les méthodes de la famille paint 
ont ce
clip en paramètre, dans le contexte graphique.

Manque de bol, pour calculer le clip, j'ai besoin de la taille de mon
composant. Or cette info risque d'être modifiée pendant le dispatching 
thread
: si jamais l'utilisateur à la mauvaise idée de modifier la taille de ma
fenêtre juste au moment où il arrive quelque chose du réseau, tout est 
foutu
; donc, pour l'avoir, je devrais déjà me synchroniser sur lui. Mais je 
suis
justement dans une phase où je ne me suis pas encore synchronisé : je 
calcule
le clip. Mais, pour avoir ce clip...

Bref savez-vous comment je peux m'en sortir ?

post ton code dans la queue d'évènement avec
SwingUtilities.invokeAndWait() ou invokeLater()
comme ca tu peut fait des paintImmediately().

Remi








Re: Et le clip ? Et le dispatching thread ?

2002-11-19 Par sujet Guillaume Desnoix
Herve AGNOUX:

Bref savez-vous comment je peux m'en sortir ?


Pourquoi tu ne calcules pas ton clip dans le DispatchingThread ?

Guillaume






Re: Et le clip ? Et le dispatching thread ?

2002-11-19 Par sujet Herve AGNOUX
Le Mardi 19 Novembre 2002 10:11, Guillaume Desnoix a écrit :


 Pourquoi tu ne calcules pas ton clip dans le DispatchingThread ?


Heu... Je Ja... C'est peut être à cause d'une bourde de conception... Je 
m'imaginais le schéma suivant : Je prépare tout ce que je dois dessiner, 
puis, lorsque tout est prêt, je lance le dispatching thread, comme ça 
celui-ci est rapide et je perds pas de temps...

Je subodore que c'est une reflexion un peu courte...

Pour répondre à Rémi et à toi, les calculs de clip font appel à des méthodes 
que j'utilise très souvent ; si je les mets en queue, j'ai peur que cela 
ralentisse considérablement mon appli.

Pour cette fois-ci j'ai peur de devoir m'en sortir avec quelques verrues, et 
rejeter la reflexion architecturale sur la prochaine version... Ne le dites à 
personne...

Cela dit, y a--t-il des bonnes pratiques à ce sujet ? (pas le mvc, je 
connais, merci). J'ai dû être trompé par le fait que le repaint étant 
normalement une porte d'entrée au dispatching thread, que celui-ci calcule le 
clip et que l'on arrive au paint dans le dispatching avec le clip, je me suis 
dit : il faut calculer le clip avant le paint ! 


-- 
SARL diaam informatique - 04 50 77 12 60
Ingenierie, développements de systèmes d'information
http://www.diaam-informatique.com




Re: Et le clip ? Et le dispatching thread ?

2002-11-19 Par sujet Guillaume Desnoix
Herve AGNOUX:

Heu... Je Ja... C'est peut être à cause d'une bourde de conception... Je 
m'imaginais le schéma suivant : Je prépare tout ce que je dois dessiner, 
puis, lorsque tout est prêt, je lance le dispatching thread, comme ça 
celui-ci est rapide et je perds pas de temps...
Je subodore que c'est une reflexion un peu courte...

A mon avis, tu n'as pas besoin du dispatching thread. Utile juste 
repaint(x,y,w,h); Pourquoi faire plus complique ?

Pour répondre à Rémi et à toi, les calculs de clip font appel à des méthodes 
que j'utilise très souvent ; si je les mets en queue, j'ai peur que cela 
ralentisse considérablement mon appli.

Je suggerais de mettre l'ensemble, pas chaque methode.


Pour cette fois-ci j'ai peur de devoir m'en sortir avec quelques verrues, et 
rejeter la reflexion architecturale sur la prochaine version... Ne le dites à 
personne...

;-)


Cela dit, y a--t-il des bonnes pratiques à ce sujet ? (pas le mvc, je 
connais, merci). J'ai dû être trompé par le fait que le repaint étant 
normalement une porte d'entrée au dispatching thread, que celui-ci calcule le 
clip et que l'on arrive au paint dans le dispatching avec le clip, je me suis 
dit : il faut calculer le clip avant le paint ! 

C'est tout bon, a condition d'utiliser repaint(x,y,w,h);
De tout facon, si la fenetre change de taille, il y aura un repaint() 
general.

Guillaume



Re: Et le clip ? Et le dispatching thread ?

2002-11-19 Par sujet Herve AGNOUX
Le Mardi 19 Novembre 2002 11:11, Guillaume Desnoix a écrit :


 A mon avis, tu n'as pas besoin du dispatching thread. Utile juste
 repaint(x,y,w,h); Pourquoi faire plus complique ?


ben oui mais pour calculer le w il se trouve que j'ai besoin de la taille de 
ma fenêtre ! Cette fenêtre étant susceptible de bouger pendant que je 
calcule, il se peut que lorsque j'arrive sur le paint je sois dans les choux 
!

-- 
SARL diaam informatique - 04 50 77 12 60
Ingenierie, développements de systèmes d'information
http://www.diaam-informatique.com