diff options
author | Florin Malita <fmalita@chromium.org> | 2018-01-16 10:29:54 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-01-16 17:12:54 +0000 |
commit | 5fb009df3c87167762b33483ee82b5fe632837a9 (patch) | |
tree | 4e975da9a15e8d5046d2e842246a66c3b5fcfb0c /tools | |
parent | f0fe02fdc6a4adeb410f86a730527758f647a76c (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.cpp | 15 | ||||
-rw-r--r-- | tools/viewer/Viewer.h | 2 |
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(); |