diff --git a/src/cocoa_window.m b/src/cocoa_window.m index e508f8a1..034fcde1 100644 --- a/src/cocoa_window.m +++ b/src/cocoa_window.m @@ -729,7 +729,7 @@ static GLboolean createContext(_GLFWwindow* window, else if (colorBits < 15) colorBits = 15; - if (wndconfig->clientAPI != GLFW_OPENGL_ES_API) + if (wndconfig->clientAPI == GLFW_OPENGL_ES_API) { _glfwSetError(GLFW_VERSION_UNAVAILABLE, "Cocoa/NSOpenGL: NSOpenGL does not support OpenGL ES"); diff --git a/src/win32_opengl.c b/src/win32_opengl.c index 0bcfe452..c326dac7 100644 --- a/src/win32_opengl.c +++ b/src/win32_opengl.c @@ -411,7 +411,7 @@ static GLboolean createContext(_GLFWwindow* window, if (wndconfig->glRobustness) { - int strategy; + int strategy = 0; if (!window->WGL.ARB_create_context_robustness) { diff --git a/src/x11_window.c b/src/x11_window.c index f18a31ab..05b711b4 100644 --- a/src/x11_window.c +++ b/src/x11_window.c @@ -248,6 +248,15 @@ static GLboolean createWindow(_GLFWwindow* window, static void hideCursor(_GLFWwindow* window) { + // Un-grab cursor (in windowed mode only; in fullscreen mode we still + // want the cursor grabbed in order to confine the cursor to the window + // area) + if (window->X11.cursorGrabbed && window->monitor == NULL) + { + XUngrabPointer(_glfwLibrary.X11.display, CurrentTime); + window->X11.cursorGrabbed = GL_FALSE; + } + if (!window->X11.cursorHidden) { XDefineCursor(_glfwLibrary.X11.display, @@ -290,7 +299,7 @@ static void showCursor(_GLFWwindow* window) // Un-grab cursor (in windowed mode only; in fullscreen mode we still // want the cursor grabbed in order to confine the cursor to the window // area) - if (window->X11.cursorGrabbed) + if (window->X11.cursorGrabbed && window->monitor == NULL) { XUngrabPointer(_glfwLibrary.X11.display, CurrentTime); window->X11.cursorGrabbed = GL_FALSE; diff --git a/tests/iconify.c b/tests/iconify.c index b76a83b3..fc3d9fdd 100644 --- a/tests/iconify.c +++ b/tests/iconify.c @@ -70,15 +70,28 @@ static void key_callback(GLFWwindow window, int key, int action) static void window_size_callback(GLFWwindow window, int width, int height) { - printf("%0.2f Size %ix%i\n", glfwGetTime(), width, height); + printf("%0.2f Window resized to %ix%i\n", glfwGetTime(), width, height); glViewport(0, 0, width, height); } +static void window_focus_callback(GLFWwindow window, int activated) +{ + printf("%0.2f Window %s\n", + glfwGetTime(), + activated ? "activated" : "deactivated"); +} + +static void window_iconify_callback(GLFWwindow window, int iconified) +{ + printf("%0.2f Window %s\n", + glfwGetTime(), + iconified ? "iconified" : "restored"); +} + int main(int argc, char** argv) { int width, height, ch; - GLboolean active = -1, iconified = -1; GLFWmonitor monitor = NULL; GLFWwindow window; @@ -134,23 +147,17 @@ int main(int argc, char** argv) glfwSetKeyCallback(key_callback); glfwSetWindowSizeCallback(window_size_callback); glfwSetWindowCloseCallback(window_close_callback); + glfwSetWindowFocusCallback(window_focus_callback); + glfwSetWindowIconifyCallback(window_iconify_callback); + + printf("Window is %s and %s\n", + glfwGetWindowParam(window, GLFW_ICONIFIED) ? "iconified" : "restored", + glfwGetWindowParam(window, GLFW_ACTIVE) ? "active" : "inactive"); glEnable(GL_SCISSOR_TEST); while (!closed) { - if (iconified != glfwGetWindowParam(window, GLFW_ICONIFIED) || - active != glfwGetWindowParam(window, GLFW_ACTIVE)) - { - iconified = glfwGetWindowParam(window, GLFW_ICONIFIED); - active = glfwGetWindowParam(window, GLFW_ACTIVE); - - printf("%0.2f %s %s\n", - glfwGetTime(), - iconified ? "Iconified" : "Restored", - active ? "Active" : "Inactive"); - } - glfwGetWindowSize(window, &width, &height); glScissor(0, 0, width, height);