mirror of
https://github.com/Ryujinx/SDL.git
synced 2024-12-23 15:05:38 +00:00
cocoa: Fix OpenGL rendering on macOS 10.14 ("Mojave").
Fixes Bugzilla #4272.
This commit is contained in:
parent
eac3fd28d8
commit
f677377339
|
@ -632,8 +632,6 @@ SetWindowStyle(SDL_Window * window, NSUInteger style)
|
||||||
const unsigned int newflags = [NSEvent modifierFlags] & NSEventModifierFlagCapsLock;
|
const unsigned int newflags = [NSEvent modifierFlags] & NSEventModifierFlagCapsLock;
|
||||||
_data->videodata->modifierFlags = (_data->videodata->modifierFlags & ~NSEventModifierFlagCapsLock) | newflags;
|
_data->videodata->modifierFlags = (_data->videodata->modifierFlags & ~NSEventModifierFlagCapsLock) | newflags;
|
||||||
SDL_ToggleModState(KMOD_CAPS, newflags != 0);
|
SDL_ToggleModState(KMOD_CAPS, newflags != 0);
|
||||||
|
|
||||||
ScheduleContextUpdates(_data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)windowDidResignKey:(NSNotification *)aNotification
|
- (void)windowDidResignKey:(NSNotification *)aNotification
|
||||||
|
@ -1145,14 +1143,18 @@ SetWindowStyle(SDL_Window * window, NSUInteger style)
|
||||||
- (BOOL)mouseDownCanMoveWindow;
|
- (BOOL)mouseDownCanMoveWindow;
|
||||||
- (void)drawRect:(NSRect)dirtyRect;
|
- (void)drawRect:(NSRect)dirtyRect;
|
||||||
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent;
|
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent;
|
||||||
|
- (BOOL)wantsUpdateLayer;
|
||||||
|
- (void)updateLayer;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation SDLView
|
@implementation SDLView
|
||||||
|
|
||||||
- (void)setSDLWindow:(SDL_Window*)window
|
- (void)setSDLWindow:(SDL_Window*)window
|
||||||
{
|
{
|
||||||
_sdlWindow = window;
|
_sdlWindow = window;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* this is used on older macOS revisions. 10.8 and later use updateLayer. */
|
||||||
- (void)drawRect:(NSRect)dirtyRect
|
- (void)drawRect:(NSRect)dirtyRect
|
||||||
{
|
{
|
||||||
/* Force the graphics context to clear to black so we don't get a flash of
|
/* Force the graphics context to clear to black so we don't get a flash of
|
||||||
|
@ -1163,6 +1165,21 @@ SetWindowStyle(SDL_Window * window, NSUInteger style)
|
||||||
SDL_SendWindowEvent(_sdlWindow, SDL_WINDOWEVENT_EXPOSED, 0, 0);
|
SDL_SendWindowEvent(_sdlWindow, SDL_WINDOWEVENT_EXPOSED, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-(BOOL) wantsUpdateLayer
|
||||||
|
{
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(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. */
|
||||||
|
self.layer.backgroundColor = NSColor.blackColor.CGColor;
|
||||||
|
ScheduleContextUpdates((SDL_WindowData *) _sdlWindow->driverdata);
|
||||||
|
SDL_SendWindowEvent(_sdlWindow, SDL_WINDOWEVENT_EXPOSED, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
- (void)rightMouseDown:(NSEvent *)theEvent
|
- (void)rightMouseDown:(NSEvent *)theEvent
|
||||||
{
|
{
|
||||||
[[self nextResponder] rightMouseDown:theEvent];
|
[[self nextResponder] rightMouseDown:theEvent];
|
||||||
|
@ -1345,6 +1362,7 @@ Cocoa_CreateWindow(_THIS, SDL_Window * window)
|
||||||
[contentView setWantsBestResolutionOpenGLSurface:YES];
|
[contentView setWantsBestResolutionOpenGLSurface:YES];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if SDL_VIDEO_OPENGL_ES2
|
#if SDL_VIDEO_OPENGL_ES2
|
||||||
#if SDL_VIDEO_OPENGL_EGL
|
#if SDL_VIDEO_OPENGL_EGL
|
||||||
if ((window->flags & SDL_WINDOW_OPENGL) &&
|
if ((window->flags & SDL_WINDOW_OPENGL) &&
|
||||||
|
|
Loading…
Reference in a new issue