[mythtv-commits] Ticket #12902: Cannot make QOpenGLContext current in a different thread (occurred while watching live tv)

MythTV noreply at mythtv.org
Fri Jan 6 21:47:44 UTC 2017


#12902: Cannot make QOpenGLContext current in a different thread (occurred while
watching live tv)
-------------------------------------------------+-------------------------
 Reporter:  William L. DeRieux IV                |          Owner:
  <WilliamDeRieux@…>                             |
     Type:  Bug Report - Crash                   |         Status:  new
 Priority:  critical                             |      Milestone:  0.28.1
Component:  Qt5 issues                           |        Version:  0.28.0
 Severity:  high                                 |     Resolution:
 Keywords:                                       |  Ticket locked:  0
-------------------------------------------------+-------------------------

Comment (by WilliamDeRieux@…):

 Replying to [comment:4 WilliamDeRieux@…]:
 > Replying to [comment:3 pbennett]:
 > > Can you supply a short video file that has this problem. Also please
 let us know what your setting is for video playback profile.
 > I wouldn't be able to supply any video due to copyright/broadcast
 liscensing (even a short one)
 >
 > I use OpenGL for both painting and rendering....the playback profile
 that I use now is 'OpenGL Slim' but I was using 'OpenGL High Quality'.
 > It only seemed to happen when using OpenGL -- the other painters/renders
 were fine.
 >
 > I also fixed the issue in my copy of the source.[[BR]]
 > MythPlayer::ChangeSpeed() will call VideoOutput::FallbackDeint() before
 then calling VideoOutputOpenGL::SetupDeinterlace[[BR]]
 > The problem seems to be in the deinterlaing methods because it will call
 QOpenGLContext::makeCurrent() on the wrong thread.[[BR]]
 > [[BR]]
 > -- I simply commented out the body of the FallbackDeint() method since I
 don't use deinterlaing and as a result I haven't had this issue occur
 after.
 >
 > this what that method looks like now:
 >
 > {{{
 > /** \fn VideoOutput::FallbackDeint(void)
 >  *  \brief Fallback to non-frame-rate-doubling deinterlacing method.
 >  */
 > void VideoOutput::FallbackDeint(void)
 > {
 >     /*SetupDeinterlace(false);
 >     if (db_vdisp_profile)
 >         SetupDeinterlace(true,
 db_vdisp_profile->GetFallbackDeinterlacer());*/
 > }
 > }}}
 >
 Also, this issue is not specific to a single video file.[[BR]]
 The ultimate solution to the issue would be to make the call to
 QOpenGLContext::makeCurrent() happen on the correct thread (maybe my
 calling QOpenGLContext::moveToThread() as per the QT documentation that I
 linked to in the original post)

--
Ticket URL: <https://code.mythtv.org/trac/ticket/12902#comment:5>
MythTV <http://www.mythtv.org>
MythTV Media Center


More information about the mythtv-commits mailing list