Move initialized flag into library struct

This commit is contained in:
Camilla Löwy 2017-02-06 15:58:15 +01:00
parent 98bdd36231
commit 926d2beddb
2 changed files with 10 additions and 18 deletions

View File

@ -33,14 +33,12 @@
#include <stdarg.h> #include <stdarg.h>
// The three global variables below comprise all global data in GLFW. // The global variables below comprise all global data in GLFW.
// Any other global variable is a bug. // Any other global variable is a bug.
// Global state shared between compilation units of GLFW // Global state shared between compilation units of GLFW
// These are documented in internal.h
// //
GLFWbool _glfwInitialized = GLFW_FALSE; _GLFWlibrary _glfw = { GLFW_FALSE };
_GLFWlibrary _glfw;
// This is outside of _glfw so it can be initialized and usable before // This is outside of _glfw so it can be initialized and usable before
// glfwInit is called, which lets that function report errors // glfwInit is called, which lets that function report errors
@ -119,7 +117,7 @@ void _glfwInputError(int error, const char* format, ...)
GLFWAPI int glfwInit(void) GLFWAPI int glfwInit(void)
{ {
if (_glfwInitialized) if (_glfw.initialized)
return GLFW_TRUE; return GLFW_TRUE;
memset(&_glfw, 0, sizeof(_glfw)); memset(&_glfw, 0, sizeof(_glfw));
@ -130,8 +128,7 @@ GLFWAPI int glfwInit(void)
return GLFW_FALSE; return GLFW_FALSE;
} }
_glfwInitialized = GLFW_TRUE; _glfw.initialized = GLFW_TRUE;
_glfw.timerOffset = _glfwPlatformGetTimerValue(); _glfw.timerOffset = _glfwPlatformGetTimerValue();
// Not all window hints have zero as their default value // Not all window hints have zero as their default value
@ -144,7 +141,7 @@ GLFWAPI void glfwTerminate(void)
{ {
int i; int i;
if (!_glfwInitialized) if (!_glfw.initialized)
return; return;
memset(&_glfw.callbacks, 0, sizeof(_glfw.callbacks)); memset(&_glfw.callbacks, 0, sizeof(_glfw.callbacks));
@ -171,7 +168,6 @@ GLFWAPI void glfwTerminate(void)
_glfwPlatformTerminate(); _glfwPlatformTerminate();
memset(&_glfw, 0, sizeof(_glfw)); memset(&_glfw, 0, sizeof(_glfw));
_glfwInitialized = GLFW_FALSE;
} }
GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev) GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev)

View File

@ -230,13 +230,13 @@ typedef void (APIENTRY * PFN_vkVoidFunction)(void);
// Checks for whether the library has been initialized // Checks for whether the library has been initialized
#define _GLFW_REQUIRE_INIT() \ #define _GLFW_REQUIRE_INIT() \
if (!_glfwInitialized) \ if (!_glfw.initialized) \
{ \ { \
_glfwInputError(GLFW_NOT_INITIALIZED, NULL); \ _glfwInputError(GLFW_NOT_INITIALIZED, NULL); \
return; \ return; \
} }
#define _GLFW_REQUIRE_INIT_OR_RETURN(x) \ #define _GLFW_REQUIRE_INIT_OR_RETURN(x) \
if (!_glfwInitialized) \ if (!_glfw.initialized) \
{ \ { \
_glfwInputError(GLFW_NOT_INITIALIZED, NULL); \ _glfwInputError(GLFW_NOT_INITIALIZED, NULL); \
return x; \ return x; \
@ -468,6 +468,8 @@ struct _GLFWjoystick
*/ */
struct _GLFWlibrary struct _GLFWlibrary
{ {
GLFWbool initialized;
struct { struct {
_GLFWfbconfig framebuffer; _GLFWfbconfig framebuffer;
_GLFWwndconfig window; _GLFWwndconfig window;
@ -533,13 +535,7 @@ struct _GLFWlibrary
// Global state shared between compilation units of GLFW // Global state shared between compilation units of GLFW
//======================================================================== //========================================================================
/*! @brief Flag indicating whether GLFW has been successfully initialized. /*! @brief All global data shared between compilation units.
*/
extern GLFWbool _glfwInitialized;
/*! @brief All global data protected by @ref _glfwInitialized.
* This should only be touched after a call to @ref glfwInit that has not been
* followed by a call to @ref glfwTerminate.
*/ */
extern _GLFWlibrary _glfw; extern _GLFWlibrary _glfw;