예제 #1
0
파일: VDPAU.cpp 프로젝트: Bobbin007/xbmc
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");
}
예제 #2
0
파일: VDPAU.cpp 프로젝트: hgmeier/xbmc
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;
  }
}
예제 #3
0
파일: VDPAU.cpp 프로젝트: hgmeier/xbmc
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");
}
예제 #4
0
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");
}