mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Fixed broken presentation after fullscreen to windowed switch
Fixes frozen screen before main menu in The X-Files Game.
This commit is contained in:
parent
60476f44ed
commit
ec686bfb69
@ -149,6 +149,10 @@ namespace
|
|||||||
if (wasFullscreen != isFullscreen)
|
if (wasFullscreen != isFullscreen)
|
||||||
{
|
{
|
||||||
tagSurface->setFullscreenWindow(isFullscreen ? hWnd : nullptr);
|
tagSurface->setFullscreenWindow(isFullscreen ? hWnd : nullptr);
|
||||||
|
if (!isFullscreen)
|
||||||
|
{
|
||||||
|
DDraw::PrimarySurface::setWindowedCooperativeLevel();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -299,6 +299,29 @@ namespace DDraw
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PrimarySurface::setWindowedCooperativeLevel()
|
||||||
|
{
|
||||||
|
LOG_FUNC("PrimarySurface::setWindowedCooperativeLevel");
|
||||||
|
if (!g_primarySurface)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RealPrimarySurface::restore();
|
||||||
|
|
||||||
|
if (FAILED(g_primarySurface->IsLost(g_primarySurface)))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto surface = Surface::getSurface(*g_primarySurface);
|
||||||
|
if (surface)
|
||||||
|
{
|
||||||
|
onLost();
|
||||||
|
surface->restore();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void PrimarySurface::updateFrontResource()
|
void PrimarySurface::updateFrontResource()
|
||||||
{
|
{
|
||||||
g_frontResource = DirectDrawSurface::getDriverResourceHandle(*g_primarySurface);
|
g_frontResource = DirectDrawSurface::getDriverResourceHandle(*g_primarySurface);
|
||||||
|
@ -29,6 +29,7 @@ namespace DDraw
|
|||||||
static DWORD getOrigCaps();
|
static DWORD getOrigCaps();
|
||||||
static void onLost();
|
static void onLost();
|
||||||
static void setAsRenderTarget();
|
static void setAsRenderTarget();
|
||||||
|
static void setWindowedCooperativeLevel();
|
||||||
static void updatePalette();
|
static void updatePalette();
|
||||||
|
|
||||||
template <typename TSurface>
|
template <typename TSurface>
|
||||||
|
@ -153,6 +153,11 @@ namespace DDraw
|
|||||||
template <typename TSurface>
|
template <typename TSurface>
|
||||||
HRESULT PrimarySurfaceImpl<TSurface>::Flip(TSurface* This, TSurface* lpDDSurfaceTargetOverride, DWORD dwFlags)
|
HRESULT PrimarySurfaceImpl<TSurface>::Flip(TSurface* This, TSurface* lpDDSurfaceTargetOverride, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
|
if (!RealPrimarySurface::isFullscreen())
|
||||||
|
{
|
||||||
|
return DDERR_NOEXCLUSIVEMODE;
|
||||||
|
}
|
||||||
|
|
||||||
RealPrimarySurface::setUpdateReady();
|
RealPrimarySurface::setUpdateReady();
|
||||||
RealPrimarySurface::flush();
|
RealPrimarySurface::flush();
|
||||||
RealPrimarySurface::waitForFlip(m_data->getDDS());
|
RealPrimarySurface::waitForFlip(m_data->getDDS());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user