aboutsummaryrefslogtreecommitdiff
path: root/macosx/plugins/DFXVideo/macsrc/PluginGLView.m
diff options
context:
space:
mode:
Diffstat (limited to 'macosx/plugins/DFXVideo/macsrc/PluginGLView.m')
-rw-r--r--macosx/plugins/DFXVideo/macsrc/PluginGLView.m692
1 files changed, 0 insertions, 692 deletions
diff --git a/macosx/plugins/DFXVideo/macsrc/PluginGLView.m b/macosx/plugins/DFXVideo/macsrc/PluginGLView.m
deleted file mode 100644
index 96b05ff..0000000
--- a/macosx/plugins/DFXVideo/macsrc/PluginGLView.m
+++ /dev/null
@@ -1,692 +0,0 @@
-/***************************************************************************
- PluginGLView.m
- PeopsSoftGPU
-
- Created by Gil Pedersen on Sun April 18 2004.
- Copyright (c) 2004 Gil Pedersen.
- ***************************************************************************/
-
-/***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. See also the license.txt file for *
- * additional informations. *
- * *
- ***************************************************************************/
-
-#import <OpenGL/gl.h>
-#import <OpenGL/glext.h>
-#import <OpenGL/glu.h>
-#import <GLUT/glut.h>
-#import <Carbon/Carbon.h>
-#import "PluginGLView.h"
-#include "externals.h"
-#undef BOOL
-#include "gpu.h"
-#include "swap.h"
-
-#include <time.h>
-extern time_t tStart;
-
-static int mylog2(int val)
-{
- int i;
- for (i=1; i<31; i++)
- if (val <= (1 << i))
- return (1 << i);
-
- return -1;
-}
-
-#if 0
-void BlitScreen16NS(unsigned char * surf,long x,long y)
-{
- unsigned long lu;
- unsigned short row,column;
- unsigned short dx=PreviousPSXDisplay.Range.x1>>1;
- unsigned short dy=PreviousPSXDisplay.DisplayMode.y;
- unsigned short LineOffset,SurfOffset;
- long lPitch=image_width<<1;
-
- if(PreviousPSXDisplay.Range.y0) // centering needed?
- {
- surf+=PreviousPSXDisplay.Range.y0*lPitch;
- dy-=PreviousPSXDisplay.Range.y0;
- }
-
- {
- unsigned long * SRCPtr = (unsigned long *)(psxVuw + (y<<10) + x);
- unsigned long * DSTPtr = ((unsigned long *)surf)+(PreviousPSXDisplay.Range.x0>>1);
-
- LineOffset = 512 - dx;
- SurfOffset = (lPitch>>2) - dx;
-
- for(column=0;column<dy;column++)
- {
- for(row=0;row<dx;row++)
- {
- lu=GETLE16D(SRCPtr++);
-
- *DSTPtr++= lu;//((lu<<11)&0xf800f800)|((lu<<1)&0x7c007c0)|((lu>>10)&0x1f001f);
- }
- SRCPtr += LineOffset;
- DSTPtr += SurfOffset;
- }
- }
-}
-#endif
-
-@implementation PluginGLView
-
-//- (id)initWithFrame:(NSRect)frameRect
-- (id) initWithCoder: (NSCoder *) coder
-{
- const GLubyte * strExt;
-
- if ((self = [super initWithCoder:coder]) == nil)
- return nil;
-
- glLock = [[NSLock alloc] init];
- if (nil == glLock) {
- [self release];
- return nil;
- }
-
- // Init pixel format attribs
- NSOpenGLPixelFormatAttribute attrs[] =
- {
- NSOpenGLPFAAccelerated,
- NSOpenGLPFANoRecovery,
- NSOpenGLPFADoubleBuffer,
- 0
- };
-
- // Get pixel format from OpenGL
- NSOpenGLPixelFormat* pixFmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs];
- if (!pixFmt)
- {
- NSLog(@"No Accelerated OpenGL pixel format found\n");
-
- NSOpenGLPixelFormatAttribute attrs2[] =
- {
- NSOpenGLPFANoRecovery,
- 0
- };
-
- // Get pixel format from OpenGL
- pixFmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs2];
- if (!pixFmt) {
- NSLog(@"No OpenGL pixel format found!\n");
-
- [self release];
- return nil;
- }
- }
-
- [self setPixelFormat:[pixFmt autorelease]];
-
- /*
- long swapInterval = 1 ;
- [[self openGLContext]
- setValues:&swapInterval
- forParameter:NSOpenGLCPSwapInterval];
- */
- [glLock lock];
- [[self openGLContext] makeCurrentContext];
-
- // Init object members
- strExt = glGetString (GL_EXTENSIONS);
- texture_range = gluCheckExtension ((const unsigned char *)"GL_APPLE_texture_range", strExt) ? GL_TRUE : GL_FALSE;
- texture_hint = GL_STORAGE_SHARED_APPLE ;
- client_storage = gluCheckExtension ((const unsigned char *)"GL_APPLE_client_storage", strExt) ? GL_TRUE : GL_FALSE;
- rect_texture = gluCheckExtension((const unsigned char *)"GL_EXT_texture_rectangle", strExt) ? GL_TRUE : GL_FALSE;
-
- // Setup some basic OpenGL stuff
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
- glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
- glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
- glClear(GL_COLOR_BUFFER_BIT);
-
- [NSOpenGLContext clearCurrentContext];
- [glLock unlock];
-
- image_width = 1024;
- image_height = 512;
- image_depth = 16;
-
- image_type = GL_UNSIGNED_SHORT_1_5_5_5_REV;
- image_base = (GLubyte *) calloc(((IMAGE_COUNT * image_width * image_height) / 3) * 4, image_depth >> 3);
- if (image_base == nil) {
- [self release];
- return nil;
- }
-
- // Create and load textures for the first time
- [self loadTextures:GL_TRUE];
-
- // Init fps timer
- //gettimeofday(&cycle_time, NULL);
-
- drawBG = YES;
-
- // Call for a redisplay
- noDisplay = YES;
- PSXDisplay.Disabled = 1;
- [self setNeedsDisplay:true];
-
- return self;
-}
-
-- (void)dealloc
-{
- int i;
-
- [glLock lock];
-
- [[self openGLContext] makeCurrentContext];
- for(i = 0; i < IMAGE_COUNT; i++)
- {
- GLuint dt = i+1;
- glDeleteTextures(1, &dt);
- }
- if(texture_range) glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_EXT, IMAGE_COUNT * image_width * image_height * (image_depth >> 3), image_base);
-
- [NSOpenGLContext clearCurrentContext];
- [glLock unlock];
- [glLock release];
-
- if (image_base)
- free(image_base);
-
- [super dealloc];
-}
-
-- (BOOL)isOpaque
-{
- return YES;
-}
-
-- (BOOL)acceptsFirstResponder
-{
- return NO;
-}
-
-- (void)drawRect:(NSRect)aRect
-{
- // Check if an update has occured to the buffer
- if ([self lockFocusIfCanDraw]) {
-
- // Make this context current
- if (drawBG) {
- [[NSColor blackColor] setFill];
- [NSBezierPath fillRect:[self visibleRect]];
- }
-
- //glFinish() ;
- // Swap buffer to screen
- //[[self openGLContext] flushBuffer];
-
- [self unlockFocus];
- }
-}
-
-#if 0
-- (void)update // moved or resized
-{
- NSRect rect;
-
- [super update];
-
- [[self openGLContext] makeCurrentContext];
- [[self openGLContext] update];
-
- rect = [self bounds];
-
- glViewport(0, 0, (int) rect.size.width, (int) rect.size.height);
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- //[self setNeedsDisplay:true];
-}
-#endif
-
-- (void)reshape // scrolled, moved or resized
-{
- [glLock lock];
-
- NSOpenGLContext *oglContext = [self openGLContext];
- NSRect rect;
-
- [super reshape];
-
- [oglContext makeCurrentContext];
- [oglContext update];
-
- rect = [[oglContext view] bounds];
-
- glViewport(0, 0, (int) rect.size.width, (int) rect.size.height);
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- drawBG = YES;
-
- [NSOpenGLContext clearCurrentContext];
-
-// [self setNeedsDisplay:true];
-
- [self renderScreen];
- [glLock unlock];
-}
-
-- (void)renderScreen
-{
- int bufferIndex = whichImage;
-
- if (1/*[glLock tryLock]*/) {
- // Make this context current
- [[self openGLContext] makeCurrentContext];
- if (PSXDisplay.Disabled) {
- glClear(GL_COLOR_BUFFER_BIT);
- } else {
- // Bind, update and draw new image
- if(rect_texture)
- {
- glBindTexture(GL_TEXTURE_RECTANGLE_EXT, bufferIndex+1);
-
- glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, image_width, image_height, GL_BGRA, image_type, image[bufferIndex]);
- glBegin(GL_QUADS);
- glTexCoord2f(0.0f, 0.0f);
- glVertex2f(-1.0f, 1.0f);
-
- glTexCoord2f(0.0f, image_height);
- glVertex2f(-1.0f, -1.0f);
-
- glTexCoord2f(image_width, image_height);
- glVertex2f(1.0f, -1.0f);
-
- glTexCoord2f(image_width, 0.0f);
- glVertex2f(1.0f, 1.0f);
- glEnd();
- }
- else
- {
- glBindTexture(GL_TEXTURE_2D, whichImage+1);
-
- glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, image_width2, image_height2, GL_BGRA, image_type, image[bufferIndex]);
- glBegin(GL_QUADS);
- glTexCoord2f(0.0f, 0.0f);
- glVertex2f(-1.0f, 1.0f);
-
- glTexCoord2f(0.0f, image_ty);
- glVertex2f(-1.0f, -1.0f);
-
- glTexCoord2f(image_tx, image_ty);
- glVertex2f(1.0f, -1.0f);
-
- glTexCoord2f(image_tx, 0.0f);
- glVertex2f(1.0f, 1.0f);
- glEnd();
- }
- }
-
- // FPS Display
- if(ulKeybits&KEY_SHOWFPS)
- {
- int len, i;
- if(szDebugText[0] && ((time(NULL) - tStart) < 2))
- {
- strncpy(szDispBuf, szDebugText, 63);
- }
- else
- {
- szDebugText[0]=0;
- if (szMenuBuf) {
- strncat(szDispBuf, szMenuBuf, 63 - strlen(szDispBuf));
- }
- }
-
- NSRect rect = [[[self openGLContext] view] bounds];
- len = (int) strlen(szDispBuf);
-
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
-
- gluOrtho2D(0.0, rect.size.width, 0.0, rect.size.height);
- glDisable(rect_texture ? GL_TEXTURE_RECTANGLE_EXT : GL_TEXTURE_2D);
-
- glColor4f(0.0, 0.0, 0.0, 0.5);
- glRasterPos2f(3.0, rect.size.height - 14.0);
- for (i = 0; i < len; i++) {
- glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, szDispBuf[i]);
- }
-
- glColor3f(1.0, 1.0, 1.0);
- glRasterPos2f(2.0, rect.size.height - 13.0);
- for (i = 0; i < len; i++) {
- glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, szDispBuf[i]);
- }
-
-
- glEnable(rect_texture ? GL_TEXTURE_RECTANGLE_EXT : GL_TEXTURE_2D);
- glPopMatrix();
- }
-
- [[self openGLContext] flushBuffer];
- [NSOpenGLContext clearCurrentContext];
- //[glLock unlock];
- }
-}
-
-- (void)loadTextures:(GLboolean)first
-{
- GLint i;
-
- //[glLock lock];
- [[self openGLContext] makeCurrentContext];
-
- /*
- printf("Range.x0=%i\n"
- "Range.x1=%i\n"
- "Range.y0=%i\n"
- "Range.y1=%i\n",
- PreviousPSXDisplay.Range.x0,
- PreviousPSXDisplay.Range.x1,
- PreviousPSXDisplay.Range.y0,
- PreviousPSXDisplay.Range.y1);
-
- printf("DisplayMode.x=%d\n"
- "DisplayMode.y=%d\n",
- PreviousPSXDisplay.DisplayMode.x,
- PreviousPSXDisplay.DisplayMode.y);
-
- printf("DisplayPosition.x=%i\n"
- "DisplayPosition.y=%i\n",
- PreviousPSXDisplay.DisplayPosition.x,
- PreviousPSXDisplay.DisplayPosition.y);
-
- printf("DisplayEnd.x=%i\n"
- "DisplayEnd.y=%i\n",
- PreviousPSXDisplay.DisplayEnd.x,
- PreviousPSXDisplay.DisplayEnd.y);
-
- printf("Double=%i\n"
- "Height=%i\n",
- PreviousPSXDisplay.Double,
- PreviousPSXDisplay.Height);
-
- printf("Disabled=%i\n", PreviousPSXDisplay.Disabled);
- */
-
- image_width = PreviousPSXDisplay.Range.x1;
- image_height = PreviousPSXDisplay.DisplayMode.y;
- if (PSXDisplay.RGB24) {
- image_depth = 32;
- image_type = GL_UNSIGNED_INT_8_8_8_8_REV;
- } else {
- image_depth = 16;
- image_type = GL_UNSIGNED_SHORT_1_5_5_5_REV;
- //image_width >>= 1;
- }
-
- if (image_width * image_height * (image_depth >> 3) > ((1024*512*2)/3)*4)
- printf("Fatal error: desired dimension are too large! (%ix%i %ibpp)\n",
- image_width, image_height, image_depth);
-
- for(i = 0; i < IMAGE_COUNT; i++)
- image[i] = image_base + i * image_width * image_height * (image_depth >> 3);
-
- if(rect_texture)
- {
- image_width2 = image_width;
- image_height2 = image_height;
- image_tx = (float)image_width;
- image_ty = (float)image_height;
-
- if(texture_range) glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_EXT, IMAGE_COUNT * image_width * image_height * (image_depth >> 3), image_base);
- else glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_EXT, 0, NULL);
-
- for(i = 0; i < IMAGE_COUNT; i++)
- {
- if(!first)
- {
- GLuint dt = i+1;
- glDeleteTextures(1, &dt);
- }
-
- glDisable(GL_TEXTURE_2D);
- glEnable(GL_TEXTURE_RECTANGLE_EXT);
- glBindTexture(GL_TEXTURE_RECTANGLE_EXT, i+1);
-
- glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_STORAGE_HINT_APPLE , texture_hint);
- glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, client_storage);
- glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
-
- glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, image_width,
- image_height, 0, GL_BGRA, image_type, image[i]);
- }
- }
- else
- {
- image_width2 = mylog2(image_width);
- image_height2 = mylog2(image_height);
- image_tx = (float)image_width/(float)image_width2;
- image_ty = (float)image_height/(float)image_height2;
-
- glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_EXT, 0, NULL);
- if(texture_range) glTextureRangeAPPLE(GL_TEXTURE_2D, IMAGE_COUNT * image_width2 * image_height2 * (image_depth >> 3), image_base);
- else glTextureRangeAPPLE(GL_TEXTURE_2D, 0, NULL);
-
- for(i = 0; i < IMAGE_COUNT; i++)
- {
- if(!first)
- {
- GLuint dt = i+1;
- glDeleteTextures(1, &dt);
- }
-
- glDisable(GL_TEXTURE_RECTANGLE_EXT);
- glEnable(GL_TEXTURE_2D);
- glBindTexture(GL_TEXTURE_2D, i+1);
-
- //if(texture_range) glTextureRangeAPPLE(GL_TEXTURE_2D, IMAGE_COUNT * image_width2 * image_height2 * (image_depth >> 3), image_base);
- //else glTextureRangeAPPLE(GL_TEXTURE_2D, 0, NULL);
-
- glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_STORAGE_HINT_APPLE , texture_hint);
- glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, client_storage);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
-
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image_width2,
- image_height2, 0, GL_BGRA, image_type, image[i]);
- }
- }
-
- [NSOpenGLContext clearCurrentContext];
- //[glLock unlock];
-}
-
-- (void)swapBuffer
-{
- unsigned char * surf;
- long x = PSXDisplay.DisplayPosition.x;
- long y = PSXDisplay.DisplayPosition.y;
- unsigned long lu;
- unsigned short row,column;
- unsigned short dx=(unsigned short)PSXDisplay.DisplayEnd.x;//PreviousPSXDisplay.Range.x1;
- unsigned short dy=(unsigned short)PSXDisplay.DisplayEnd.y;//PreviousPSXDisplay.DisplayMode.y;
- long lPitch;
-
- //printf("y=%i",PSXDisplay.DisplayPosition.y);
-
- if ([glLock tryLock]) {
- // make sure the texture area is ready to be written to
- glFinishObjectAPPLE(GL_TEXTURE, 2-whichImage);
-
- if ((image_width != PreviousPSXDisplay.Range.x1) ||
- (image_height != PreviousPSXDisplay.DisplayMode.y) ||
- ((PSXDisplay.RGB24 ? 32 : 16) != image_depth)) {
- [self loadTextures:NO];
- }
-
- surf = image[1-whichImage];
- lPitch=image_width2<<(image_depth >> 4);
-
- if(PreviousPSXDisplay.Range.y0) // centering needed?
- {
- surf+=PreviousPSXDisplay.Range.y0*lPitch;
- dy-=PreviousPSXDisplay.Range.y0;
- }
-
- if(PSXDisplay.RGB24)
- {
- unsigned char * pD;unsigned int startxy;
-
- surf+=PreviousPSXDisplay.Range.x0<<2;
-
- for(column=0;column<dy;column++)
- {
- startxy = (1024 * (column + y)) + x;
- pD = (unsigned char *)&psxVuw[startxy];
-
- row = 0;
- // make sure the reads are aligned
- while ((int)pD & 0x3) {
- *((unsigned long *)((surf)+(column*lPitch)+(row<<2))) =
- (*(pD+0)<<16)|(*(pD+1)<<8)|*(pD+2);
-
- pD+=3;
- row++;
- }
-
- for(;row<dx;row+=4)
- {
- unsigned long lu1 = *((unsigned long *)pD);
- unsigned long lu2 = *((unsigned long *)pD+1);
- unsigned long lu3 = *((unsigned long *)pD+2);
- unsigned long *dst = ((unsigned long *)((surf)+(column*lPitch)+(row<<2)));
-#ifdef __POWERPC__
- *(dst)=
- (((lu1>>24)&0xff)<<16)|(((lu1>>16)&0xff)<<8)|(((lu1>>8)&0xff));
- *(dst+1)=
- (((lu1>>0)&0xff)<<16)|(((lu2>>24)&0xff)<<8)|(((lu2>>16)&0xff));
- *(dst+2)=
- (((lu2>>8)&0xff)<<16)|(((lu2>>0)&0xff)<<8)|(((lu3>>24)&0xff));
- *(dst+3)=
- (((lu3>>16)&0xff)<<16)|(((lu3>>8)&0xff)<<8)|(((lu3>>0)&0xff));
-#else
- *(dst)=
- (((lu1>>0)&0xff)<<16)|(((lu1>>8)&0xff)<<8)|(((lu1>>16)&0xff));
- *(dst+1)=
- (((lu1>>24)&0xff)<<16)|(((lu2>>0)&0xff)<<8)|(((lu2>>8)&0xff));
- *(dst+2)=
- (((lu2>>16)&0xff)<<16)|(((lu2>>24)&0xff)<<8)|(((lu3>>0)&0xff));
- *(dst+3)=
- (((lu3>>8)&0xff)<<16)|(((lu3>>16)&0xff)<<8)|(((lu3>>24)&0xff));
-#endif
- pD+=12;
- }
-
- //for(;row<dx;row+=4)
- /*while (pD&0x3) {
- *((unsigned long *)((surf)+(column*lPitch)+(row<<2)))=
- (*(pD+0)<<16)|(*(pD+1)<<8)|(*(pD+2)&0xff));
- pD+=3;
- row++;
- }*/
- }
- }
- else
- {
- int LineOffset,SurfOffset;
- unsigned long * SRCPtr = (unsigned long *)(psxVuw + (y << 10) + x);
- unsigned long * DSTPtr =
- ((unsigned long *)surf) + (PreviousPSXDisplay.Range.x0 >> 1);
-
- dx >>= 1;
-
- LineOffset = 512 - dx;
- SurfOffset = (lPitch >> 2) - dx;
-
- for(column=0;column<dy;column++)
- {
- for(row=0;row<dx;row++)
- {
-#ifdef __POWERPC__
- lu=GETLE16D(SRCPtr++);
-#else
- lu=*SRCPtr++;
-#endif
- *DSTPtr++=
- ((lu << 10) & 0x7c007c00)|
- ((lu) & 0x3e003e0)|
- ((lu >> 10) & 0x1f001f);
- }
- SRCPtr += LineOffset;
- DSTPtr += SurfOffset;
- }
- }
-
- // Swap image buffer
- whichImage = 1 - whichImage;
-
- [self renderScreen];
- [glLock unlock];
- }
-}
-
-- (void)clearBuffer:(BOOL)display
-{
- if (display == NO) {
- //[[self openGLContext] makeCurrentContext];
- //glClear(GL_COLOR_BUFFER_BIT);
- //[self loadTextures:NO];
- } else {
- noDisplay = YES;
-// [self setNeedsDisplay:true];
- }
-}
-/*
-- (void)mouseDown:(NSEvent *)theEvent
-{
- PluginWindowController *controller = [[self window] windowController];
-
- static unsigned long lastTime = 0;
- unsigned long time;
-
- time = TickCount();
-
- if (lastTime != 0) {
- if (time - lastTime > GetDblTime()) {
- if (isFullscreen) {
- [[self openGLContext] clearDrawable];
- } else {
- [[self openGLContext] setFullScreen];
- }
- isFullscreen = 1-isFullscreen;
- lastTime = 0;
- return;
- }
- }
-
- lastTime = time;
-}*/
-
-@end