[#1]
Gadżety i podwójne buforowanie
Hej,
Nurtuje mnie mała rzecz. Otóż chciałbym poprawnie odświeżyć gadżety systemowe w buforze ekranu.
Bufor ekranu tworzę za pomocą AllocScreenBuffer() z intuition.library. Jest to podwójne buforowanie zgodne z systemem.
Jeżeli użytkownik zmieni stan gadżetów, to wówczas chciałbym w drugim buforze odświeżyć te gadżety. Najlepiej przed ich wyświetleniem.
Funkcja ChangeScreenBuffer() poprawnie zwraca FALSE, kiedy użytkownik w danej chwili naciska gadżet i wstrzymuje przełączanie bufora. Kiedy natomiast stan interfejsu użytkownika nie jest aktualnie zmieniany, funkcja zwraca TRUE i przełącza bufor ekranu.
Po przełączeniu bufora wszystkie operacje rysujące są wykonywane w nowym buforze.
Do odświeżenia gadżetów służy funkcja RefreshGList().
Jak wykonać funkcję RefreshGList() tuż przed przełączeniem buforów w taki sposób, by odświeżyła gadżety w buforze, który chcemy wyświetlić? Czy wystarczy przekierować window->RPort->BitMap okienka, czy może screen->RastPort.BitMap ekranu?
Jeszcze chciałbym zaktualizować ramkę okna przed wyświetleniem nowego bufora. Do jakiej bitmapy zagląda funkcja RefreshWindowFrame()?
Przygotowałem w pełni funkcjonalny edytor plansz do gry, ale chciałbym usprawnić w nim kilka funkcji rysujących.