always force primary update with flip
This commit is contained in:
parent
a5649a808b
commit
99f388407b
1 changed files with 8 additions and 17 deletions
|
@ -419,12 +419,12 @@ HRESULT dds_Blt(
|
||||||
if ((This->caps & DDSCAPS_PRIMARYSURFACE) && g_ddraw.ref && g_ddraw.render.run)
|
if ((This->caps & DDSCAPS_PRIMARYSURFACE) && g_ddraw.ref && g_ddraw.render.run)
|
||||||
{
|
{
|
||||||
InterlockedExchange(&g_ddraw.render.surface_updated, TRUE);
|
InterlockedExchange(&g_ddraw.render.surface_updated, TRUE);
|
||||||
|
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
||||||
|
|
||||||
if (!(This->flags & DDSD_BACKBUFFERCOUNT) || This->last_flip_tick + FLIP_REDRAW_TIMEOUT < timeGetTime())
|
if (!(This->flags & DDSD_BACKBUFFERCOUNT) || This->last_flip_tick + FLIP_REDRAW_TIMEOUT < timeGetTime())
|
||||||
{
|
{
|
||||||
This->last_blt_tick = timeGetTime();
|
This->last_blt_tick = timeGetTime();
|
||||||
|
|
||||||
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
|
||||||
SwitchToThread();
|
SwitchToThread();
|
||||||
|
|
||||||
if (g_ddraw.ticks_limiter.tick_length > 0)
|
if (g_ddraw.ticks_limiter.tick_length > 0)
|
||||||
|
@ -651,15 +651,14 @@ HRESULT dds_BltFast(
|
||||||
|
|
||||||
if ((This->caps & DDSCAPS_PRIMARYSURFACE) && g_ddraw.ref && g_ddraw.render.run)
|
if ((This->caps & DDSCAPS_PRIMARYSURFACE) && g_ddraw.ref && g_ddraw.render.run)
|
||||||
{
|
{
|
||||||
InterlockedExchange(&g_ddraw.render.surface_updated, TRUE);
|
|
||||||
|
|
||||||
DWORD time = timeGetTime();
|
DWORD time = timeGetTime();
|
||||||
|
|
||||||
|
InterlockedExchange(&g_ddraw.render.surface_updated, TRUE);
|
||||||
|
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
||||||
|
|
||||||
if (!(This->flags & DDSD_BACKBUFFERCOUNT) ||
|
if (!(This->flags & DDSD_BACKBUFFERCOUNT) ||
|
||||||
(This->last_flip_tick + FLIP_REDRAW_TIMEOUT < time && This->last_blt_tick + FLIP_REDRAW_TIMEOUT < time))
|
(This->last_flip_tick + FLIP_REDRAW_TIMEOUT < time && This->last_blt_tick + FLIP_REDRAW_TIMEOUT < time))
|
||||||
{
|
{
|
||||||
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
|
||||||
|
|
||||||
if (g_config.limit_bltfast && g_ddraw.ticks_limiter.tick_length > 0)
|
if (g_config.limit_bltfast && g_ddraw.ticks_limiter.tick_length > 0)
|
||||||
{
|
{
|
||||||
g_ddraw.ticks_limiter.use_blt_or_flip = TRUE;
|
g_ddraw.ticks_limiter.use_blt_or_flip = TRUE;
|
||||||
|
@ -1005,14 +1004,7 @@ HRESULT dds_ReleaseDC(IDirectDrawSurfaceImpl* This, HDC hDC)
|
||||||
if ((This->caps & DDSCAPS_PRIMARYSURFACE) && g_ddraw.ref && g_ddraw.render.run)
|
if ((This->caps & DDSCAPS_PRIMARYSURFACE) && g_ddraw.ref && g_ddraw.render.run)
|
||||||
{
|
{
|
||||||
InterlockedExchange(&g_ddraw.render.surface_updated, TRUE);
|
InterlockedExchange(&g_ddraw.render.surface_updated, TRUE);
|
||||||
|
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
||||||
DWORD time = timeGetTime();
|
|
||||||
|
|
||||||
if (!(This->flags & DDSD_BACKBUFFERCOUNT) ||
|
|
||||||
(This->last_flip_tick + FLIP_REDRAW_TIMEOUT < time && This->last_blt_tick + FLIP_REDRAW_TIMEOUT < time))
|
|
||||||
{
|
|
||||||
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return DD_OK;
|
return DD_OK;
|
||||||
|
@ -1191,15 +1183,14 @@ HRESULT dds_Unlock(IDirectDrawSurfaceImpl* This, LPRECT lpRect)
|
||||||
|
|
||||||
if ((This->caps & DDSCAPS_PRIMARYSURFACE) && g_ddraw.ref && g_ddraw.render.run)
|
if ((This->caps & DDSCAPS_PRIMARYSURFACE) && g_ddraw.ref && g_ddraw.render.run)
|
||||||
{
|
{
|
||||||
InterlockedExchange(&g_ddraw.render.surface_updated, TRUE);
|
|
||||||
|
|
||||||
DWORD time = timeGetTime();
|
DWORD time = timeGetTime();
|
||||||
|
|
||||||
|
InterlockedExchange(&g_ddraw.render.surface_updated, TRUE);
|
||||||
|
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
||||||
|
|
||||||
if (!(This->flags & DDSD_BACKBUFFERCOUNT) ||
|
if (!(This->flags & DDSD_BACKBUFFERCOUNT) ||
|
||||||
(This->last_flip_tick + FLIP_REDRAW_TIMEOUT < time && This->last_blt_tick + FLIP_REDRAW_TIMEOUT < time))
|
(This->last_flip_tick + FLIP_REDRAW_TIMEOUT < time && This->last_blt_tick + FLIP_REDRAW_TIMEOUT < time))
|
||||||
{
|
{
|
||||||
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
|
||||||
|
|
||||||
if (g_ddraw.ticks_limiter.tick_length > 0 && !g_ddraw.ticks_limiter.use_blt_or_flip)
|
if (g_ddraw.ticks_limiter.tick_length > 0 && !g_ddraw.ticks_limiter.use_blt_or_flip)
|
||||||
util_limit_game_ticks();
|
util_limit_game_ticks();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue