Re: Et le clip ? Et le dispatching thread ?
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 ?
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 ?
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 ?
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 ?
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