void CVDPAU::BindPixmap() { if (m_glPixmap) { if(presentSurface != VDP_INVALID_HANDLE) { VdpPresentationQueueStatus status; VdpTime time; VdpStatus vdp_st; vdp_st = vdp_presentation_queue_query_surface_status( vdp_flip_queue, presentSurface, &status, &time); CheckStatus(vdp_st, __LINE__); while(status != VDP_PRESENTATION_QUEUE_STATUS_VISIBLE && vdp_st == VDP_STATUS_OK) { Sleep(1); vdp_st = vdp_presentation_queue_query_surface_status( vdp_flip_queue, presentSurface, &status, &time); CheckStatus(vdp_st, __LINE__); } } glXReleaseTexImageEXT(m_Display, m_glPixmap, GLX_FRONT_LEFT_EXT); glXBindTexImageEXT(m_Display, m_glPixmap, GLX_FRONT_LEFT_EXT, NULL); } else CLog::Log(LOGERROR,"(VDPAU) BindPixmap called without valid pixmap"); }
void CVDPAU::Close() { CLog::Log(LOGNOTICE, " (VDPAU) %s", __FUNCTION__); FiniVDPAUOutput(); FiniVDPAUProcs(); if (m_glPixmap) { CLog::Log(LOGINFO, "GLX: Destroying glPixmap"); glXReleaseTexImageEXT(m_Display, m_glPixmap, GLX_FRONT_LEFT_EXT); glXDestroyPixmap(m_Display, m_glPixmap); m_glPixmap = NULL; } if (m_Pixmap) { CLog::Log(LOGINFO, "GLX: Destroying XPixmap"); XFreePixmap(m_Display, m_Pixmap); m_Pixmap = NULL; } if (m_glContext) { CLog::Log(LOGINFO, "GLX: Destroying glContext"); glXDestroyContext(m_Display, m_glContext); m_glContext = NULL; } }
void CVDPAU::ReleasePixmap() { if (m_glPixmap) { glXReleaseTexImageEXT(m_Display, m_glPixmap, GLX_FRONT_LEFT_EXT); } else CLog::Log(LOGERROR,"(VDPAU) ReleasePixmap called without valid pixmap"); }
void CVDPAU::ReleasePixmap() { CSharedLock lock(m_DecoderSection); { CSharedLock dLock(m_DisplaySection); if (m_DisplayState != VDPAU_OPEN) return; } if (m_glPixmap) { glXReleaseTexImageEXT(m_Display, m_glPixmap, GLX_FRONT_LEFT_EXT); } else CLog::Log(LOGERROR,"(VDPAU) ReleasePixmap called without valid pixmap"); }