void VideoOutputOpenGL::TearDown(void) { QMutexLocker locker(&gl_context_lock); DiscardFrames(true); vbuffers.DeleteBuffers(); vbuffers.Reset(); if (av_pause_frame.buf) { delete [] av_pause_frame.buf; av_pause_frame.buf = NULL; } if (av_pause_frame.qscale_table) { delete [] av_pause_frame.qscale_table; av_pause_frame.qscale_table = NULL; } if (gl_context) gl_context->makeCurrent(); if (gl_videochain) { delete gl_videochain; gl_videochain = NULL; } if (gl_created_painter) delete gl_painter; else gl_painter->SetSwapControl(true); gl_painter = NULL; gl_created_painter = false; while (!gl_pipchains.empty()) { delete *gl_pipchains.begin(); gl_pipchains.erase(gl_pipchains.begin()); } gl_pip_ready.clear(); if (gl_context) gl_context->doneCurrent(); }
void VideoOutputOpenGL::DestroyCPUResources(void) { gl_context_lock.lock(); DiscardFrames(true); vbuffers.DeleteBuffers(); vbuffers.Reset(); if (av_pause_frame.buf) { delete [] av_pause_frame.buf; av_pause_frame.buf = NULL; } if (av_pause_frame.qscale_table) { delete [] av_pause_frame.qscale_table; av_pause_frame.qscale_table = NULL; } gl_context_lock.unlock(); }
void VideoOutputNullVDPAU::ClearAfterSeek(void) { QMutexLocker locker(&m_lock); LOG(VB_PLAYBACK, LOG_INFO, LOC + "ClearAfterSeek()"); DiscardFrames(false); }