[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