Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Quartz: Restore 1.2.14 behaviour of letting apps draw from background…
… thread.
Strictly speaking, this isn't encouraged, but it's a regression.
- Loading branch information
Showing
with
10 additions
and
5 deletions.
-
+2
−0
src/video/quartz/SDL_QuartzVideo.h
-
+8
−5
src/video/quartz/SDL_QuartzVideo.m
|
@@ -93,6 +93,7 @@ typedef struct SDL_PrivateVideoData { |
|
|
const void *save_mode; /* original mode of the display */ |
|
|
CGDirectPaletteRef palette; /* palette of an 8-bit display */ |
|
|
NSOpenGLContext *gl_context; /* OpenGL rendering context */ |
|
|
NSGraphicsContext *nsgfx_context; /* Cocoa graphics context */ |
|
|
Uint32 width, height, bpp; /* frequently used data about the display */ |
|
|
Uint32 flags; /* flags for current mode, for teardown purposes */ |
|
|
Uint32 video_set; /* boolean; indicates if video was set correctly */ |
|
@@ -132,6 +133,7 @@ typedef struct SDL_PrivateVideoData { |
|
|
#define allow_screensaver (this->hidden->allow_screensaver) |
|
|
#define palette (this->hidden->palette) |
|
|
#define gl_context (this->hidden->gl_context) |
|
|
#define nsgfx_context (this->hidden->nsgfx_context) |
|
|
#define device_width (this->hidden->width) |
|
|
#define device_height (this->hidden->height) |
|
|
#define device_bpp (this->hidden->bpp) |
|
|
|
@@ -1149,9 +1149,8 @@ other blitting while waiting on the VBL (and hence results in higher framerates) |
|
|
} |
|
|
|
|
|
if (qz_window != nil) { |
|
|
NSGraphicsContext *ctx; |
|
|
ctx = [NSGraphicsContext graphicsContextWithWindow:qz_window]; |
|
|
[NSGraphicsContext setCurrentContext:ctx]; |
|
|
nsgfx_context = [NSGraphicsContext graphicsContextWithWindow:qz_window]; |
|
|
[NSGraphicsContext setCurrentContext:nsgfx_context]; |
|
|
} |
|
|
|
|
|
/* Setup the new pixel format */ |
|
@@ -1507,8 +1506,12 @@ static void QZ_UpdateRects (_THIS, int numRects, SDL_Rect *rects) |
|
|
} |
|
|
|
|
|
else { |
|
|
CGContextRef cgc = (CGContextRef) |
|
|
[[NSGraphicsContext currentContext] graphicsPort]; |
|
|
NSGraphicsContext *ctx = [NSGraphicsContext currentContext]; |
|
|
if (ctx != nsgfx_context) { /* uhoh, you might be rendering from another thread... */ |
|
|
[NSGraphicsContext setCurrentContext:nsgfx_context]; |
|
|
ctx = nsgfx_context; |
|
|
} |
|
|
CGContextRef cgc = (CGContextRef) [ctx graphicsPort]; |
|
|
QZ_DrawResizeIcon (this); |
|
|
CGContextFlush (cg_context); |
|
|
CGImageRef image = CGBitmapContextCreateImage (cg_context); |
|
|