mirror of
				https://github.com/libsdl-org/SDL.git
				synced 2025-11-03 17:24:34 +00:00 
			
		
		
		
	MacOS: Added hint to control update of the metal layer's drawable size (#14053)
This commit is contained in:
		@@ -3615,6 +3615,22 @@ extern "C" {
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
#define SDL_HINT_VIDEO_MAC_FULLSCREEN_MENU_VISIBILITY "SDL_VIDEO_MAC_FULLSCREEN_MENU_VISIBILITY"
 | 
					#define SDL_HINT_VIDEO_MAC_FULLSCREEN_MENU_VISIBILITY "SDL_VIDEO_MAC_FULLSCREEN_MENU_VISIBILITY"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * A variable indicating whether the metal layer drawable size should be
 | 
				
			||||||
 | 
					 * updated for the SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED event on macOS.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The variable can be set to the following values:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - "0": the metal layer drawable size will not be updated
 | 
				
			||||||
 | 
					 *   on the SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED event.
 | 
				
			||||||
 | 
					 * - "1": the metal layer drawable size will be updated
 | 
				
			||||||
 | 
					 *   on the SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED event. (default)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This hint should be set before SDL_Metal_CreateView called.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * \since This hint is available since SDL 3.4.0. */
 | 
				
			||||||
 | 
					#define SDL_HINT_VIDEO_METAL_AUTO_RESIZE_DRAWABLE "SDL_VIDEO_METAL_AUTO_RESIZE_DRAWABLE"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * A variable controlling whether SDL will attempt to automatically set the
 | 
					 * A variable controlling whether SDL will attempt to automatically set the
 | 
				
			||||||
 * destination display to a mode most closely matching that of the previous
 | 
					 * destination display to a mode most closely matching that of the previous
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -90,7 +90,9 @@ static bool SDLCALL SDL_MetalViewEventWatch(void *userdata, SDL_Event *event)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        self.layer.opaque = opaque;
 | 
					        self.layer.opaque = opaque;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SDL_AddWindowEventWatch(SDL_WINDOW_EVENT_WATCH_EARLY, SDL_MetalViewEventWatch, (__bridge void *)(self));
 | 
					        if (SDL_GetHintBoolean(SDL_HINT_VIDEO_METAL_AUTO_RESIZE_DRAWABLE, true)) {
 | 
				
			||||||
 | 
					            SDL_AddWindowEventWatch(SDL_WINDOW_EVENT_WATCH_EARLY, SDL_MetalViewEventWatch, (__bridge void *)(self));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [self updateDrawableSize];
 | 
					        [self updateDrawableSize];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user