@ -1218,6 +1218,19 @@ void PollInputEvents(void)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			/ /  Module  Internal  Functions  Definition  
			
		 
		
	
		
			
			 
			 
			
			 
			
			/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			static  void  SetDimensionsFromMonitor ( GLFWmonitor  * monitor )  
			
		 
		
	
		
			
			 
			 
			
			 
			
			{  
			
		 
		
	
		
			
			 
			 
			
			 
			
			  const  GLFWvidmode  * mode  =  glfwGetVideoMode ( monitor ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			  / /  Default  display  resolution  to  that  of  the  current  mode   
			
		 
		
	
		
			
			 
			 
			
			 
			
			  CORE . Window . display . width  =  mode - > width ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			  CORE . Window . display . height  =  mode - > height ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			  / /  Set  screen  width / height  to  the  display  width / height  if  they  are  0   
			
		 
		
	
		
			
			 
			 
			
			 
			
			  if  ( CORE . Window . screen . width  = =  0 )  CORE . Window . screen . width  =  CORE . Window . display . width ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			  if  ( CORE . Window . screen . height  = =  0 )  CORE . Window . screen . height  =  CORE . Window . display . height ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			}  
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			/ /  Initialize  platform :  graphics ,  inputs  and  more  
			
		 
		
	
		
			
			 
			 
			
			 
			
			int  InitPlatform ( void )  
			
		 
		
	
		
			
			 
			 
			
			 
			
			{  
			
		 
		
	
	
		
			
				
				
					
						 
					 
				
				
					
						 
					 
				
				
				 
			
			 
			
			@ -1358,26 +1371,22 @@ int InitPlatform(void)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    / /  REF :  https : / / github . com / raysan5 / raylib / issues / 1554   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    glfwSetJoystickCallback ( NULL ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    / /  Find  monitor  resolution   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    GLFWmonitor  * monitor  =  glfwGetPrimaryMonitor ( ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    if  ( ! monitor )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    GLFWmonitor  * monitor  =  NULL ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    if  ( CORE . Window . fullscreen )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    {   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        TRACELOG ( LOG_WARNING ,  " GLFW: Failed to get primary monitor " ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        return  - 1 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    }   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  According  to  glfwCreateWindow ( ) ,  if  the  user  does  not  have  a  choice ,  fullscreen  applications   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  should  default  to  the  primary  monitor .   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    const  GLFWvidmode  * mode  =  glfwGetVideoMode ( monitor ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    CORE . Window . display . width  =  mode - > width ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    CORE . Window . display . height  =  mode - > height ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        monitor  =  glfwGetPrimaryMonitor ( ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        if  ( ! monitor )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        {   
			
		 
		
	
		
			
			 
			 
			
			 
			
			          TRACELOG ( LOG_WARNING ,  " GLFW: Failed to get primary monitor " ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			          return  - 1 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        }   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    / /  Set  screen  width / height  to  the  display  width / height  if  they  are  0   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    if  ( CORE . Window . screen . width  = =  0 )  CORE . Window . screen . width  =  CORE . Window . display . width ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    if  ( CORE . Window . screen . height  = =  0 )  CORE . Window . screen . height  =  CORE . Window . display . height ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        SetDimensionsFromMonitor ( monitor ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			    if  ( CORE . Window . fullscreen )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    {   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  Remember  center  for  switchinging  from  fullscreen  to  window   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  Remember  center  for  switching  from  fullscreen  to  window   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        if  ( ( CORE . Window . screen . height  = =  CORE . Window . display . height )  & &  ( CORE . Window . screen . width  = =  CORE . Window . display . width ) )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        {   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            / /  If  screen  width / height  equal  to  the  display ,  we  can ' t  calculate  the  window  pos  for  toggling  full - screened / windowed .   
			
		 
		
	
	
		
			
				
				
				
				
					
						 
					 
				
				 
			
			 
			
			@ -1396,7 +1405,7 @@ int InitPlatform(void)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  Obtain  recommended  CORE . Window . display . width / CORE . Window . display . height  from  a  valid  videomode  for  the  monitor   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  count  =  0 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        const  GLFWvidmode  * modes  =  glfwGetVideoModes ( glfwGetPri maryM onitor( ) ,  & count ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        const  GLFWvidmode  * modes  =  glfwGetVideoModes ( monitor ,  & count ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  Get  closest  video  mode  to  desired  CORE . Window . screen . width / CORE . Window . screen . height   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        for  ( int  i  =  0 ;  i  <  count ;  i + + )   
			
		 
		
	
	
		
			
				
				
					
						 
					 
				
				
					
						 
					 
				
				
				 
			
			 
			
			@ -1426,21 +1435,55 @@ int InitPlatform(void)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  HighDPI  monitors  are  properly  considered  in  a  following  similar  function :  SetupViewport ( )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        SetupFramebuffer ( CORE . Window . display . width ,  CORE . Window . display . height ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        platform . handle  =  glfwCreateWindow ( CORE . Window . display . width ,  CORE . Window . display . height ,  ( CORE . Window . title  ! =  0 ) ?  CORE . Window . title  :  "   " ,  glfwGetPri maryM onitor( ) ,  NULL ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        platform . handle  =  glfwCreateWindow ( CORE . Window . display . width ,  CORE . Window . display . height ,  ( CORE . Window . title  ! =  0 ) ?  CORE . Window . title  :  "   " ,  monitor ,  NULL ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  NOTE :  Full - screen  change ,  not  working  properly . . .   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / / glfwSetWindowMonitor ( platform . handle ,  glfwGetPrimaryMonitor ( ) ,  0 ,  0 ,  CORE . Window . screen . width ,  CORE . Window . screen . height ,  GLFW_DONT_CARE ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    }   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    else   
			
		 
		
	
		
			
			 
			 
			
			 
			
			    {   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  If  we  are  windowed  fullscreen ,  ensures  that  window  does  not  minimize  when  focus  is  lost   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        if  ( ( CORE . Window . screen . height  = =  CORE . Window . display . height )  & &  ( CORE . Window . screen . width  = =  CORE . Window . display . width ) )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  No - fullscreen  window  creation   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        bool  wantWindowedFullscreen  =  ( CORE . Window . screen . height  = =  0 )  & &  ( CORE . Window . screen . width  = =  0 ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  If  we  are  windowed  fullscreen ,  ensures  that  window  does  not  minimize  when  focus  is  lost .   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  This  hinting  code  will  not  work  if  the  user  already  specified  the  correct  monitor  dimensions ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  at  this  point  we  don ' t  know  the  monitor ' s  dimensions .  ( Though ,  how  did  the  user  then ? )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        if  ( wantWindowedFullscreen )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        {   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            glfwWindowHint ( GLFW_AUTO_ICONIFY ,  0 ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        }   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  No - fullscreen  window  creation   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        platform . handle  =  glfwCreateWindow ( CORE . Window . screen . width ,  CORE . Window . screen . height ,  ( CORE . Window . title  ! =  0 ) ?  CORE . Window . title  :  "   " ,  NULL ,  NULL ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  Default  to  at  least  one  pixel  in  size ,  as  creation  with  a  zero  dimension  is  not  allowed .   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  creationWidth  =  CORE . Window . screen . width  ! =  0  ?  CORE . Window . screen . width  :  1 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  creationHeight  =  CORE . Window . screen . height  ! =  0  ?  CORE . Window . screen . height  :  1 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        platform . handle  =  glfwCreateWindow ( creationWidth ,  creationHeight ,  ( CORE . Window . title  ! =  0 ) ?  CORE . Window . title  :  "   " ,  NULL ,  NULL ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  After  the  window  was  created ,  determine  the  monitor  that  the  window  manager  assigned .   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        / /  Derive  display  sizes ,  and ,  if  possible ,  window  size  in  case  it  was  zero  at  beginning .   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  monitorCount  =  0 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  monitorIndex  =  GetCurrentMonitor ( ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        GLFWmonitor  * * monitors  =  glfwGetMonitors ( & monitorCount ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        if  ( monitorIndex  <  monitorCount )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        {   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            monitor  =  monitors [ monitorIndex ] ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            SetDimensionsFromMonitor ( monitor ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			            TRACELOG ( LOG_INFO ,  " wantWindowed: %d, size: %dx%d " ,  wantWindowedFullscreen ,  CORE . Window . screen . width ,  CORE . Window . screen . height ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            if  ( wantWindowedFullscreen )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            {   
			
		 
		
	
		
			
			 
			 
			
			 
			
			                glfwSetWindowSize ( platform . handle ,  CORE . Window . screen . width ,  CORE . Window . screen . height ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            }   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        }   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        else   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        {   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            / /  The  monitor  for  the  window - manager - created  window  can  not  be  determined ,  so  it  can  not  be  centered .   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            glfwTerminate ( ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            TRACELOG ( LOG_WARNING ,  " GLFW: Failed to determine Monitor to center Window " ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			            return  - 1 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        }   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        if  ( platform . handle )   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        {   
			
		 
		
	
	
		
			
				
				
					
						 
					 
				
				
					
						 
					 
				
				
				 
			
			 
			
			@ -1524,8 +1567,8 @@ int InitPlatform(void)  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  monitorHeight  =  0 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        glfwGetMonitorWorkarea ( monitor ,  & monitorX ,  & monitorY ,  & monitorWidth ,  & monitorHeight ) ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			
  
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  posX  =  monitorX  +  ( monitorWidth  -  CORE . Window . screen . width ) / 2 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  posY  =  monitorY  +  ( monitorHeight  -  CORE . Window . screen . height ) / 2 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  posX  =  monitorX  +  ( monitorWidth  -  p">( int ) CORE . Window . screen . width ) / 2 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        int  posY  =  monitorY  +  ( monitorHeight  -  p">( int ) CORE . Window . screen . height ) / 2 ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        if  ( posX  <  monitorX )  posX  =  monitorX ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        if  ( posY  <  monitorY )  posY  =  monitorY ;   
			
		 
		
	
		
			
			 
			 
			
			 
			
			        SetWindowPosition ( posX ,  posY ) ;