Browse Source

Merge pull request #456 from a3f/develop

Return false from InitWindow if glfwInit or glfwCreateWindow fails -TO REVIEW AS DISCUSSED-
pull/458/head
Ray 6 years ago
committed by GitHub
parent
commit
e2861fa71f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 8 deletions
  1. +16
    -7
      src/core.c
  2. +1
    -1
      src/raylib.h

+ 16
- 7
src/core.c View File

@ -362,7 +362,7 @@ extern void UnloadDefaultFont(void); // [Module: text] Unloads default fo
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Module specific Functions Declaration // 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 SetupFramebufferSize(int displayWidth, int displayHeight);
static void InitTimer(void); // Initialize timer static void InitTimer(void); // Initialize timer
static void Wait(float ms); // Wait for some milliseconds (stop program execution) 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) #if defined(PLATFORM_DESKTOP) || defined(PLATFORM_RPI) || defined(PLATFORM_WEB) || defined(PLATFORM_UWP)
// Initialize window and OpenGL context // Initialize window and OpenGL context
// NOTE: data parameter could be used to pass any kind of required data to the initialization // 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)"); TraceLog(LOG_INFO, "Initializing raylib (v1.9-dev)");
@ -442,7 +442,8 @@ void InitWindow(int width, int height, void *data)
#endif #endif
// Init graphics device (display device and OpenGL context) // Init graphics device (display device and OpenGL context)
InitGraphicsDevice(width, height);
if (!InitGraphicsDevice(width, height))
return false;
// Init hi-res timer // Init hi-res timer
InitTimer(); InitTimer();
@ -492,13 +493,14 @@ void InitWindow(int width, int height, void *data)
SetTargetFPS(60); SetTargetFPS(60);
LogoAnimation(); LogoAnimation();
} }
return true;
} }
#endif #endif
#if defined(PLATFORM_ANDROID) #if defined(PLATFORM_ANDROID)
// Initialize window and OpenGL context (and Android activity) // Initialize window and OpenGL context (and Android activity)
// NOTE: data parameter could be used to pass any kind of required data to the initialization // 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)"); 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; //if (app->destroyRequested != 0) windowShouldClose = true;
} }
} }
return true;
} }
#endif #endif
@ -1697,7 +1700,7 @@ Vector2 GetTouchPosition(int index)
// Initialize display device and framebuffer // Initialize display device and framebuffer
// NOTE: width and height represent the screen (framebuffer) desired size, not actual display size // 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 // 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 screenWidth = width; // User desired width
screenHeight = height; // User desired height screenHeight = height; // User desired height
@ -1711,7 +1714,11 @@ static void InitGraphicsDevice(int width, int height)
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) #if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
glfwSetErrorCallback(ErrorCallback); 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 // NOTE: Getting video modes is not implemented in emscripten GLFW3 version
#if defined(PLATFORM_DESKTOP) #if defined(PLATFORM_DESKTOP)
@ -1842,7 +1849,8 @@ static void InitGraphicsDevice(int width, int height)
if (!window) if (!window)
{ {
glfwTerminate(); glfwTerminate();
TraceLog(LOG_ERROR, "GLFW Failed to initialize Window");
TraceLog(LOG_WARNING, "GLFW Failed to initialize Window");
return false;
} }
else else
{ {
@ -2199,6 +2207,7 @@ static void InitGraphicsDevice(int width, int height)
#if defined(PLATFORM_ANDROID) #if defined(PLATFORM_ANDROID)
windowReady = true; // IMPORTANT! windowReady = true; // IMPORTANT!
#endif #endif
return true;
} }
// Set viewport parameters // Set viewport parameters

+ 1
- 1
src/raylib.h View File

@ -684,7 +684,7 @@ extern "C" { // Prevents name mangling of functions
//------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------
// Window-related 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 void CloseWindow(void); // Close window and unload OpenGL context
RLAPI bool WindowShouldClose(void); // Check if KEY_ESCAPE pressed or Close icon pressed 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) RLAPI bool IsWindowMinimized(void); // Check if window has been minimized (or lost focus)

Loading…
Cancel
Save