ref: 4b8a6849d32d500af243f8c869beccb9f49b6bdf
parent: b5f2fa8693d3071aec454d748bbb23ca29f6e9b2
author: Clownacy <Clownacy@users.noreply.github.com>
date: Fri Sep 6 18:13:00 EDT 2019
Actually make the surface regeneration work
--- a/src/Backends/Rendering.h
+++ b/src/Backends/Rendering.h
@@ -21,6 +21,7 @@
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);
--- a/src/Backends/Rendering/OpenGL3.cpp
+++ b/src/Backends/Rendering/OpenGL3.cpp
@@ -468,6 +468,11 @@
return FALSE;
}
+void Backend_RestoreSurface(Backend_Surface *surface)
+{
+
+}
+
unsigned char* Backend_LockSurface(Backend_Surface *surface, unsigned int *pitch)
{
if (surface == NULL)
--- a/src/Backends/Rendering/SDLSurface.cpp
+++ b/src/Backends/Rendering/SDLSurface.cpp
@@ -98,6 +98,11 @@
return FALSE;
}
+void Backend_RestoreSurface(Backend_Surface *surface)
+{
+
+}
+
unsigned char* Backend_LockSurface(Backend_Surface *surface, unsigned int *pitch)
{
if (surface == NULL)
--- a/src/Backends/Rendering/SDLTexture.cpp
+++ b/src/Backends/Rendering/SDLTexture.cpp
@@ -139,6 +139,11 @@
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)
--- a/src/Backends/Rendering/Software.cpp
+++ b/src/Backends/Rendering/Software.cpp
@@ -105,6 +105,11 @@
return FALSE;
}
+void Backend_RestoreSurface(Backend_Surface *surface)
+{
+
+}
+
unsigned char* Backend_LockSurface(Backend_Surface *surface, unsigned int *pitch)
{
if (surface == NULL)
--- a/src/Draw.cpp
+++ b/src/Draw.cpp
@@ -78,6 +78,13 @@
Backend_DrawScreen();
+ if (RestoreSurfaces())
+ {
+ RestoreStripper();
+ RestoreMapName();
+ RestoreTextScript();
+ }
+
return TRUE;
}
@@ -551,6 +558,7 @@
if (Backend_IsSurfaceLost(framebuffer))
{
++surfaces_regenerated;
+ Backend_RestoreSurface(framebuffer);
DummiedOutLogFunction(0x62);
}
@@ -561,6 +569,7 @@
if (Backend_IsSurfaceLost(surf[s]))
{
++surfaces_regenerated;
+ Backend_RestoreSurface(surf[s]);
DummiedOutLogFunction(0x30 + s);
if (!surface_metadata[s].bSystem)
--
⑨