iOS Sample App menu implementation
http://codereview.appspot.com/4798055/


git-svn-id: http://skia.googlecode.com/svn/trunk@2022 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/iOSSampleApp/Shared/SkUIView.mm b/experimental/iOSSampleApp/Shared/SkUIView.mm
index 77cab50..d60763e 100644
--- a/experimental/iOSSampleApp/Shared/SkUIView.mm
+++ b/experimental/iOSSampleApp/Shared/SkUIView.mm
@@ -5,7 +5,7 @@
 #define SKGL_CONFIG         kEAGLColorFormatRGB565
 //#define SKGL_CONFIG         kEAGLColorFormatRGBA8
 
-#define FORCE_REDRAW
+//#define FORCE_REDRAW
 
 //#define USE_GL_1
 #define USE_GL_2
@@ -84,7 +84,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 @implementation SkUIView
 
-@synthesize fWind, fTitle, fTitleItem, fRasterLayer, fGLLayer;
+@synthesize fWind, fTitle, fTitleItem, fRasterLayer, fGLLayer, fOptionsDelegate;
 
 #include "SkApplication.h"
 #include "SkEvent.h"
@@ -171,7 +171,6 @@
 - (id)initWithMyDefaults {
     fRedrawRequestPending = false;
     fFPSState = new FPSState;
-    
 #ifdef USE_GL_1
     fGL.fContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
 #else
@@ -197,7 +196,7 @@
     glBindRenderbuffer(GL_RENDERBUFFER, fGL.fStencilbuffer);
     glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, fGL.fStencilbuffer);
 
-    fGLLayer = [CAEAGLLayer layer];
+    self.fGLLayer = [CAEAGLLayer layer];
     fGLLayer.bounds = self.bounds;
     fGLLayer.anchorPoint = CGPointMake(0, 0);
     fGLLayer.opaque = TRUE;
@@ -209,7 +208,7 @@
                                    kEAGLDrawablePropertyColorFormat,
                                    nil];
     
-    fRasterLayer = [CALayer layer];
+    self.fRasterLayer = [CALayer layer];
     fRasterLayer.anchorPoint = CGPointMake(0, 0);
     fRasterLayer.opaque = TRUE;
     [self.layer addSublayer:fRasterLayer];
@@ -228,9 +227,6 @@
     fWind = new SampleWindow(self, NULL, NULL, fDevManager);
     application_init();
     fWind->resize(self.frame.size.width, self.frame.size.height, SKWIND_CONFIG);
-    fMatrix.reset();
-    fZoomAround = false;
-
     return self;
 }
 
@@ -252,8 +248,9 @@
     delete fWind;
     delete fDevManager;
     delete fFPSState;
-    [fRasterLayer release];
-    [fGLLayer release];
+    self.fRasterLayer = nil;
+    self.fGLLayer = nil;
+    [fGL.fContext release];
     application_term();
     [fTitleItem release];
     [super dealloc];
@@ -420,6 +417,14 @@
     return false;
 }
 
+#include "SkOSMenu.h"
+- (void)onAddMenu:(const SkOSMenu*)menu {
+    [self.fOptionsDelegate view:self didAddMenu:menu];
+}
+- (void)onUpdateMenu:(const SkOSMenu*)menu {
+    [self.fOptionsDelegate view:self didUpdateMenu:menu];
+}
+
 - (void)postInvalWithRect:(const SkIRect*)r {
     if (!fRedrawRequestPending) {
         fRedrawRequestPending = true;
@@ -434,6 +439,7 @@
         }
         else {
             [self performSelector:@selector(drawInRaster) withObject:nil afterDelay:0];
+            [self setNeedsDisplay];
         }
     }
 }