예제 #1
0
void
HdRenderThread::StopRender()
{
    if (IsRendering()) {
        _enableRender.clear();
        std::unique_lock<std::mutex> lock(_requestedStateMutex);
        _requestedState = StateIdle;
        _rendering.store(false);
    }
}
void CSubPicAllocatorPresenterImpl::AlphaBltSubPic(const CRect& windowRect, const CRect& videoRect, SubPicDesc* pTarget)
{
    CComPtr<ISubPic> pSubPic;
    if (m_pSubPicQueue->LookupSubPic(m_rtNow, !IsRendering(), pSubPic)) {
        CRect rcSource, rcDest;
        if (SUCCEEDED(pSubPic->GetSourceAndDest(windowRect, videoRect, rcSource, rcDest))) {
            pSubPic->AlphaBlt(rcSource, rcDest, pTarget);
        }
    }
}
예제 #3
0
void
HdRenderThread::StartRender()
{
    if (!IsRendering()) {
        std::unique_lock<std::mutex> lock(_requestedStateMutex);
        _enableRender.test_and_set();
        _requestedState = StateRendering;
        _rendering.store(true);
        _requestedStateCV.notify_one();
    }
}