opengl renderer: Enable and fix renderer Mac support
The following enables the renderer build on darwin. Moved platform specific type declarations from render_api.h to render_api_platform_types.h so it can be included from the objective c code. Fixed subwindow to use EmuGLView which overrides NSView to prevent background drawing of the view.
This commit is contained in:
committed by
Guy Zadickario
parent
2683b10bdd
commit
b68a421908
@@ -16,22 +16,40 @@
|
||||
#include "NativeSubWindow.h"
|
||||
#include <Cocoa/Cocoa.h>
|
||||
|
||||
/*
|
||||
* EmuGLView inherit from NSView and override the isOpaque
|
||||
* method to return YES. That prevents drawing of underlying window/view
|
||||
* when the view needs to be redrawn.
|
||||
*/
|
||||
@interface EmuGLView : NSView {
|
||||
} @end
|
||||
|
||||
@implementation EmuGLView
|
||||
|
||||
- (BOOL)isOpaque {
|
||||
return YES;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
EGLNativeWindowType createSubWindow(FBNativeWindowType p_window,
|
||||
EGLNativeDisplayType* display_out,
|
||||
int x, int y,int width, int height){
|
||||
NSRect contentRect = NSMakeRect(x, y, width, height);
|
||||
NSView *glView = [[NSView alloc] initWithFrame:contentRect];
|
||||
NSView *glView = [[EmuGLView alloc] initWithFrame:contentRect];
|
||||
if (glView) {
|
||||
NSWindow *win = (NSWindow *)p_window;
|
||||
[[win contentView] addSubview:glView];
|
||||
[win makeKeyAndOrderFront:nil];
|
||||
}
|
||||
}
|
||||
|
||||
return (EGLNativeWindowType)glView;
|
||||
}
|
||||
|
||||
void destroySubWindow(EGLNativeDisplayType dis,EGLNativeWindowType win){
|
||||
if(win){
|
||||
delete win;
|
||||
NSView *glView = (NSView *)win;
|
||||
[glView release];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user