| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -241,7 +241,7 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        //#define GLFW_EXPOSE_NATIVE_COCOA    // WARNING: Fails due to type redefinition | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        #include "GLFW/glfw3native.h"       // Required for: glfwGetCocoaWindow() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // TODO: HACK: Added flag if not provided by GLFW when using external library | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Latest GLFW release (GLFW 3.3.8) does not implement this flag, it was added for 3.4.0-dev | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #if !defined(GLFW_MOUSE_PASSTHROUGH) | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -1708,12 +1708,12 @@ int GetCurrentMonitor(void) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Get the handle of the monitor that the specified window is in full screen on | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            monitor = glfwGetWindowMonitor(CORE.Window.handle); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			             | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            for (int i = 0; i < monitorCount; i++) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                if (monitors[i] == monitor) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                {  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    index = i;  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    index = i; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    break; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            } | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -1735,7 +1735,7 @@ int GetCurrentMonitor(void) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                monitor = monitors[i]; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                glfwGetMonitorWorkarea(monitor, &mx, &my, &width, &height); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                if (x >= mx && x <= (mx + width) && y >= my && y <= (my + height)) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    index = i; | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -3790,7 +3790,7 @@ float GetMouseWheelMove(void) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			Vector2 GetMouseWheelMoveV(void) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    Vector2 result = { 0 }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    result = CORE.Input.Mouse.currentWheelMove; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    return result; | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -4107,18 +4107,6 @@ static bool InitGraphicsDevice(int width, int height) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        if (CORE.Window.handle) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(PLATFORM_DESKTOP) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Center window on screen | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            int windowPosX, windowPosY; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            glfwGetMonitorPos(monitor, &windowPosX, &windowPosY); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            windowPosX += CORE.Window.display.width/2 - CORE.Window.screen.width/2; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            windowPosY += CORE.Window.display.height/2 - CORE.Window.screen.height/2; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            if (windowPosX < 0) windowPosX = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            if (windowPosY < 0) windowPosY = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            glfwSetWindowPos(CORE.Window.handle, windowPosX, windowPosY); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            CORE.Window.render.width = CORE.Window.screen.width; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            CORE.Window.render.height = CORE.Window.screen.height; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -4139,7 +4127,7 @@ static bool InitGraphicsDevice(int width, int height) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    glfwSetWindowIconifyCallback(CORE.Window.handle, WindowIconifyCallback); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    glfwSetWindowFocusCallback(CORE.Window.handle, WindowFocusCallback); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    glfwSetDropCallback(CORE.Window.handle, WindowDropCallback); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Set input callback events | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    glfwSetKeyCallback(CORE.Window.handle, KeyCallback); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    glfwSetCharCallback(CORE.Window.handle, CharCallback); | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -4272,7 +4260,7 @@ static bool InitGraphicsDevice(int width, int height) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            drmModeFreeConnector(con); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (!CORE.Window.connector) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        TRACELOG(LOG_WARNING, "DISPLAY: No suitable DRM connector found"); | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -4318,19 +4306,19 @@ static bool InitGraphicsDevice(int width, int height) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    const bool allowInterlaced = CORE.Window.flags & FLAG_INTERLACED_HINT; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    const int fps = (CORE.Time.target > 0) ? (1.0/CORE.Time.target) : 60; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Try to find an exact matching mode | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    CORE.Window.modeIndex = FindExactConnectorMode(CORE.Window.connector, CORE.Window.screen.width, CORE.Window.screen.height, fps, allowInterlaced); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // If nothing found, try to find a nearly matching mode | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (CORE.Window.modeIndex < 0) CORE.Window.modeIndex = FindNearestConnectorMode(CORE.Window.connector, CORE.Window.screen.width, CORE.Window.screen.height, fps, allowInterlaced); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // If nothing found, try to find an exactly matching mode including interlaced | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (CORE.Window.modeIndex < 0) CORE.Window.modeIndex = FindExactConnectorMode(CORE.Window.connector, CORE.Window.screen.width, CORE.Window.screen.height, fps, true); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // If nothing found, try to find a nearly matching mode including interlaced | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (CORE.Window.modeIndex < 0) CORE.Window.modeIndex = FindNearestConnectorMode(CORE.Window.connector, CORE.Window.screen.width, CORE.Window.screen.height, fps, true); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // If nothing found, there is no suitable mode | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (CORE.Window.modeIndex < 0) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -5278,7 +5266,7 @@ static void WindowFocusCallback(GLFWwindow *window, int focused) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, int mods) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (key < 0) return;    // Security check, macOS fn key generates -1 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // WARNING: GLFW could return GLFW_REPEAT, we need to consider it as 1 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // to work properly with our implementation (IsKeyDown/IsKeyUp checks) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (action == GLFW_RELEASE) CORE.Input.Keyboard.currentKeyState[key] = 0; | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |