Camilla Löwy 8 ani în urmă
părinte
comite
b97039f3f5
2 a modificat fișierele cu 110 adăugiri și 122 ștergeri
  1. 48 55
      src/input.c
  2. 62 67
      src/window.c

+ 48 - 55
src/input.c

@@ -354,10 +354,10 @@ GLFWAPI int glfwGetInputMode(GLFWwindow* handle, int mode)
             return window->stickyKeys;
             return window->stickyKeys;
         case GLFW_STICKY_MOUSE_BUTTONS:
         case GLFW_STICKY_MOUSE_BUTTONS:
             return window->stickyMouseButtons;
             return window->stickyMouseButtons;
-        default:
-            _glfwInputError(GLFW_INVALID_ENUM, "Invalid input mode 0x%08X", mode);
-            return 0;
     }
     }
+
+    _glfwInputError(GLFW_INVALID_ENUM, "Invalid input mode 0x%08X", mode);
+    return 0;
 }
 }
 
 
 GLFWAPI void glfwSetInputMode(GLFWwindow* handle, int mode, int value)
 GLFWAPI void glfwSetInputMode(GLFWwindow* handle, int mode, int value)
@@ -367,79 +367,72 @@ GLFWAPI void glfwSetInputMode(GLFWwindow* handle, int mode, int value)
 
 
     _GLFW_REQUIRE_INIT();
     _GLFW_REQUIRE_INIT();
 
 
-    switch (mode)
+    if (mode == GLFW_CURSOR)
     {
     {
-        case GLFW_CURSOR:
+        if (value != GLFW_CURSOR_NORMAL &&
+            value != GLFW_CURSOR_HIDDEN &&
+            value != GLFW_CURSOR_DISABLED)
         {
         {
-            if (value != GLFW_CURSOR_NORMAL &&
-                value != GLFW_CURSOR_HIDDEN &&
-                value != GLFW_CURSOR_DISABLED)
-            {
-                _glfwInputError(GLFW_INVALID_ENUM,
-                                "Invalid cursor mode 0x%08X",
-                                value);
-                return;
-            }
-
-            if (window->cursorMode == value)
-                return;
+            _glfwInputError(GLFW_INVALID_ENUM,
+                            "Invalid cursor mode 0x%08X",
+                            value);
+            return;
+        }
 
 
-            window->cursorMode = value;
+        if (window->cursorMode == value)
+            return;
 
 
-            _glfwPlatformGetCursorPos(window,
-                                      &window->virtualCursorPosX,
-                                      &window->virtualCursorPosY);
+        window->cursorMode = value;
 
 
-            if (_glfwPlatformWindowFocused(window))
-                _glfwPlatformSetCursorMode(window, value);
+        _glfwPlatformGetCursorPos(window,
+                                  &window->virtualCursorPosX,
+                                  &window->virtualCursorPosY);
 
 
+        if (_glfwPlatformWindowFocused(window))
+            _glfwPlatformSetCursorMode(window, value);
+    }
+    else if (mode == GLFW_STICKY_KEYS)
+    {
+        value = value ? GLFW_TRUE : GLFW_FALSE;
+        if (window->stickyKeys == value)
             return;
             return;
-        }
 
 
-        case GLFW_STICKY_KEYS:
+        if (!value)
         {
         {
-            if (window->stickyKeys == value)
-                return;
+            int i;
 
 
-            if (!value)
+            // Release all sticky keys
+            for (i = 0;  i <= GLFW_KEY_LAST;  i++)
             {
             {
-                int i;
-
-                // Release all sticky keys
-                for (i = 0;  i <= GLFW_KEY_LAST;  i++)
-                {
-                    if (window->keys[i] == _GLFW_STICK)
-                        window->keys[i] = GLFW_RELEASE;
-                }
+                if (window->keys[i] == _GLFW_STICK)
+                    window->keys[i] = GLFW_RELEASE;
             }
             }
+        }
 
 
-            window->stickyKeys = value ? GLFW_TRUE : GLFW_FALSE;
+        window->stickyKeys = value ? GLFW_TRUE : GLFW_FALSE;
+    }
+    else if (mode == GLFW_STICKY_MOUSE_BUTTONS)
+    {
+        value = value ? GLFW_TRUE : GLFW_FALSE;
+        if (window->stickyMouseButtons == value)
             return;
             return;
-        }
 
 
-        case GLFW_STICKY_MOUSE_BUTTONS:
+        if (!value)
         {
         {
-            if (window->stickyMouseButtons == value)
-                return;
+            int i;
 
 
-            if (!value)
+            // Release all sticky mouse buttons
+            for (i = 0;  i <= GLFW_MOUSE_BUTTON_LAST;  i++)
             {
             {
-                int i;
-
-                // Release all sticky mouse buttons
-                for (i = 0;  i <= GLFW_MOUSE_BUTTON_LAST;  i++)
-                {
-                    if (window->mouseButtons[i] == _GLFW_STICK)
-                        window->mouseButtons[i] = GLFW_RELEASE;
-                }
+                if (window->mouseButtons[i] == _GLFW_STICK)
+                    window->mouseButtons[i] = GLFW_RELEASE;
             }
             }
-
-            window->stickyMouseButtons = value ? GLFW_TRUE : GLFW_FALSE;
-            return;
         }
         }
-    }
 
 
-    _glfwInputError(GLFW_INVALID_ENUM, "Invalid input mode 0x%08X", mode);
+        window->stickyMouseButtons = value ? GLFW_TRUE : GLFW_FALSE;
+    }
+    else
+        _glfwInputError(GLFW_INVALID_ENUM, "Invalid input mode 0x%08X", mode);
 }
 }
 
 
 GLFWAPI const char* glfwGetKeyName(int key, int scancode)
 GLFWAPI const char* glfwGetKeyName(int key, int scancode)

