aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay <raysan5@gmail.com>2018-02-04 11:55:18 +0100
committerGitHub <noreply@github.com>2018-02-04 11:55:18 +0100
commite2861fa71ffb4d5145369939c03d19f4a2945d95 (patch)
treee68dcda404d03c8ebb7e4ee3ca73a01f9aee492c
parent44cd4faf83666d545d6a9424128c5926e5cfdcef (diff)
parent26c9176a1422125d062185b9fe9ce3c8777d87db (diff)
downloadraylib-e2861fa71ffb4d5145369939c03d19f4a2945d95.tar.gz
raylib-e2861fa71ffb4d5145369939c03d19f4a2945d95.zip
Merge pull request #456 from a3f/develop
Return false from InitWindow if glfwInit or glfwCreateWindow fails -TO REVIEW AS DISCUSSED-
-rw-r--r--src/core.c23
-rw-r--r--src/raylib.h2
2 files changed, 17 insertions, 8 deletions
diff --git a/src/core.c b/src/core.c
index 648d586d..75a0781f 100644
--- a/src/core.c
+++ b/src/core.c
@@ -362,7 +362,7 @@ extern void UnloadDefaultFont(void); // [Module: text] Unloads default fo
//----------------------------------------------------------------------------------
// Module specific Functions Declaration
//----------------------------------------------------------------------------------
-static void InitGraphicsDevice(int width, int height); // Initialize graphics device
+static bool InitGraphicsDevice(int width, int height); // Initialize graphics device
static void SetupFramebufferSize(int displayWidth, int displayHeight);
static void InitTimer(void); // Initialize timer
static void Wait(float ms); // Wait for some milliseconds (stop program execution)
@@ -429,7 +429,7 @@ static void *GamepadThread(void *arg); // Mouse reading thread
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_RPI) || defined(PLATFORM_WEB) || defined(PLATFORM_UWP)
// Initialize window and OpenGL context
// NOTE: data parameter could be used to pass any kind of required data to the initialization
-void InitWindow(int width, int height, void *data)
+bool InitWindow(int width, int height, void *data)
{
TraceLog(LOG_INFO, "Initializing raylib (v1.9-dev)");
@@ -442,7 +442,8 @@ void InitWindow(int width, int height, void *data)
#endif
// Init graphics device (display device and OpenGL context)
- InitGraphicsDevice(width, height);
+ if (!InitGraphicsDevice(width, height))
+ return false;
// Init hi-res timer
InitTimer();
@@ -492,13 +493,14 @@ void InitWindow(int width, int height, void *data)
SetTargetFPS(60);
LogoAnimation();
}
+ return true;
}
#endif
#if defined(PLATFORM_ANDROID)
// Initialize window and OpenGL context (and Android activity)
// NOTE: data parameter could be used to pass any kind of required data to the initialization
-void InitWindow(int width, int height, void *data)
+bool InitWindow(int width, int height, void *data)
{
TraceLog(LOG_INFO, "Initializing raylib (v1.9-dev)");
@@ -555,6 +557,7 @@ void InitWindow(int width, int height, void *data)
//if (app->destroyRequested != 0) windowShouldClose = true;
}
}
+ return true;
}
#endif
@@ -1697,7 +1700,7 @@ Vector2 GetTouchPosition(int index)
// Initialize display device and framebuffer
// NOTE: width and height represent the screen (framebuffer) desired size, not actual display size
// If width or height are 0, default display size will be used for framebuffer size
-static void InitGraphicsDevice(int width, int height)
+static bool InitGraphicsDevice(int width, int height)
{
screenWidth = width; // User desired width
screenHeight = height; // User desired height
@@ -1711,7 +1714,11 @@ static void InitGraphicsDevice(int width, int height)
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
glfwSetErrorCallback(ErrorCallback);
- if (!glfwInit()) TraceLog(LOG_ERROR, "Failed to initialize GLFW");
+ if (!glfwInit())
+ {
+ TraceLog(LOG_WARNING, "Failed to initialize GLFW");
+ return false;
+ }
// NOTE: Getting video modes is not implemented in emscripten GLFW3 version
#if defined(PLATFORM_DESKTOP)
@@ -1842,7 +1849,8 @@ static void InitGraphicsDevice(int width, int height)
if (!window)
{
glfwTerminate();
- TraceLog(LOG_ERROR, "GLFW Failed to initialize Window");
+ TraceLog(LOG_WARNING, "GLFW Failed to initialize Window");
+ return false;
}
else
{
@@ -2199,6 +2207,7 @@ static void InitGraphicsDevice(int width, int height)
#if defined(PLATFORM_ANDROID)
windowReady = true; // IMPORTANT!
#endif
+ return true;
}
// Set viewport parameters
diff --git a/src/raylib.h b/src/raylib.h
index f881dc68..0aa5ccae 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -684,7 +684,7 @@ extern "C" { // Prevents name mangling of functions
//------------------------------------------------------------------------------------
// Window-related functions
-RLAPI void InitWindow(int width, int height, void *data); // Initialize window and OpenGL context
+RLAPI bool InitWindow(int width, int height, void *data); // Initialize window and OpenGL context
RLAPI void CloseWindow(void); // Close window and unload OpenGL context
RLAPI bool WindowShouldClose(void); // Check if KEY_ESCAPE pressed or Close icon pressed
RLAPI bool IsWindowMinimized(void); // Check if window has been minimized (or lost focus)