shithub: cstory

Download patch

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)
--