1
0
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:
narzoul 2022-11-27 22:48:36 +01:00
parent 9068a8d9a6
commit 08d3b95afd

View File

@ -215,33 +215,34 @@ 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)
{
prepareForBltDst(data);
return m_device.getOrigVtable().pfnBlt(m_device, &data);
}
if (!srcResource->isValidRect(data.SrcSubResourceIndex, data.SrcRect))
{
return S_OK;
}
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 (srcResource)
{
if (m_fixedData.Flags.MatchGdiPrimary)
{
return presentationBlt(data, srcResource);
}
if (shouldBltViaCpu(data, *srcResource))
{
@ -251,10 +252,6 @@ namespace D3dDdi
return bltViaGpu(data, *srcResource);
}
prepareForBltDst(data);
return m_device.getOrigVtable().pfnBlt(m_device, &data);
}
HRESULT Resource::bltLock(D3DDDIARG_LOCK& data)
{
LOG_FUNC("Resource::bltLock", data);