Desole je suis pas d'accord, c'est facile de dire vaguement hop c'est l'OS qui fait le boulot, ben on peut lui en dire des trucs au serveur X (gérer le backing store pour eviter de redessiner des morceaux, des trucs comme ça).
Mais bon, a un moment ou a un autre il faut lui dire quoi redessiner de joli sur ton ecran, et le serveur X peut pas le deviner, a ce moment là tu peux toujours intercaler une librairie de plus haut niveau et multithreadée (QT ?) qui ferait un peu plus de boulot (genre redessiner automatiquement les boutons, les trucs comme ça).
Par contre, qu'est ce que tu crois qui se passe quand tu vois ton ecran kmail blanc ? ben le serveur X s'est aperçu que la zone blanche etait de nouveau exposée et qu'il allait falloir la redessiner, alors hop il génère un évènement que kmail récupère dans sa boucle de message (cf. protocole Xlib) => le serveur X a fait son boulot, c'est tout ce qu'on lui demande.
Maintenant si kmail faisait autre chose a ce moment la, l'evenement de "repaint" reste dans la queue (en attente quoi, et ca redessine rien) : ta fenêtre reste blanche => kmail a pas fait son boulot.
Solution ?
- une lib MT qui s'intercale et fait le boulot (jusqu'a un certain point, s'il fallait redessiner un film/animation la lib pourrait pas le faire a la place du programme)
- kmail multithreadé et qui gère le "repaint" dans un autre thread que son thread de calcul.
[^] # Re: DCE, Quartz et Fresco
Posté par let antibarbie = xp <- xp - 1 . En réponse à la dépêche DCE, Quartz et Fresco. Évalué à 3.
Mais bon, a un moment ou a un autre il faut lui dire quoi redessiner de joli sur ton ecran, et le serveur X peut pas le deviner, a ce moment là tu peux toujours intercaler une librairie de plus haut niveau et multithreadée (QT ?) qui ferait un peu plus de boulot (genre redessiner automatiquement les boutons, les trucs comme ça).
Par contre, qu'est ce que tu crois qui se passe quand tu vois ton ecran kmail blanc ? ben le serveur X s'est aperçu que la zone blanche etait de nouveau exposée et qu'il allait falloir la redessiner, alors hop il génère un évènement que kmail récupère dans sa boucle de message (cf. protocole Xlib) => le serveur X a fait son boulot, c'est tout ce qu'on lui demande.
Maintenant si kmail faisait autre chose a ce moment la, l'evenement de "repaint" reste dans la queue (en attente quoi, et ca redessine rien) : ta fenêtre reste blanche => kmail a pas fait son boulot.
Solution ?
- une lib MT qui s'intercale et fait le boulot (jusqu'a un certain point, s'il fallait redessiner un film/animation la lib pourrait pas le faire a la place du programme)
- kmail multithreadé et qui gère le "repaint" dans un autre thread que son thread de calcul.
une autre solution a ton gout ?