diff --git a/src/Backends/Rendering.h b/src/Backends/Rendering.h index ddd24448..a3128940 100644 --- a/src/Backends/Rendering.h +++ b/src/Backends/Rendering.h @@ -21,6 +21,7 @@ void Backend_DrawScreen(void); Backend_Surface* Backend_CreateSurface(unsigned int width, unsigned int height); void Backend_FreeSurface(Backend_Surface *surface); BOOL Backend_IsSurfaceLost(Backend_Surface *surface); +void Backend_RestoreSurface(Backend_Surface *surface); unsigned char* Backend_LockSurface(Backend_Surface *surface, unsigned int *pitch); void Backend_UnlockSurface(Backend_Surface *surface); void Backend_Blit(Backend_Surface *source_surface, const RECT *rect, Backend_Surface *destination_surface, long x, long y, BOOL colour_key); diff --git a/src/Backends/Rendering/OpenGL3.cpp b/src/Backends/Rendering/OpenGL3.cpp index acd01592..9b6876b9 100644 --- a/src/Backends/Rendering/OpenGL3.cpp +++ b/src/Backends/Rendering/OpenGL3.cpp @@ -468,6 +468,11 @@ BOOL Backend_IsSurfaceLost(Backend_Surface *surface) return FALSE; } +void Backend_RestoreSurface(Backend_Surface *surface) +{ + +} + unsigned char* Backend_LockSurface(Backend_Surface *surface, unsigned int *pitch) { if (surface == NULL) diff --git a/src/Backends/Rendering/SDLSurface.cpp b/src/Backends/Rendering/SDLSurface.cpp index 48b32660..c584a990 100644 --- a/src/Backends/Rendering/SDLSurface.cpp +++ b/src/Backends/Rendering/SDLSurface.cpp @@ -98,6 +98,11 @@ BOOL Backend_IsSurfaceLost(Backend_Surface *surface) return FALSE; } +void Backend_RestoreSurface(Backend_Surface *surface) +{ + +} + unsigned char* Backend_LockSurface(Backend_Surface *surface, unsigned int *pitch) { if (surface == NULL) diff --git a/src/Backends/Rendering/SDLTexture.cpp b/src/Backends/Rendering/SDLTexture.cpp index 4aba2a17..2979fedc 100644 --- a/src/Backends/Rendering/SDLTexture.cpp +++ b/src/Backends/Rendering/SDLTexture.cpp @@ -139,6 +139,11 @@ BOOL Backend_IsSurfaceLost(Backend_Surface *surface) return surface->lost; } +void Backend_RestoreSurface(Backend_Surface *surface) +{ + surface->lost = FALSE; +} + unsigned char* Backend_LockSurface(Backend_Surface *surface, unsigned int *pitch) { if (surface == NULL) diff --git a/src/Backends/Rendering/Software.cpp b/src/Backends/Rendering/Software.cpp index 918574ba..707de7c2 100644 --- a/src/Backends/Rendering/Software.cpp +++ b/src/Backends/Rendering/Software.cpp @@ -105,6 +105,11 @@ BOOL Backend_IsSurfaceLost(Backend_Surface *surface) return FALSE; } +void Backend_RestoreSurface(Backend_Surface *surface) +{ + +} + unsigned char* Backend_LockSurface(Backend_Surface *surface, unsigned int *pitch) { if (surface == NULL) diff --git a/src/Draw.cpp b/src/Draw.cpp index d8c9371b..79457579 100644 --- a/src/Draw.cpp +++ b/src/Draw.cpp @@ -78,6 +78,13 @@ BOOL Flip_SystemTask(void) Backend_DrawScreen(); + if (RestoreSurfaces()) + { + RestoreStripper(); + RestoreMapName(); + RestoreTextScript(); + } + return TRUE; } @@ -551,6 +558,7 @@ int RestoreSurfaces(void) // Guessed function name - this doesn't exist in the L if (Backend_IsSurfaceLost(framebuffer)) { ++surfaces_regenerated; + Backend_RestoreSurface(framebuffer); DummiedOutLogFunction(0x62); } @@ -561,6 +569,7 @@ int RestoreSurfaces(void) // Guessed function name - this doesn't exist in the L if (Backend_IsSurfaceLost(surf[s])) { ++surfaces_regenerated; + Backend_RestoreSurface(surf[s]); DummiedOutLogFunction(0x30 + s); if (!surface_metadata[s].bSystem)