shithub: cstory

Download patch

ref: e3db7749baa82dba4ea4596b5df90301d6dd5a71
parent: 49d32a98c552e24343aa91fe4ce29b530a4d2828
author: Clownacy <Clownacy@users.noreply.github.com>
date: Sat Feb 1 07:22:44 EST 2020

Add verbose error-reporting to backends

Should fix #98

--- a/src/Backends/Audio/SDL2.cpp
+++ b/src/Backends/Audio/SDL2.cpp
@@ -163,7 +163,10 @@
 BOOL AudioBackend_Init(void)
 {
 	if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0)
+	{
+		SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (SDL2 audio backend)", "'SDL_InitSubSystem(SDL_INIT_AUDIO)' failed", NULL);
 		return FALSE;
+	}
 
 #ifndef NDEBUG
 	puts("Available SDL2 audio drivers:");
@@ -185,7 +188,10 @@
 	output_frequency = obtained_specification.freq;
 
 	if (device_id == 0)
+	{
+		SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (SDL2 audio backend)", "'SDL_OpenAudioDevice' failed", NULL);
 		return FALSE;
+	}
 
 	SDL_PauseAudioDevice(device_id, 0);
 
--- a/src/Backends/Rendering/OpenGL3.cpp
+++ b/src/Backends/Rendering/OpenGL3.cpp
@@ -310,7 +310,7 @@
 	{
 		char buffer[0x200];
 		glGetShaderInfoLog(vertex_shader, sizeof(buffer), NULL, buffer);
-		printf("Vertex shader: %s", buffer);
+		SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Vertex shader error", buffer, window);
 		return 0;
 	}
 
@@ -325,7 +325,7 @@
 	{
 		char buffer[0x200];
 		glGetShaderInfoLog(fragment_shader, sizeof(buffer), NULL, buffer);
-		printf("Fragment shader: %s", buffer);
+		SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fragment shader error", buffer, window);
 		return 0;
 	}
 
@@ -341,7 +341,7 @@
 	{
 		char buffer[0x200];
 		glGetProgramInfoLog(program_id, sizeof(buffer), NULL, buffer);
-		printf("Shader linker: %s", buffer);
+		SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Shader linker error", buffer, window);
 		return 0;
 	}
 
@@ -455,13 +455,11 @@
 			{
 			#ifndef USE_OPENGLES2
 				if (gladLoadGLLoader((GLADloadproc)SDL_GL_GetProcAddress))
-			#endif
 				{
-				#ifndef USE_OPENGLES2
 					// Check if the platform supports OpenGL 3.2
 					if (GLAD_GL_VERSION_3_2)
-				#endif
 					{
+			#endif
 					#ifndef NDEBUG
 						printf("GL_VENDOR = %s\n", glGetString(GL_VENDOR));
 						printf("GL_RENDERER = %s\n", glGetString(GL_RENDERER));
@@ -552,14 +550,36 @@
 					#ifndef USE_OPENGLES2
 						glDeleteVertexArrays(1, &vertex_array_id);
 					#endif
+			#ifndef USE_OPENGLES2
 					}
+					else
+					{
+						SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (OpenGL rendering backend)", "Your system does not support OpenGL 3.2", window);
+					}
 				}
+				else
+				{
+					SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (OpenGL rendering backend)", "Could not load OpenGL functions", window);
+				}
+			#endif
 			}
+			else
+			{
+				SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (OpenGL rendering backend)", "SDL_GL_MakeCurrent failed", window);
+			}
 
 			SDL_GL_DeleteContext(context);
 		}
+		else
+		{
+			SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (OpenGL rendering backend)", "Could not create OpenGL context", window);
+		}
 
 		SDL_DestroyWindow(window);
+	}
+	else
+	{
+		SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (OpenGL rendering backend)", "Could not create window", NULL);
 	}
 
 	return NULL;
--- a/src/Backends/Rendering/SDLSurface.cpp
+++ b/src/Backends/Rendering/SDLSurface.cpp
@@ -62,8 +62,14 @@
 
 		if (framebuffer.sdlsurface != NULL)
 			return &framebuffer;
+		else
+			SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (SDLSurface rendering backend)", "Could not create framebuffer surface", window);
 
 		SDL_DestroyWindow(window);
+	}
+	else
+	{
+		SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (SDLSurface rendering backend)", "Could not create window", NULL);
 	}
 
 	return NULL;
--- a/src/Backends/Rendering/SDLTexture.cpp
+++ b/src/Backends/Rendering/SDLTexture.cpp
@@ -110,11 +110,24 @@
 
 				return &framebuffer;
 			}
+			else
+			{
+				SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (SDLTexture rendering backend)", "Could not create framebuffer", window);
+			}
 
 			SDL_DestroyRenderer(renderer);
 		}
+		else
+		{
+			SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (SDLTexture rendering backend)", "Could not create renderer", window);
+		}
 
+
 		SDL_DestroyWindow(window);
+	}
+	else
+	{
+		SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (SDLTexture rendering backend)", "Could not create window", NULL);
 	}
 
 	return NULL;
--- a/src/Backends/Rendering/Software.cpp
+++ b/src/Backends/Rendering/Software.cpp
@@ -65,8 +65,16 @@
 
 			return &framebuffer;
 		}
+		else
+		{
+			SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (software rendering backend)", "Could not create framebuffer surface", window);
+		}
 
 		SDL_DestroyWindow(window);
+	}
+	else
+	{
+		SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (software rendering backend)", "Could not create window", NULL);
 	}
 
 	return NULL;
--