Permalink
Browse files

Don't call QGLContext::doneCurrent() in MythRenderOpenGL.

- it should be unnecessary given that makeCurrent always checks the
correct context is current to the current thread and following the
threading changes, all of our OpenGL usage should be in the same thread.
- it breaks playback on certain Windows builds.
- it has a sizeable performance impact on at least one system tested
(Intel GPU)

Based on a patch from Lawrence Rust.


git-svn-id: http://svn.mythtv.org/svn/trunk@27281 7dbf422c-18fa-0310-86e9-fd20926502f2
  • Loading branch information...
1 parent 0e26821 commit 262966d31be2d60fe0657d7d4bdb082a48d74f47 Mark Kendall committed Nov 18, 2010
Showing with 4 additions and 2 deletions.
  1. +4 −2 mythtv/libs/libmythui/mythrender_opengl.cpp
@@ -179,9 +179,11 @@ void MythRenderOpenGL::makeCurrent()
void MythRenderOpenGL::doneCurrent()
{
+ // we don't explicitly call QGlContext::doneCurrent() as it should be
+ // unnecessary (makeCurrent() will switch contexts as necessary), it
+ // appears to cause performance issues and breaks rendering in certain
+ // situations
m_lock_level--;
- if (m_lock_level == 0)
- QGLContext::doneCurrent();
if (m_lock_level < 0)
VERBOSE(VB_IMPORTANT, LOC_ERR + "Mis-matched calls to makeCurrent()");
m_lock->unlock();

0 comments on commit 262966d

Please sign in to comment.