+ 62 - 67
src/window.c

@@ -278,119 +278,118 @@ GLFWAPI void glfwWindowHint(int hint, int value)
     {
     {
         case GLFW_RED_BITS:
         case GLFW_RED_BITS:
             _glfw.hints.framebuffer.redBits = value;
             _glfw.hints.framebuffer.redBits = value;
-            break;
+            return;
         case GLFW_GREEN_BITS:
         case GLFW_GREEN_BITS:
             _glfw.hints.framebuffer.greenBits = value;
             _glfw.hints.framebuffer.greenBits = value;
-            break;
+            return;
         case GLFW_BLUE_BITS:
         case GLFW_BLUE_BITS:
             _glfw.hints.framebuffer.blueBits = value;
             _glfw.hints.framebuffer.blueBits = value;
-            break;
+            return;
         case GLFW_ALPHA_BITS:
         case GLFW_ALPHA_BITS:
             _glfw.hints.framebuffer.alphaBits = value;
             _glfw.hints.framebuffer.alphaBits = value;
-            break;
+            return;
         case GLFW_DEPTH_BITS:
         case GLFW_DEPTH_BITS:
             _glfw.hints.framebuffer.depthBits = value;
             _glfw.hints.framebuffer.depthBits = value;
-            break;
+            return;
         case GLFW_STENCIL_BITS:
         case GLFW_STENCIL_BITS:
             _glfw.hints.framebuffer.stencilBits = value;
             _glfw.hints.framebuffer.stencilBits = value;
-            break;
+            return;
         case GLFW_ACCUM_RED_BITS:
         case GLFW_ACCUM_RED_BITS:
             _glfw.hints.framebuffer.accumRedBits = value;
             _glfw.hints.framebuffer.accumRedBits = value;
-            break;
+            return;
         case GLFW_ACCUM_GREEN_BITS:
         case GLFW_ACCUM_GREEN_BITS:
             _glfw.hints.framebuffer.accumGreenBits = value;
             _glfw.hints.framebuffer.accumGreenBits = value;
-            break;
+            return;
         case GLFW_ACCUM_BLUE_BITS:
         case GLFW_ACCUM_BLUE_BITS:
             _glfw.hints.framebuffer.accumBlueBits = value;
             _glfw.hints.framebuffer.accumBlueBits = value;
-            break;
+            return;
         case GLFW_ACCUM_ALPHA_BITS:
         case GLFW_ACCUM_ALPHA_BITS:
             _glfw.hints.framebuffer.accumAlphaBits = value;
             _glfw.hints.framebuffer.accumAlphaBits = value;
-            break;
+            return;
         case GLFW_AUX_BUFFERS:
         case GLFW_AUX_BUFFERS:
             _glfw.hints.framebuffer.auxBuffers = value;
             _glfw.hints.framebuffer.auxBuffers = value;
-            break;
+            return;
         case GLFW_STEREO:
         case GLFW_STEREO:
             _glfw.hints.framebuffer.stereo = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.framebuffer.stereo = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_DOUBLEBUFFER:
         case GLFW_DOUBLEBUFFER:
             _glfw.hints.framebuffer.doublebuffer = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.framebuffer.doublebuffer = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_SAMPLES:
         case GLFW_SAMPLES:
             _glfw.hints.framebuffer.samples = value;
             _glfw.hints.framebuffer.samples = value;
-            break;
+            return;
         case GLFW_SRGB_CAPABLE:
         case GLFW_SRGB_CAPABLE:
             _glfw.hints.framebuffer.sRGB = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.framebuffer.sRGB = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_RESIZABLE:
         case GLFW_RESIZABLE:
             _glfw.hints.window.resizable = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.window.resizable = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_DECORATED:
         case GLFW_DECORATED:
             _glfw.hints.window.decorated = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.window.decorated = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_FOCUSED:
         case GLFW_FOCUSED:
             _glfw.hints.window.focused = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.window.focused = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_AUTO_ICONIFY:
         case GLFW_AUTO_ICONIFY:
             _glfw.hints.window.autoIconify = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.window.autoIconify = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_FLOATING:
         case GLFW_FLOATING:
             _glfw.hints.window.floating = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.window.floating = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_MAXIMIZED:
         case GLFW_MAXIMIZED:
             _glfw.hints.window.maximized = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.window.maximized = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_VISIBLE:
         case GLFW_VISIBLE:
             _glfw.hints.window.visible = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.window.visible = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_COCOA_RETINA_FRAMEBUFFER:
         case GLFW_COCOA_RETINA_FRAMEBUFFER:
             _glfw.hints.window.ns.retina = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.window.ns.retina = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_COCOA_FRAME_AUTOSAVE:
         case GLFW_COCOA_FRAME_AUTOSAVE:
             _glfw.hints.window.ns.frame = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.window.ns.frame = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_COCOA_GRAPHICS_SWITCHING:
         case GLFW_COCOA_GRAPHICS_SWITCHING:
             _glfw.hints.context.nsgl.offline = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.context.nsgl.offline = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_CENTER_CURSOR:
         case GLFW_CENTER_CURSOR:
             _glfw.hints.window.centerCursor = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.window.centerCursor = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_CLIENT_API:
         case GLFW_CLIENT_API:
             _glfw.hints.context.client = value;
             _glfw.hints.context.client = value;
-            break;
+            return;
         case GLFW_CONTEXT_CREATION_API:
         case GLFW_CONTEXT_CREATION_API:
             _glfw.hints.context.source = value;
             _glfw.hints.context.source = value;
-            break;
+            return;
         case GLFW_CONTEXT_VERSION_MAJOR:
         case GLFW_CONTEXT_VERSION_MAJOR:
             _glfw.hints.context.major = value;
             _glfw.hints.context.major = value;
-            break;
+            return;
         case GLFW_CONTEXT_VERSION_MINOR:
         case GLFW_CONTEXT_VERSION_MINOR:
             _glfw.hints.context.minor = value;
             _glfw.hints.context.minor = value;
-            break;
+            return;
         case GLFW_CONTEXT_ROBUSTNESS:
         case GLFW_CONTEXT_ROBUSTNESS:
             _glfw.hints.context.robustness = value;
             _glfw.hints.context.robustness = value;
-            break;
+            return;
         case GLFW_OPENGL_FORWARD_COMPAT:
         case GLFW_OPENGL_FORWARD_COMPAT:
             _glfw.hints.context.forward = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.context.forward = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_OPENGL_DEBUG_CONTEXT:
         case GLFW_OPENGL_DEBUG_CONTEXT:
             _glfw.hints.context.debug = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.context.debug = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_CONTEXT_NO_ERROR:
         case GLFW_CONTEXT_NO_ERROR:
             _glfw.hints.context.noerror = value ? GLFW_TRUE : GLFW_FALSE;
             _glfw.hints.context.noerror = value ? GLFW_TRUE : GLFW_FALSE;
-            break;
+            return;
         case GLFW_OPENGL_PROFILE:
         case GLFW_OPENGL_PROFILE:
             _glfw.hints.context.profile = value;
             _glfw.hints.context.profile = value;
-            break;
+            return;
         case GLFW_CONTEXT_RELEASE_BEHAVIOR:
         case GLFW_CONTEXT_RELEASE_BEHAVIOR:
             _glfw.hints.context.release = value;
             _glfw.hints.context.release = value;
-            break;
+            return;
         case GLFW_REFRESH_RATE:
         case GLFW_REFRESH_RATE:
             _glfw.hints.refreshRate = value;
             _glfw.hints.refreshRate = value;
-            break;
-        default:
-            _glfwInputError(GLFW_INVALID_ENUM, "Invalid window hint 0x%08X", hint);
-            break;
+            return;
     }
     }
