[mythtv-commits] mythtv commit: r22560 - in trunk/mythtv/libs by cpinkham

mythtv at cvs.mythtv.org mythtv at cvs.mythtv.org
Thu Oct 22 03:57:45 UTC 2009


      Author: cpinkham
        Date: 2009-10-22 03:57:44 +0000 (Thu, 22 Oct 2009)
New Revision: 22560
   Changeset: http://cvs.mythtv.org/trac/changeset/22560

Modified:

   trunk/mythtv/libs/libmythdb/mythversion.h
   trunk/mythtv/libs/libmythui/mythmainwindow.cpp
   trunk/mythtv/libs/libmythui/mythuitype.cpp
   trunk/mythtv/libs/libmythui/mythuitype.h

Log:

Rework [22551] as discussed on IRC to fix an issue with widgets
potentially being redrawn twice if the dirty region was updated
between MythMainWindow::animate() and MythMainWindow::drawScreen().

When building the repaintRegion, animate() now resets the dirty widget's
m_NeedsRedraw flag.  drawScreen() checks to see if the flag has been
reset between the time animate() was called and drawScreen was called
in the paint event.  If a widget was updated, we check its dirty
region against the repaintRegion to see if we are already drawing the
dirty area anyway.  If not, we abort drawScreen and let the next animate()
catch all the updates.  We can't modify repaintRegion inside
drawScreen() because the QWidget's paint region can not be modified
inside the paint event.  Also, QRegion::contains(QRect) returns true
if the QRect overlaps the QRect, the QRect does not have to be fully
within a QRect inside the QRegion.  For this purpose, we have to do
a loop through the QRegion's QRects manually and use 
QRect::contains(QRect) instead.

This does update the binary api version since libmythui is changed,
so make clean.






More information about the mythtv-commits mailing list