|
|
|
@ -263,6 +263,28 @@ static void createKeyTables(void) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Creates a dummy window for behind-the-scenes work
|
|
|
|
|
//
|
|
|
|
|
static HWND createHelperWindow(void) |
|
|
|
|
{ |
|
|
|
|
HWND window = CreateWindowExW(WS_EX_OVERLAPPEDWINDOW, |
|
|
|
|
_GLFW_WNDCLASSNAME, |
|
|
|
|
L"GLFW helper window", |
|
|
|
|
WS_CLIPSIBLINGS | WS_CLIPCHILDREN, |
|
|
|
|
0, 0, 1, 1, |
|
|
|
|
NULL, NULL, |
|
|
|
|
GetModuleHandleW(NULL), |
|
|
|
|
NULL); |
|
|
|
|
if (!window) |
|
|
|
|
{ |
|
|
|
|
_glfwInputError(GLFW_PLATFORM_ERROR, |
|
|
|
|
"Win32: Failed to create helper window"); |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return window; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
|
////// GLFW internal API //////
|
|
|
|
@ -355,6 +377,12 @@ int _glfwPlatformInit(void) |
|
|
|
|
if (!_glfwRegisterWindowClass()) |
|
|
|
|
return GLFW_FALSE; |
|
|
|
|
|
|
|
|
|
_glfw.win32.helperWindow = createHelperWindow(); |
|
|
|
|
if (!_glfw.win32.helperWindow) |
|
|
|
|
return GLFW_FALSE; |
|
|
|
|
|
|
|
|
|
_glfwPlatformPollEvents(); |
|
|
|
|
|
|
|
|
|
if (!_glfwInitContextAPI()) |
|
|
|
|
return GLFW_FALSE; |
|
|
|
|
|
|
|
|
@ -378,6 +406,9 @@ void _glfwPlatformTerminate(void) |
|
|
|
|
_glfwTerminateJoysticks(); |
|
|
|
|
_glfwTerminateContextAPI(); |
|
|
|
|
|
|
|
|
|
if (_glfw.win32.helperWindow) |
|
|
|
|
DestroyWindow(_glfw.win32.helperWindow); |
|
|
|
|
|
|
|
|
|
freeLibraries(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|