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

mythtv at cvs.mythtv.org mythtv at cvs.mythtv.org
Sun Oct 4 20:09:51 UTC 2009


      Author: cpinkham
        Date: 2009-10-04 20:09:51 +0000 (Sun, 04 Oct 2009)
New Revision: 22239
   Changeset: http://cvs.mythtv.org/trac/changeset/22239

Modified:

   trunk/mythtv/libs/libmythdb/mythversion.h
   trunk/mythtv/libs/libmythui/mythpainter_ogl.cpp
   trunk/mythtv/libs/libmythui/mythpainter_ogl.h
   trunk/mythtv/libs/libmythui/mythpainter_vdpau.cpp
   trunk/mythtv/libs/libmythui/mythuihelper.cpp
   trunk/mythtv/libs/libmythui/mythuihelper.h
   trunk/mythtv/libs/libmythui/mythuiimage.cpp
   trunk/mythtv/libs/libmythui/mythuiimage.h
   trunk/mythtv/programs/mythfrontend/playbackbox.cpp
   trunk/mythtv/programs/mythfrontend/playbackbox.h

Log:

This commit converts libmythui's MythUIImage to load uncached images in a
separate thread so that the UI is not blocked by image loads.  As a
side-effect, this clears up and should prevent any issues with images
Load()-ed outside of the main UI thread.

Specific changes included in this commit are:

- libs/libmythui/mythpainter_vdpau.cpp

  Supporting changes for the MythUIImage threading.  Implemented a delete
  surface list that can be populated from any thread and is processed by
  the main UI thread since this requires VDPAU methods.

- libs/libmythui/mythpainter_ogl.h
- libs/libmythui/mythpainter_ogl.cpp

  Supporting changes for the MythUIImage threading.  Implemented a delete
  texture list that can be populated from any thread and is processed by
  the main UI thread since this requires glDeleteTexture.

- libs/libmythui/mythuihelper.h
- libs/libmythui/mythuihelper.cpp

  Supporting changes for the MythUIImage threading.  The images are loaded
  in threads controlled by a QThreadPool which resides in MythUIHelper.  I
  also added locking around the necessary places that access the in-memory
  image cache since this cache can now be accessed and updated from
  multiple threads.  The number of threads is left at the default which is
  QThread::idealThreadCount().  The minimum is 1, the maximum should be the
  number of CPUs (real & logical) in the system.

- libs/libmythui/mythuiimage.cpp
- libs/libmythui/mythuiimage.h
 
  Split out the loading of uncached images into another thread.  The bulk
  of this part of the commit is from a preliminary patch by Stuart Morgan,
  with a bunch of tweaking and changes by me.  If an image already exists
  in the in-memory image cache, it is loaded immediately, otherwise we
  put a new QRunnable in the thread pool to be processed.

- programs/mythfrontend/playbackbox.cpp
- programs/mythfrontend/playbackbox.h

  Various cleanup/optimizations to the artwork loading in PlaybackBox (aka
  the Watch Recordings scren) some of which depended on the above patches.

- libs/libmythdb/mythversion.h

  Bumped the binary version, so 'make clean'....






More information about the mythtv-commits mailing list