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:
Guy Zadickario
2011-06-30 16:06:57 +03:00
committed by Guy Zadickario
parent 2683b10bdd
commit b68a421908
10 changed files with 68 additions and 49 deletions

View File

@@ -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];
}
}