|
Lines 14-19
Link Here
|
| 14 |
#endif |
14 |
#endif |
| 15 |
*/ |
15 |
*/ |
| 16 |
|
16 |
|
|
|
17 |
#include <dispatch/dispatch.h> |
| 18 |
|
| 17 |
#import "MacOSXWindowSystemInterface.h" |
19 |
#import "MacOSXWindowSystemInterface.h" |
| 18 |
|
20 |
|
| 19 |
#import "ContextUpdater.h" |
21 |
#import "ContextUpdater.h" |
|
Lines 556-562
NSOpenGLContext* createContext(NSOpenGLContext* share,
Link Here
|
| 556 |
GLint zeroOpacity = 0; |
558 |
GLint zeroOpacity = 0; |
| 557 |
[ctx setValues:&zeroOpacity forParameter:NSOpenGLCPSurfaceOpacity]; |
559 |
[ctx setValues:&zeroOpacity forParameter:NSOpenGLCPSurfaceOpacity]; |
| 558 |
} |
560 |
} |
| 559 |
[ctx setView:view]; // Bug 1087: Set default framebuffer, hence enforce NSView realization |
561 |
dispatch_async(dispatch_get_main_queue(), ^{ // Fix for MacOS Catalina: -[NSOpenGLContext setView:] must be called from the main thread. |
|
|
562 |
[ctx setView:view]; // Bug 1087: Set default framebuffer, hence enforce NSView realization |
| 563 |
}); |
| 560 |
if( viewReadyAndLocked ) { |
564 |
if( viewReadyAndLocked ) { |
| 561 |
[view unlockFocus]; |
565 |
[view unlockFocus]; |
| 562 |
} |
566 |
} |
|
Lines 574-580
void setContextView(NSOpenGLContext* ctx, NSView* view) {
Link Here
|
| 574 |
Bool viewReadyAndLocked = lockViewIfReady(view); |
578 |
Bool viewReadyAndLocked = lockViewIfReady(view); |
| 575 |
DBG_PRINT("setContextView.0: ctx %p, view %p: setView: %d\n", ctx, view, viewReadyAndLocked); |
579 |
DBG_PRINT("setContextView.0: ctx %p, view %p: setView: %d\n", ctx, view, viewReadyAndLocked); |
| 576 |
if( viewReadyAndLocked ) { |
580 |
if( viewReadyAndLocked ) { |
| 577 |
[ctx setView:view]; |
581 |
dispatch_async(dispatch_get_main_queue(), ^{ |
|
|
582 |
[ctx setView:view]; |
| 583 |
}); |
| 578 |
[view unlockFocus]; |
584 |
[view unlockFocus]; |
| 579 |
} |
585 |
} |
| 580 |
} |
586 |
} |
|
Lines 655-661
void updateContext(NSOpenGLContext* ctx) {
Link Here
|
| 655 |
NSView *nsView = [ctx view]; |
661 |
NSView *nsView = [ctx view]; |
| 656 |
if(NULL != nsView) { |
662 |
if(NULL != nsView) { |
| 657 |
DBG_PRINT("updateContext.0: ctx %p, ctx.view %p\n", ctx, nsView); |
663 |
DBG_PRINT("updateContext.0: ctx %p, ctx.view %p\n", ctx, nsView); |
| 658 |
[ctx update]; |
664 |
dispatch_async(dispatch_get_main_queue(), ^{ |
|
|
665 |
[ctx update]; |
| 666 |
}); |
| 659 |
DBG_PRINT("updateContext.X\n"); |
667 |
DBG_PRINT("updateContext.X\n"); |
| 660 |
} |
668 |
} |
| 661 |
[pool release]; |
669 |
[pool release]; |