]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/iphone/glcanvas.mm
avoid setting initial position if it was not specified, broken in r70734
[wxWidgets.git] / src / osx / iphone / glcanvas.mm
index 5231dde91231dc87238164265c812839d65aebc5..9883f9f0e3e205e4b7782b6ecc09bfb49cfa3116 100644 (file)
@@ -4,7 +4,6 @@
 // Author:      Stefan Csomor
 // Modified by:
 // Created:     1998-01-01
-// RCS-ID:      $Id: glcanvas.cpp 54129 2008-06-11 19:30:52Z SC $
 // Copyright:   (c) Stefan Csomor
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
@@ -46,6 +45,7 @@
 
 @interface wxUICustomOpenGLView : UIView
 {
+    CGRect oldRect;
     EAGLContext* context;
 
     /* The pixel dimensions of the backbuffer */
@@ -61,6 +61,7 @@
 
 - (BOOL) createFramebuffer;
 - (void) destroyFramebuffer;
+- (id) initWithFrame:(CGRect) rect;
 
 @end
 
     }
 }
 
+- (id) initWithFrame:(CGRect)rect
+{
+    if ( !(self=[super initWithFrame:rect]) )
+        return nil;
+    
+    oldRect = rect;
+    return self;
+}
+
 - (BOOL)isOpaque
 {
     return YES;
@@ -89,6 +99,7 @@
     
     glGenFramebuffersOES(1, &viewFramebuffer);
     glGenRenderbuffersOES(1, &viewRenderbuffer);
+    glEnable(GL_CULL_FACE);
     
     glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
     glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
 - (void) setContext:(EAGLContext*) ctx {
     context = ctx;
     [EAGLContext setCurrentContext:ctx];
-    [self destroyFramebuffer];
-    [self createFramebuffer];
+
+    if ( viewFramebuffer == 0 )
+    {
+        [self destroyFramebuffer];
+        [self createFramebuffer];        
+    }
+
     glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
 }
  
     [context presentRenderbuffer:GL_RENDERBUFFER_OES];
 }
 
+- (void)layoutSubviews {
+    [EAGLContext setCurrentContext:context];
+    [self destroyFramebuffer];
+    [self createFramebuffer];
+}
+
 @end
 
 
@@ -357,7 +379,7 @@ bool wxGLCanvas::Create(wxWindow *parent,
         return false;
 */
 #if USE_SEPARATE_VIEW
-    m_macIsUserPane = false ;
+    DontCreatePeer();
 #endif
 
     if ( !wxWindow::Create(parent, id, pos, size, style, name) )
@@ -372,7 +394,7 @@ bool wxGLCanvas::Create(wxWindow *parent,
             [NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, 
             kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
             
-    m_peer = new wxWidgetIPhoneImpl( this, v );
+    SetPeer(new wxWidgetIPhoneImpl( this, v ));
 
     MacPostControlCreate(pos, size) ;
 #endif
@@ -390,7 +412,7 @@ bool wxGLCanvas::SwapBuffers()
     WXGLContext context = WXGLGetCurrentContext();
     wxCHECK_MSG(context, false, wxT("should have current context"));
 
-    wxUICustomOpenGLView* v = (wxUICustomOpenGLView*) m_peer->GetWXWidget();
+    wxUICustomOpenGLView* v = (wxUICustomOpenGLView*) GetPeer()->GetWXWidget();
     [v swapBuffers];
     return true;
 }