OpenGLControl und Lazarus 1.9.0 flackert bei Invalidate

Rund um die LCL und andere Komponenten

OpenGLControl und Lazarus 1.9.0 flackert bei Invalidate

Beitragvon Mathias » 5. Aug 2018, 21:46 OpenGLControl und Lazarus 1.9.0 flackert bei Invalidate

Wen ich den Code im Anhang mit Lazarus 1.8.4 kompiliere, dann läuft alles flacker frei, wie erwartet.
Kompiliere ich aber den Code mit der neusten Trunk 1.9.0, dann flackert meine Scene.

Da Problem wird bei folgenden Code ausgelöst.
Code: Alles auswählen
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  OpenGLControl.Invalidate;
end;   

Ersetze ich Invalidate durch DrawScene, läuft es auch mit 1.9.0 .
Code: Alles auswählen
  DrawScene;


Kann sonst noch wer dieses Problem nachvollziehen ?
Ich verwende Linux Mint 19.0 64Bit.
Kann es jemand noch mit Windows testen ?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4105
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 5. Aug 2018, 22:46 Re: OpenGLControl und Lazarus 1.9.0 flackert bei Invalidate

Kein Flackern bei mir (Win 10/64 bit, Laz trunk/fpc 3.0.4 32 bit, oder Laz trunk /fpc trunk 32 bit). Allerdings fehlt manchmal zu Beginn der Animation ein Teil des Sechsecks - siehe Screenshot.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
wp_xyz
 
Beiträge: 2564
Registriert: 8. Apr 2011, 08:01

Beitragvon Mathias » 5. Aug 2018, 23:55 Re: OpenGLControl und Lazarus 1.9.0 flackert bei Invalidate

Das fehlende Teil ist io.
Es flackert der Weisse Hintergrund des Forms durch. Und dies nicht bei jedem Frames.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4105
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon corpsman » 6. Aug 2018, 05:46 Re: OpenGLControl und Lazarus 1.9.0 flackert bei Invalidate

Auf meinem Mint Mate flackerts auch, selbe Lösung des Problems wie bei dir.
--
Just try it
corpsman
 
Beiträge: 1043
Registriert: 28. Feb 2009, 08:54
Wohnort: Stuttgart
OS, Lazarus, FPC: Kubuntu 14.04, Lazarus SVN Trunk, FPC 3.0 | 
CPU-Target: 32Bit
Nach oben

Beitragvon Mathias » 6. Aug 2018, 11:21 Re: OpenGLControl und Lazarus 1.9.0 flackert bei Invalidate

Dann wird es wohl einen Bug-Report geben.

Ich werde am Abend das Project auf einem Minimum abspecken, unter Umständen muss nicht mal was gerendert werden. Ein SwapBuffer müsste reichen.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4105
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 6. Aug 2018, 11:47 Re: OpenGLControl und Lazarus 1.9.0 flackert bei Invalidate

Nimm doch gleich das mitgelieferte Beispiel (components/opengl/example/testopenglcontext1) - das flackert in meiner Mint-VM (gtk2) extrem (auf Win10 überhaupt nicht). Falls das ein neues Verhalten ist wäre es auch Interessant und hilfreich, wenn du im svn zurückgehst, und die Revision herausfindest, bei der der Fehler erstmals aufgetritt.
wp_xyz
 
Beiträge: 2564
Registriert: 8. Apr 2011, 08:01

Beitragvon Mathias » 6. Aug 2018, 17:09 Re: OpenGLControl und Lazarus 1.9.0 flackert bei Invalidate

Nimm doch gleich das mitgelieferte Beispiel (components/opengl/example/testopenglcontext1) - das flackert in meiner Mint-VM (gtk2) extrem

Flackern ginge noch, der Würfel kommt gar nicht, ausser wen ich das Fenster mit der Maus endlos Resize, dann erscheint der Würfel zwischendurch.
Mit Lazarus 1.8.4, läuft es einwandfrei.

Ich wollte schon mein Tutorial ändern aber so wie es aussieht, ist es ein Bug von OpenGLControl.

PS: Habe gerade ein Bug-Report erstellt: https://bugs.freepascal.org/view.php?id=34094
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4105
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Mathias » 6. Aug 2018, 19:32 Re: OpenGLControl und Lazarus 1.9.0 flackert bei Invalidate

@ wp_xyz
Ich habe gerade dein Text im Bug-report übersetzt.
Keine Probleme in Windows (Win 10) mit dem Laz Beispielprojekt. Massives Flimmern in Linux Mint (gtk2).

Kein Flimmern, weder in Win noch in Linux mit der von Ihnen bereitgestellten Demo. Wahrscheinlich fehlt etwas. Bitte fügen Sie ein kompilierbares Projekt hinzu, nicht nur ein Code-Snippet.

Das stimmt, flackern tut das Bild nicht, aber dafür ist der Würfel nicht sichtbar.

Jetzt kommt der Würfel nicht mal mehr mit Resizen mi der Maus.
Wen ich richtig gelesen habe, kam vorhin ein Update von XOrg bei Mint.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4105
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Mathias » 6. Aug 2018, 19:48 Re: OpenGLControl und Lazarus 1.9.0 flackert bei Invalidate

Ich habe mal ein "diff" zwischen Stable und Trunk ausgeführt.

Ein paar Änderungen gab es da schon.
Vor allem gibt es Differenzen mit "Handle: HWND" .
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4105
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 6. Aug 2018, 23:18 Re: OpenGLControl und Lazarus 1.9.0 flackert bei Invalidate

Mathias hat geschrieben:@ wp_xyz
Ich habe gerade dein Text im Bug-report übersetzt.
Keine Probleme in Windows (Win 10) mit dem Laz Beispielprojekt. Massives Flimmern in Linux Mint (gtk2).

Kein Flimmern, weder in Win noch in Linux mit der von Ihnen bereitgestellten Demo. Wahrscheinlich fehlt etwas. Bitte fügen Sie ein kompilierbares Projekt hinzu, nicht nur ein Code-Snippet.

Das stimmt, flackern tut das Bild nicht, aber dafür ist der Würfel nicht sichtbar.

Jetzt kommt der Würfel nicht mal mehr mit Resizen mi der Maus.
Wen ich richtig gelesen habe, kam vorhin ein Update von XOrg bei Mint.

Aber in dem von dir geposteten Code wird überhaupt nichts gezeichnet (FormCreate erzeugt das OpenGLControl, OpenGLControlPaint swappt die Buffer, und OnTimer ruft OpenGLCOntrol.Invalidate auf - nirgendwo "echter" OpenGL-Code)- daher habe ich geschrieben, ob nicht vielleicht etwas fehlt. Poste ein komplettes Projekt, dann kannst du dich vorher überzeugen, dass der Fehler reproduziert werden kann, und sparst dem Entwickler, der sich dieses Reports annimmt, die Arbeit, das projekt aus deinen Fragmenten neu aufzubauen und vielleicht etwas zu übersehen.

Mathias hat geschrieben:Ich habe mal ein "diff" zwischen Stable und Trunk ausgeführt.

Ein paar Änderungen gab es da schon.
Vor allem gibt es Differenzen mit "Handle: HWND" .

Weiß nicht, ich dachte eher, etwas im WidgetSet, weil unter Windows das Flackern ja nicht auftritt.

In solchen Fällen mache ich immer ein svn update zu einer älteren Revision (ich mache das mit TortoiseSVN, den Kommandozeilenbefehl dafür weiß ich nicht), übersetze das Testprogramm und prüfe, ob der Fehler auftritt. Wenn ja, gehe ich eine ähnlich Anzahl an Revisions zurück, andernfalls suche ich eine Revision etwa in der Mitte zwischen damals und heute und mache wieder dasselbe: also svn update zu dieser Revision und Testprogramm prüfen. Usw. Je nachdem, ob der Fehler auftritt oder nicht, geht es um die Hälfte zum letzten erfolgreichen/fehlerhaften Test vor bzw zurück (so wie bei jeder binären Suche). Damit hat man in absehbarer Zeit die Resivion gefunden, die den Fehler erzeugt. An dem diff zwischen letzter guter und erster fehlerhafter Revision sieht man, was geändert wurde, und dann fällt meistens der Groschen.

In der Regel reicht es, nach jeder Iteration nur das Testprogramm zu übersetzen, aber gerade wenn viele Revisionen übersprungen werden, muss man auch Lazarus neu bauen, evtl. sogar sauber. Das schlägt dann auf die Zeit. Und manchmal habe ich mir auch schon die Trunk-Installation zerschossen. Also sei gewarnt. Aber anders geht es nicht, vor allem wenn man den problematischen Code nicht selbst geschrieben hat.
wp_xyz
 
Beiträge: 2564
Registriert: 8. Apr 2011, 08:01

Beitragvon Mathias » 7. Aug 2018, 16:16 Re: OpenGLControl und Lazarus 1.9.0 flackert bei Invalidate

Hier hat anscheinend jemand ein ähnliches Problem. dieser Report wurde mitte Juni erfasst.
https://bugs.freepascal.org/view.php?id=33864
Ich habe die Links dort probiert, die flackern bei mir auch.

Ich habe bei meinem Report ein neues einfaches Example hoch geladen.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4105
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

porpoises-institution
accuracy-worried