aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2017-12-20 11:58:34 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-20 17:54:46 +0000
commit16c81a1ee9e2b90b97d73a1f08b03bebfadfbc81 (patch)
tree9031d6e0b5cdb02cd5290bb459589af7d3650812 /tools
parent5fc3065ef62554b5c1b41fc28d822f07c3310182 (diff)
Avoid redrawing every time the mouse moves
Bug: skia: Change-Id: Idc74e6c7e50f8d416d716ee666b37b52792c7c4b Reviewed-on: https://skia-review.googlesource.com/87789 Reviewed-by: Jim Van Verth <jvanverth@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/viewer/Viewer.cpp43
1 files changed, 25 insertions, 18 deletions
diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp
index 0baa409acd..1f701e25b3 100644
--- a/tools/viewer/Viewer.cpp
+++ b/tools/viewer/Viewer.cpp
@@ -847,27 +847,34 @@ bool Viewer::onTouch(intptr_t owner, Window::InputState state, float x, float y)
}
bool Viewer::onMouse(int x, int y, Window::InputState state, uint32_t modifiers) {
- if (!fSlides[fCurrentSlide]->onMouse(x, y, state, modifiers)) {
- if (GestureDevice::kTouch == fGestureDevice) {
- return false;
+ if (GestureDevice::kTouch == fGestureDevice) {
+ return false;
+ }
+
+ if (fSlides[fCurrentSlide]->onMouse(x, y, state, modifiers)) {
+ fWindow->inval();
+ return true;
+ }
+
+ switch (state) {
+ case Window::kUp_InputState: {
+ fGesture.touchEnd(nullptr);
+ break;
}
- switch (state) {
- case Window::kUp_InputState: {
- fGesture.touchEnd(nullptr);
- break;
- }
- case Window::kDown_InputState: {
- fGesture.touchBegin(nullptr, x, y);
- break;
- }
- case Window::kMove_InputState: {
- fGesture.touchMoved(nullptr, x, y);
- break;
- }
+ case Window::kDown_InputState: {
+ fGesture.touchBegin(nullptr, x, y);
+ break;
+ }
+ case Window::kMove_InputState: {
+ fGesture.touchMoved(nullptr, x, y);
+ break;
}
- fGestureDevice = fGesture.isBeingTouched() ? GestureDevice::kMouse : GestureDevice::kNone;
}
- fWindow->inval();
+ fGestureDevice = fGesture.isBeingTouched() ? GestureDevice::kMouse : GestureDevice::kNone;
+
+ if (state != Window::kMove_InputState || fGesture.isBeingTouched()) {
+ fWindow->inval();
+ }
return true;
}