mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Fixed slowdowns caused by palette animation support
The vsynced paletted update is causing performance problems in games that frequently update the palette outside of a palette animation loop, e.g. StarCraft. Vsync has been removed from the palette update, and instead a primary surface synchronization is forced on the main thread, which still seems to preserve the palette fade-in/fade-out effects in Fallout. Perhaps only the small delay introduced by the sync was needed? (Seems it would work with Sleep(1) too).
This commit is contained in:
parent
1999d1c56e
commit
1883d919da
@ -6,5 +6,4 @@ namespace Config
|
|||||||
{
|
{
|
||||||
const DWORD minRefreshInterval = 1000 / 60;
|
const DWORD minRefreshInterval = 1000 / 60;
|
||||||
const DWORD minRefreshIntervalAfterFlip = 1000 / 10;
|
const DWORD minRefreshIntervalAfterFlip = 1000 / 10;
|
||||||
const DWORD minPaletteUpdateInterval = 1000 / 60;
|
|
||||||
}
|
}
|
||||||
|
@ -361,10 +361,7 @@ void RealPrimarySurface::setPalette(LPDIRECTDRAWPALETTE palette)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (palette)
|
updatePalette();
|
||||||
{
|
|
||||||
updatePalette();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RealPrimarySurface::update()
|
void RealPrimarySurface::update()
|
||||||
@ -376,21 +373,5 @@ void RealPrimarySurface::update()
|
|||||||
void RealPrimarySurface::updatePalette()
|
void RealPrimarySurface::updatePalette()
|
||||||
{
|
{
|
||||||
CompatGdi::updatePalette();
|
CompatGdi::updatePalette();
|
||||||
|
updateNow();
|
||||||
if (isFullScreen())
|
|
||||||
{
|
|
||||||
flip(DDFLIP_WAIT);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
static LARGE_INTEGER lastUpdateTime = {};
|
|
||||||
DWORD timeSinceLastUpdate = getTimeElapsedInMs(lastUpdateTime);
|
|
||||||
if (timeSinceLastUpdate < Config::minPaletteUpdateInterval)
|
|
||||||
{
|
|
||||||
Sleep(Config::minPaletteUpdateInterval - timeSinceLastUpdate);
|
|
||||||
}
|
|
||||||
QueryPerformanceCounter(&lastUpdateTime);
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user