[mythtv-commits] mythtv commit: r22287 by cpinkham

mythtv at cvs.mythtv.org mythtv at cvs.mythtv.org
Wed Oct 7 01:44:55 UTC 2009


      Author: cpinkham
        Date: 2009-10-07 01:44:55 +0000 (Wed, 07 Oct 2009)
New Revision: 22287
   Changeset: http://cvs.mythtv.org/trac/changeset/22287

Modified:

   trunk/mythtv/libs/libmythui/mythimage.cpp
   trunk/mythtv/libs/libmythui/mythimage.h
   trunk/mythtv/libs/libmythui/mythpainter_qt.cpp
   trunk/mythtv/libs/libmythui/mythpainter_qt.h
   trunk/mythtv/libs/libmythui/mythuihelper.cpp
   trunk/mythtv/libs/libmythui/mythuiimage.cpp
   trunk/mythtv/libs/libmythui/mythuiimage.h

Log:

A group of changes and bugfixes related to MythUIImage threading.

- Delete MythQtImage's QPixmap inside the UI thread in MythQtPainter.
  This fixes #7253.

- Add a QMutex lock around all accesses to MythImage::m_RefCount so
  that we can access and update this value from multiple threads.
  This fixes segfaults reported in IRC.

- Add a QReadWriteLock lock in MythUIImage to protect values that
  are read and written from more than one thread, such as m_Filename.

- Create a dummy filename for gradients so that they can be treated
  uniquely, previously the filename was set empty, so in the event
  handler we were unable to tell what gradient was loaded.  This is
  part of the fix for the incorrectly drawn buttons on popup menus.

- Reload the image/gradient when MythUIImage::ForceSize is called
  instead of resizing the currently loaded image.  There are places
  in the code where we create an image, then immediately force a
  new size on it, which was having no effect because there was no
  image loaded yet since we load images in the background now.
  This fixes an issue with incorrectly scaled coverart in MythVideo.

- Add better locking around the in-memory image cache to prevent
  deadlocks which were encountered.

- Reset the in-memory image cache's timestamp for an image when
  MythUIImage loads an image out of the cache.






More information about the mythtv-commits mailing list