+
+    _glfwInputError(GLFW_INVALID_ENUM, "Invalid window hint 0x%08X", hint);
 }
 }
 
 
 GLFWAPI void glfwDestroyWindow(GLFWwindow* handle)
 GLFWAPI void glfwDestroyWindow(GLFWwindow* handle)
@@ -770,41 +769,37 @@ GLFWAPI void glfwSetWindowAttrib(GLFWwindow* handle, int attrib, int value)
 
 
     value = value ? GLFW_TRUE : GLFW_FALSE;
     value = value ? GLFW_TRUE : GLFW_FALSE;
 
 
-    switch (attrib)
+    if (attrib == GLFW_AUTO_ICONIFY)
+        window->autoIconify = value;
+    else if (attrib == GLFW_RESIZABLE)
     {
     {
-        case GLFW_RESIZABLE:
-            if (window->resizable != value)
-            {
-                window->resizable = value;
-                if (!window->monitor)
-                    _glfwPlatformSetWindowResizable(window, value);
-            }
+        if (window->resizable == value)
             return;
             return;
 
 
-        case GLFW_DECORATED:
-            if (window->decorated != value)
-            {
-                window->decorated = value;
-                if (!window->monitor)
-                    _glfwPlatformSetWindowDecorated(window, value);
-            }
+        window->resizable = value;
+        if (!window->monitor)
+            _glfwPlatformSetWindowResizable(window, value);
+    }
+    else if (attrib == GLFW_DECORATED)
+    {
+        if (window->decorated == value)
             return;
             return;
 
 
-        case GLFW_FLOATING:
-            if (window->floating != value)
-            {
-                window->floating = value;
-                if (!window->monitor)
-                    _glfwPlatformSetWindowFloating(window, value);
-            }
+        window->decorated = value;
+        if (!window->monitor)
+            _glfwPlatformSetWindowDecorated(window, value);
+    }
+    else if (attrib == GLFW_FLOATING)
+    {
+        if (window->floating == value)
             return;
             return;
 
 
-        case GLFW_AUTO_ICONIFY:
-            window->autoIconify = value;
-            return;
+        window->floating = value;
+        if (!window->monitor)
+            _glfwPlatformSetWindowFloating(window, value);
     }
     }
-
-    _glfwInputError(GLFW_INVALID_ENUM, "Invalid window attribute 0x%08X", attrib);
+    else
+        _glfwInputError(GLFW_INVALID_ENUM, "Invalid window attribute 0x%08X", attrib);
 }
 }
 
 
 GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* handle)
 GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* handle)