Seite 1 von 1

Systemleistung durch update()in QPaintEvent auf 100%

Verfasst: 19. Januar 2009 13:58
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

Verfasst: 19. Januar 2009 14:36
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.

Verfasst: 19. Januar 2009 15:45
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?

Verfasst: 19. Januar 2009 17:26
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.