Systemleistung durch update()in QPaintEvent auf 100%

Alles rund um die Programmierung mit Qt
Antworten
AndiLatte
Beiträge: 104
Registriert: 13. November 2007 13:39

Systemleistung durch update()in QPaintEvent auf 100%

Beitrag von AndiLatte »

Ich habe eine Videoplayer programmiert.
Via QTimer und QPaintEvent lasse ich die Frames über den Bildschirm laufen.

Leider ist meine CPU Auslstung beim Öffnen des Players direkt auf 100%. Auch ohne ein Video abzuspielen.
Wenn ich in der Funktion QPaintEvent das update() weglasse kann ich diesen Effekt verhindert - habe aber natürlich dann kein Videobild mehr.

Kann mir wer einen Tipp geben wie ich das Problem löse?

Beste Grüße
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Das update() triggert ein paintEvent() - Aufruf - was im Endffekt zu nur Loop führt. Dein Konzept passt also nicht so ganz. Der QTimer kann update() aufrufen und in paintEvent() kannst Du dann zeichnen. Aber innerhalb von paintEvent() ein update() oder repaint() aufrufen ist tötlich.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
AndiLatte
Beiträge: 104
Registriert: 13. November 2007 13:39

Beitrag von AndiLatte »

Ok! Danke für die Anwort.

Ich habe das update() aus der QPaintEvent Funktion rausgenommen und je in meine Funktionen (zb. cannyfilter, sobelfilter, usw.) reinsetzt mit denen ich mein Video laufen bzw. bearbeiten lasse.

Der Player läuft - die CPU geht jetzt auf 100% nur wenn das Video läuft.

Das ist jedoch normal und richtig so, oder?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Das kommt auf die Gegebenheiten an - ist es z.B. im Debug-Modus kompiliert und/oder machst Du zu viel unnütze Sachen in paintEvent() bzw. rufst zu oft update() auf. Ein Player sollte imho auf normaler Hardware nicht 100% CPU brauchen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten