diff options
author | 2017-12-20 11:58:34 -0500 | |
---|---|---|
committer | 2017-12-20 17:54:46 +0000 | |
commit | 16c81a1ee9e2b90b97d73a1f08b03bebfadfbc81 (patch) | |
tree | 9031d6e0b5cdb02cd5290bb459589af7d3650812 /tools | |
parent | 5fc3065ef62554b5c1b41fc28d822f07c3310182 (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.cpp | 43 |
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; } |