Ja, wird immer aufgerufen.
Ich habe mittlerweile auch die "Caption := Uhrzeit"-Zeile in DreieckMalen verlagert. Uhrzeit wird immer sofort nach dem Aufwachen des Bildschirms aktualisiert.
Ausserdem prüfe ich jetzt die Rückgabe von SwapBuffers (immer TRUE) und prüfe auf GL-Fehler. Es gibt keine...
Echt seltsam.
Es liegt übrigens irgendwie mit am Grafikchip oder Treiber:
- Auf meinem 2011er-Imac (Windows 10) mit AMD-6900M kommt es zu dem Hänger.
- Auf meinem Acer Predator Notebook (Windows 10) kommt es zu dem Hänger, wenn das Programm auf dem intel UHD530 Grafikkern läuft. Wenn die Grafikausgabe auf den Nvidia-Chip umgeschaltet wurde, hängt das Programm nicht.
- Auf einem dritten Rechner (Asus-Mainboard, Core-i7-10700K, Windows 11) gab es bisher nie einen Hänger. Allerdings auch hier intel-Chipsatz-Grafik.
So ein richtiges System kann ich da nicht erkennen:
UHD530 Win10 Problem
UHD630 Win11 läuft
AMD 6900M Win10 Problem
Nvidia GTX980M Win 10 läuft
Delphi-Quellcode:
...
if not SwapBuffers(OpenGLContextMain.DevCon) then
begin
Caption := 'SwapBuffers fehlgeschlagen: ' + GetLastError().ToString;
HoldError := TRUE; // einmal Error, immer Error anzeigen.
end;
if not HoldError then
begin
e := glGetError();
if e <> GL_NO_ERROR then
begin
Caption := gluErrorString(e);
HoldError := TRUE; // einmal Error, immer Error anzeigen.
end;
end;
if not HoldError then
Form1.Caption := TimeToStr(Now); // Uhrzeit als WindowTitle läuft weiter