mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Fixed black screen when app resolution is higher than display resolution
This commit is contained in:
parent
9068a8d9a6
commit
08d3b95afd
@ -215,44 +215,41 @@ namespace D3dDdi
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
if (!isValidRect(data.DstSubResourceIndex, data.DstRect))
|
||||
if (!m_fixedData.Flags.MatchGdiPrimary && !isValidRect(data.DstSubResourceIndex, data.DstRect))
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
DDraw::setBltSrc(data);
|
||||
auto srcResource = m_device.getResource(data.hSrcResource);
|
||||
if (srcResource)
|
||||
if (!srcResource)
|
||||
{
|
||||
if (!srcResource->isValidRect(data.SrcSubResourceIndex, data.SrcRect))
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
if (D3DDDIPOOL_SYSTEMMEM == m_fixedData.Pool &&
|
||||
D3DDDIPOOL_SYSTEMMEM == srcResource->m_fixedData.Pool)
|
||||
{
|
||||
return m_device.getOrigVtable().pfnBlt(m_device, &data);
|
||||
}
|
||||
prepareForBltDst(data);
|
||||
return m_device.getOrigVtable().pfnBlt(m_device, &data);
|
||||
}
|
||||
|
||||
if (srcResource)
|
||||
if (!srcResource->isValidRect(data.SrcSubResourceIndex, data.SrcRect))
|
||||
{
|
||||
if (m_fixedData.Flags.MatchGdiPrimary)
|
||||
{
|
||||
return presentationBlt(data, srcResource);
|
||||
}
|
||||
|
||||
if (shouldBltViaCpu(data, *srcResource))
|
||||
{
|
||||
return bltViaCpu(data, *srcResource);
|
||||
}
|
||||
|
||||
return bltViaGpu(data, *srcResource);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
prepareForBltDst(data);
|
||||
return m_device.getOrigVtable().pfnBlt(m_device, &data);
|
||||
|
||||
if (m_fixedData.Flags.MatchGdiPrimary)
|
||||
{
|
||||
return presentationBlt(data, srcResource);
|
||||
}
|
||||
|
||||
if (D3DDDIPOOL_SYSTEMMEM == m_fixedData.Pool &&
|
||||
D3DDDIPOOL_SYSTEMMEM == srcResource->m_fixedData.Pool)
|
||||
{
|
||||
return m_device.getOrigVtable().pfnBlt(m_device, &data);
|
||||
}
|
||||
|
||||
if (shouldBltViaCpu(data, *srcResource))
|
||||
{
|
||||
return bltViaCpu(data, *srcResource);
|
||||
}
|
||||
|
||||
return bltViaGpu(data, *srcResource);
|
||||
}
|
||||
|
||||
HRESULT Resource::bltLock(D3DDDIARG_LOCK& data)
|
||||
|
Loading…
x
Reference in New Issue
Block a user