aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2018-01-16 10:29:54 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-01-16 17:12:54 +0000
commit5fb009df3c87167762b33483ee82b5fe632837a9 (patch)
tree4e975da9a15e8d5046d2e842246a66c3b5fcfb0c /tools
parentf0fe02fdc6a4adeb410f86a730527758f647a76c (diff)
Fix Viewer slide load on backend change
Currently Viewer fires unbalanced load events on backend change. Instead of calling setupCurrentSlide() with an invalid prevSlide and always forcing a slide load, pass a |force| argument on backend change. Change-Id: I146b42331f5aa9721d4f407b81c13f4512d67d61 Reviewed-on: https://skia-review.googlesource.com/94960 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/viewer/Viewer.cpp15
-rw-r--r--tools/viewer/Viewer.h2
2 files changed, 11 insertions, 6 deletions
diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp
index 59d5e50d5a..0597237e1e 100644
--- a/tools/viewer/Viewer.cpp
+++ b/tools/viewer/Viewer.cpp
@@ -609,12 +609,16 @@ void Viewer::listNames() {
}
}
-void Viewer::setupCurrentSlide(int previousSlide) {
- if (fCurrentSlide == previousSlide) {
+void Viewer::setupCurrentSlide(int previousSlide, bool force) {
+ if (fCurrentSlide == previousSlide && !force) {
return; // no change; do nothing
}
+
// prepare dimensions for image slides
- fSlides[fCurrentSlide]->load(SkIntToScalar(fWindow->width()), SkIntToScalar(fWindow->height()));
+ if (fCurrentSlide != previousSlide) {
+ fSlides[fCurrentSlide]->load(SkIntToScalar(fWindow->width()),
+ SkIntToScalar(fWindow->height()));
+ }
fGesture.resetTouchState();
fDefaultMatrix.reset();
@@ -635,7 +639,7 @@ void Viewer::setupCurrentSlide(int previousSlide) {
this->updateTitle();
this->updateUIState();
- if (previousSlide >= 0) {
+ if (previousSlide >= 0 && fCurrentSlide != previousSlide) {
fSlides[previousSlide]->unload();
}
@@ -823,7 +827,8 @@ void Viewer::drawSlide(SkCanvas* canvas) {
void Viewer::onBackendCreated() {
this->updateTitle();
this->updateUIState();
- this->setupCurrentSlide(-1);
+ // Force slide setup without reload.
+ this->setupCurrentSlide(fCurrentSlide, true);
fStatsLayer.resetMeasurements();
fWindow->show();
fWindow->inval();
diff --git a/tools/viewer/Viewer.h b/tools/viewer/Viewer.h
index 7d4980cf0e..956427782a 100644
--- a/tools/viewer/Viewer.h
+++ b/tools/viewer/Viewer.h
@@ -50,7 +50,7 @@ private:
void setBackend(sk_app::Window::BackendType);
void setColorMode(ColorMode);
void setStartupSlide();
- void setupCurrentSlide(int previousSlide);
+ void setupCurrentSlide(int previousSlide, bool force = false);
void listNames();
void updateUIState();