#define __private_extern__
#include <mach-o/dyld.h>
-//#include <objc/objc-runtime.h>
-//#include <objc/hashtable.h>
#include "POSIX.cc"
#include "OpenGL.cc"
#include <org/xwt/plat/Darwin.h>
#include <org/xwt/plat/Darwin$CarbonSurface.h>
#include <org/xwt/plat/Darwin$GLCarbonSurface.h>
-#include <org/xwt/plat/Darwin$GLCarbonDoubleBuffer.h>
+#include <org/xwt/plat/Darwin$GLCarbonPixelBuffer.h>
#include <org/xwt/plat/Darwin$CarbonMessage.h>
#include <org/xwt/plat/Darwin$CarbonOpenGL.h>
#include <org/xwt/plat/Darwin$FileDialogHelper.h>
switch(eKind) {
case kEventWindowUpdate: {
- surface->Dirty(0,0,surface->root->width,surface->root->height);
+ surface->Dirty(0,0,surface->root->width,surface->root->height);
return noErr;
}
case kEventWindowBoundsChanged: {
// FIXME: unframed windows should appear in the window menu
// This probably needs a hack similar to whats in Cocoa.mm
WindowAttributes attr = kWindowStandardHandlerAttribute|
- (framed ? kWindowInWindowMenuAttribute|kWindowStandardDocumentAttributes|kWindowLiveResizeAttribute/*|kWindowMetalAttribute*/ : 0);
+ (framed ? kWindowInWindowMenuAttribute|kWindowStandardDocumentAttributes|kWindowLiveResizeAttribute : 0);
OSStatus r;
rect.top = 0; rect.left = 0; rect.bottom = 10; rect.right=10;
r = CreateNewWindow(wc,attr,&rect,&window);
checkStatus(r,"CreateNewWindow");
- /*
- // setBackingType
- NSString*
- Class NSWindowClass = NSClassFromString
- NSWindowClass->methodLists
-
- void *iterator = 0; // Method list (category) iterator
- struct objc_method_list* mlist;
- Method currMethod;
- int j;
- while ( mlist = class_nextMethodList( NSWindowClass, &iterator ) ) {
- for ( j = 0; j < mlist->method_count; ++j ) {
- currMethod = (mlist->method_list + j);
- if (strcmp((const char *)currMethod->method_name, "setBackingStore")) {
- IMP imp = currMethod->method_imp;
- (*imp)(NSWindowInstance, currMethod->method_name, 0);
- // do stuff
- }
- }
- }
- NSWindow* window =
- */
+
GCJ$Retainer::retain(this); // Need to account for the EventHandlers pointer to us
EventHandlerUPP upp = NewEventHandlerUPP(our_windowEventHandler);
checkStatus(rawSharedContext,"aglCreateContext");
}
-void Darwin$GLCarbonDoubleBuffer::natInit() {
+void Darwin$GLCarbonPixelBuffer::natInit() {
WindowClass wc = kPlainWindowClass;
WindowAttributes attr = 0;
WindowRef window;
r = CreateNewWindow(wc,attr,&rect,&window);
checkStatus(r,"CreateNewWindow");
-
+
shared = (AGLContext) gl->rawSharedContext;
fmt = (AGLPixelFormat) gl->rawPixelFormat;
ctx = aglCreateContext(fmt,shared);
checkStatus(ctx, "aglCreateContext");
- b = aglSetDrawable(ctx, GetWindowPort(window));
+ b = aglSetDrawable(ctx,GetWindowPort(window));
checkStatus(b,"aglSetDrawable");
aglSetCurrentContext(ctx);
aglUpdateContext(ctx);
- drawableInit(OpenGL::roundToPowerOf2(width),
- OpenGL::roundToPowerOf2(height));
+ drawableInit(width,height);
glClear(GL_COLOR_BUFFER_BIT);
aglSetCurrentContext(shared);
-
target = rectTexture ? GL_TEXTURE_RECTANGLE_EXT : GL_TEXTURE_2D;
glEnable(target);
glGenTextures(1,&tex);
glTexParameterf(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameterf(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
aglSurfaceTexture (shared, target, GL_RGBA, ctx);
- /*
- glReadBuffer
- glCopyTexImage2D(target, 0, GL_RGBA, 0, 0, width, height, 0);
- */
checkGLError();
glDisable(target);
rawCTX = (RawData*) ctx;
}
-void Darwin$GLCarbonDoubleBuffer::activateContext() {
+void Darwin$GLCarbonPixelBuffer::activateContext() {
AGLContext ctx = (AGLContext) rawCTX;
aglSetCurrentContext(ctx);
}
-void Darwin$GLCarbonDoubleBuffer::natCleanup(RawData* rawWindowRef, RawData* rawCTX) {
+void Darwin$GLCarbonPixelBuffer::natCleanup(RawData* rawWindowRef, RawData* rawCTX) {
WindowRef window = (WindowRef) rawWindowRef;
AGLContext ctx = (AGLContext) rawCTX;
aglDestroyContext(ctx);
DisposeWindow(window);
}
-void Darwin$GLCarbonSurface::natBlit(Darwin$GLCarbonDoubleBuffer *db, jint sx1, jint sy1, jint dx1, jint dy1, jint dx2, jint dy2) {
+void Darwin$GLCarbonSurface::natBlit(Darwin$GLCarbonPixelBuffer *db, jint sx1, jint sy1, jint dx1, jint dy1, jint dx2, jint dy2) {
AGLContext ctx = (AGLContext) rawCTX;
int sx2 = sx1 + (dx2-dx1);
int sy2 = sy1 + (dy2-dy1);
if(db->rectTexture) {
glEnable(GL_TEXTURE_RECTANGLE_EXT);
checkGLError();
- glBindTexture(GL_TEXTURE_RECTANGLE_EXT, (GLuint)db->textureName);
+ glBindTexture(GL_TEXTURE_RECTANGLE_EXT, db->textureName);
checkGLError();
glBegin(GL_QUADS);
glTexCoord2i (sx1, sy1 );
glColor4f(1.0f,1.0f,1.0f,1.0f);
glEnable(GL_TEXTURE_2D);
- GLuint tname;
- glGenTextures(1, &tname);
- glBindTexture(GL_TEXTURE_2D, tname);
- aglSurfaceTexture (ctx, GL_TEXTURE_2D, GL_RGBA, (AGLContext)db->rawCTX);
+ glBindTexture(GL_TEXTURE_2D, db->textureName);
checkGLError();
glBegin(GL_QUADS);
glTexCoord2f (tx1, ty1 );