diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -1143,24 +1143,29 @@ /* The default implementation doesn't pass rightMouseDown to responder chain */ - (void)rightMouseDown:(NSEvent *)theEvent; - (BOOL)mouseDownCanMoveWindow; -- (void)drawRect:(NSRect)dirtyRect; - (BOOL)acceptsFirstMouse:(NSEvent *)theEvent; +- (BOOL)wantsUpdateLayer; +- (void)updateLayer; @end @implementation SDLView -- (void)setSDLWindow:(SDL_Window*)window + +-(BOOL) wantsUpdateLayer { - _sdlWindow = window; + return YES; } -- (void)drawRect:(NSRect)dirtyRect +-(void) updateLayer { /* Force the graphics context to clear to black so we don't get a flash of white until the app is ready to draw. In practice on modern macOS, this only gets called for window creation and other extraordinary events. */ - [[NSColor blackColor] setFill]; - NSRectFill(dirtyRect); - SDL_SendWindowEvent(_sdlWindow, SDL_WINDOWEVENT_EXPOSED, 0, 0); + self.layer.backgroundColor = NSColor.blackColor.CGColor; +} + +- (void)setSDLWindow:(SDL_Window*)window +{ + _sdlWindow = window; } - (void)rightMouseDown:(NSEvent *)theEvent @@ -1345,6 +1350,7 @@ [contentView setWantsBestResolutionOpenGLSurface:YES]; } } + #if SDL_VIDEO_OPENGL_ES2 #if SDL_VIDEO_OPENGL_EGL if ((window->flags & SDL_WINDOW_OPENGL) &&