In SampleWindow, pass ownership of menus to SkWindow, so it can safely
delete them in its destructor.

BUG=557
TEST=Run SampleApp on linux. Then press escape.
Review URL: https://codereview.appspot.com/6050047

git-svn-id: http://skia.googlecode.com/svn/trunk@3719 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 1d50b5c..9bcd1f0 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -769,57 +769,59 @@
     fTransitionPrev = 2;
     
     int sinkID = this->getSinkID();
-    fAppMenu.setTitle("Global Settings");
+    fAppMenu = new SkOSMenu;
+    fAppMenu->setTitle("Global Settings");
     int itemID;
     
-    itemID =fAppMenu.appendList("Device Type", "Device Type", sinkID, 0, 
+    itemID =fAppMenu->appendList("Device Type", "Device Type", sinkID, 0, 
                                 "Raster", "Picture", "OpenGL", 
 #if SK_ANGLE
                                 "ANGLE",
 #endif
                                 NULL);
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'd');
-    itemID = fAppMenu.appendTriState("AA", "AA", sinkID, fAAState);
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'b');
-    itemID = fAppMenu.appendTriState("LCD", "LCD", sinkID, fLCDState);
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'l');
-    itemID = fAppMenu.appendTriState("Filter", "Filter", sinkID, fFilterState);
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'n');
-    itemID = fAppMenu.appendTriState("Hinting", "Hinting", sinkID, fHintingState);
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'h');
-    fUsePipeMenuItemID = fAppMenu.appendSwitch("Pipe", "Pipe" , sinkID, fUsePipe);    
-    fAppMenu.assignKeyEquivalentToItem(fUsePipeMenuItemID, 'p');
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'd');
+    itemID = fAppMenu->appendTriState("AA", "AA", sinkID, fAAState);
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'b');
+    itemID = fAppMenu->appendTriState("LCD", "LCD", sinkID, fLCDState);
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'l');
+    itemID = fAppMenu->appendTriState("Filter", "Filter", sinkID, fFilterState);
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'n');
+    itemID = fAppMenu->appendTriState("Hinting", "Hinting", sinkID, fHintingState);
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'h');
+    fUsePipeMenuItemID = fAppMenu->appendSwitch("Pipe", "Pipe" , sinkID, fUsePipe);    
+    fAppMenu->assignKeyEquivalentToItem(fUsePipeMenuItemID, 'p');
 #ifdef DEBUGGER
-    itemID = fAppMenu.appendSwitch("Debugger", "Debugger", sinkID, fDebugger);
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'q');
+    itemID = fAppMenu->appendSwitch("Debugger", "Debugger", sinkID, fDebugger);
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'q');
 #endif
-    itemID = fAppMenu.appendSwitch("Slide Show", "Slide Show" , sinkID, false);    
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'a');    
-    itemID = fAppMenu.appendSwitch("Clip", "Clip" , sinkID, fUseClip);    
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'c');
-    itemID = fAppMenu.appendSwitch("Flip X", "Flip X" , sinkID, false); 
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'x');
-    itemID = fAppMenu.appendSwitch("Flip Y", "Flip Y" , sinkID, false);
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'y');
-    itemID = fAppMenu.appendSwitch("Zoomer", "Zoomer" , sinkID, fShowZoomer);
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'z');
-    itemID = fAppMenu.appendSwitch("Magnify", "Magnify" , sinkID, fMagnify);
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'm');
-    itemID =fAppMenu.appendList("Transition-Next", "Transition-Next", sinkID, 
+    itemID = fAppMenu->appendSwitch("Slide Show", "Slide Show" , sinkID, false);    
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'a');    
+    itemID = fAppMenu->appendSwitch("Clip", "Clip" , sinkID, fUseClip);    
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'c');
+    itemID = fAppMenu->appendSwitch("Flip X", "Flip X" , sinkID, false); 
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'x');
+    itemID = fAppMenu->appendSwitch("Flip Y", "Flip Y" , sinkID, false);
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'y');
+    itemID = fAppMenu->appendSwitch("Zoomer", "Zoomer" , sinkID, fShowZoomer);
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'z');
+    itemID = fAppMenu->appendSwitch("Magnify", "Magnify" , sinkID, fMagnify);
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'm');
+    itemID =fAppMenu->appendList("Transition-Next", "Transition-Next", sinkID, 
                                 fTransitionNext, "Up", "Up and Right", "Right", 
                                 "Down and Right", "Down", "Down and Left", 
                                 "Left", "Up and Left", NULL);
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'j');
-    itemID =fAppMenu.appendList("Transition-Prev", "Transition-Prev", sinkID, 
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'j');
+    itemID =fAppMenu->appendList("Transition-Prev", "Transition-Prev", sinkID, 
                                 fTransitionPrev, "Up", "Up and Right", "Right", 
                                 "Down and Right", "Down", "Down and Left", 
                                 "Left", "Up and Left", NULL);
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'k');
-    itemID = fAppMenu.appendAction("Save to PDF", sinkID);
-    fAppMenu.assignKeyEquivalentToItem(itemID, 'e');
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'k');
+    itemID = fAppMenu->appendAction("Save to PDF", sinkID);
+    fAppMenu->assignKeyEquivalentToItem(itemID, 'e');
     
-    this->addMenu(&fAppMenu);
-    this->addMenu(&fSlideMenu);
+    this->addMenu(fAppMenu);
+    fSlideMenu = new SkOSMenu;
+    this->addMenu(fSlideMenu);
     
 //    this->setConfig(SkBitmap::kRGB_565_Config);
     this->setConfig(SkBitmap::kARGB_8888_Config);
@@ -1282,8 +1284,8 @@
         //Stop Pipe when fDebugger is active
         fUsePipe = false;
         (void)SampleView::SetUsePipe(curr, false);
-        fAppMenu.getItemByID(fUsePipeMenuItemID)->setBool(fUsePipe);
-        this->onUpdateMenu(&fAppMenu);
+        fAppMenu->getItemByID(fUsePipeMenuItemID)->setBool(fUsePipe);
+        this->onUpdateMenu(fAppMenu);
         
         //Reset any transformations
         fGesture.stop();
@@ -1673,9 +1675,9 @@
             break;
     }
     
-    if (fAppMenu.handleKeyEquivalent(uni)|| fSlideMenu.handleKeyEquivalent(uni)) {
-        this->onUpdateMenu(&fAppMenu);
-        this->onUpdateMenu(&fSlideMenu);
+    if (fAppMenu->handleKeyEquivalent(uni)|| fSlideMenu->handleKeyEquivalent(uni)) {
+        this->onUpdateMenu(fAppMenu);
+        this->onUpdateMenu(fSlideMenu);
         return true;
     }
     return this->INHERITED::onHandleChar(uni);
@@ -1847,7 +1849,7 @@
     view->setSize(this->width(), this->height());
 
     //repopulate the slide menu when a view is loaded
-    fSlideMenu.reset();
+    fSlideMenu->reset();
 #ifdef DEBUGGER
     if (!is_debugger(view) && !is_overview(view) && !is_transition(view) && fDebugger) {
         //Force Pipe to be on if using debugger
@@ -1856,8 +1858,8 @@
 #endif
     (void)SampleView::SetUsePipe(view, fUsePipe);
     if (SampleView::IsSampleView(view))
-        ((SampleView*)view)->requestMenu(&fSlideMenu);
-    this->onUpdateMenu(&fSlideMenu);
+        ((SampleView*)view)->requestMenu(fSlideMenu);
+    this->onUpdateMenu(fSlideMenu);
     this->updateTitle();
 }