Explorar o código

Merge pull request #81339 from bruvzg/macos_fix_mvk_live_resize

[macOS] Fix live resize with the latest MoltenVK version.
Yuri Sizov %!s(int64=2) %!d(string=hai) anos
pai
achega
07176632a6
Modificáronse 2 ficheiros con 10 adicións e 1 borrados
  1. 2 0
      platform/macos/godot_content_view.h
  2. 8 1
      platform/macos/godot_content_view.mm

+ 2 - 0
platform/macos/godot_content_view.h

@@ -47,9 +47,11 @@
 
 @interface GodotContentLayerDelegate : NSObject <CALayerDelegate> {
 	DisplayServer::WindowID window_id;
+	bool need_redraw;
 }
 
 - (void)setWindowID:(DisplayServer::WindowID)wid;
+- (void)setNeedRedraw:(bool)redraw;
 
 @end
 

+ 8 - 1
platform/macos/godot_content_view.mm

@@ -40,6 +40,7 @@
 - (id)init {
 	self = [super init];
 	window_id = DisplayServer::INVALID_WINDOW_ID;
+	need_redraw = false;
 	return self;
 }
 
@@ -47,13 +48,18 @@
 	window_id = wid;
 }
 
+- (void)setNeedRedraw:(bool)redraw {
+	need_redraw = redraw;
+}
+
 - (void)displayLayer:(CALayer *)layer {
 	DisplayServerMacOS *ds = (DisplayServerMacOS *)DisplayServer::get_singleton();
-	if (OS::get_singleton()->get_main_loop() && ds->get_is_resizing()) {
+	if (OS::get_singleton()->get_main_loop() && ds->get_is_resizing() && need_redraw) {
 		Main::force_redraw();
 		if (!Main::is_iterating()) { // Avoid cyclic loop.
 			Main::iteration();
 		}
+		need_redraw = false;
 	}
 }
 
@@ -93,6 +99,7 @@
 	}
 
 	[super setFrameSize:newSize];
+	[layer_delegate setNeedRedraw:true];
 	[self.layer setNeedsDisplay]; // Force "drawRect" call.
 }