SampleApp fixes.
On Android, delete gWindow before calling application_term, avoiding a crash
each time the app closes. Also make sure the screen is redrawn when resuming.
On Linux, delete gWindow to avoid memory leak.
In general, allow moving from sample 0 to the last sample.
Reviewed at http://codereview.appspot.com/4639060
git-svn-id: http://skia.googlecode.com/svn/trunk@1661 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 2d5d0ca..9c2b7d1 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -53,9 +53,9 @@
///////////////
static const char view_inval_msg[] = "view-inval-msg";
-static void postInvalDelay(SkEventSinkID sinkID) {
+void SampleWindow::postInvalDelay() {
SkEvent* evt = new SkEvent(view_inval_msg);
- evt->post(sinkID, 1);
+ evt->post(this->getSinkID(), 1);
}
static bool isInvalEvent(const SkEvent& evt) {
@@ -844,7 +844,7 @@
if (fMeasureFPS && fMeasureFPS_Time) {
fMeasureFPS_Time = SkTime::GetMSecs() - fMeasureFPS_Time;
this->updateTitle();
- postInvalDelay(this->getSinkID());
+ this->postInvalDelay();
}
// if ((fScrollTestX | fScrollTestY) != 0)
@@ -928,7 +928,7 @@
}
bool SampleWindow::previousSample() {
- fCurrIndex = (fCurrIndex - 1) % fSamples.count();
+ fCurrIndex = (fCurrIndex - 1 + fSamples.count()) % fSamples.count();
this->loadView(fSamples[fCurrIndex]());
return true;
}
@@ -1428,7 +1428,7 @@
#ifdef ANDROID
// FIXME: The first draw after a size change does not work on Android, so
// we post an invalidate.
- postInvalDelay(this->getSinkID());
+ this->postInvalDelay();
#endif
this->updateTitle(); // to refresh our config
}
diff --git a/samplecode/SampleApp.h b/samplecode/SampleApp.h
index a58c688..4d16121 100644
--- a/samplecode/SampleApp.h
+++ b/samplecode/SampleApp.h
@@ -61,6 +61,7 @@
bool handleTouch(int ownerId, float x, float y,
SkView::Click::State state);
void saveToPdf();
+ void postInvalDelay();
protected:
virtual void onDraw(SkCanvas* canvas);