Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Stop using
NSFullSizeContentViewWindowMask
to get borderless windows,
because that disables the swap interval. This hack is very simple but a little evil. We get the superview of the content view, which is the `NSThemeFrame`, and install an OpenGL context into it. `NSThemeFrame` is a private class, but we never speak its name, we get to it with public APIs, and we only call public `NSView` APIs on it, so this seems OK in terms of being supported by Apple going forward. Additionally, we remove the standard window buttons so that they disappear and the user can't click them. This can also be done using public APIs. The reason for using this hack as opposed to `NSFullSizeContentViewWindowMask` is that the latter forces the window to be Core Animation-backed, which results in us rendering to an off screen surface. Not only does this inject another compositor into the system, but it also results in us rendering to an off-screen surface, disabling the swap interval. This depends on a `cocoa-rs` upgrade to add a binding to the `-[NSView superview]` method. Note that the top edge of the window is not rounded, although the shadow is. Applications that wish to use this mode will need to round the top edge themselves if they wish. (This is how Cocoa internally works: rounding is done by the app, not the window manager.) This should fix servo/servo#9431.
- Loading branch information