浏览代码

cocoawindow: fix wrong content scale with ANGLE EGL context

ANGLE expects that the surface layer content scale is updated
accordingly.

<https://github.com/google/angle/blob/b406401e42080c2f8fe479e6c5fa48dfae97c482/src/libANGLE/renderer/metal/SurfaceMtl.mm#L597-L636>
Jari Vetoniemi 1 月之前
父节点
当前提交
ef41e0a0f0
共有 1 个文件被更改,包括 5 次插入0 次删除
  1. 5 0
      src/video/cocoa/SDL_cocoawindow.m

+ 5 - 0
src/video/cocoa/SDL_cocoawindow.m

@@ -1375,6 +1375,8 @@ static NSCursor *Cocoa_GetDesiredCursor(void)
 
 - (void)windowDidChangeBackingProperties:(NSNotification *)aNotification
 {
+    SDL_CocoaWindowData *windata = (__bridge SDL_CocoaWindowData *)_data.window->internal;
+    NSView *contentView = windata.sdlContentView;
     NSNumber *oldscale = [[aNotification userInfo] objectForKey:NSBackingPropertyOldScaleFactorKey];
 
     if (inFullscreenTransition) {
@@ -1382,6 +1384,9 @@ static NSCursor *Cocoa_GetDesiredCursor(void)
     }
 
     if ([oldscale doubleValue] != [_data.nswindow backingScaleFactor]) {
+        // Update the content scale on the window layer
+        // This is required to keep content scale in sync with ANGLE
+        contentView.layer.contentsScale = [_data.nswindow backingScaleFactor];
         // Send a resize event when the backing scale factor changes.
         [self windowDidResize:aNotification];
     }