diff options
author | Zaneo <gareth.higgins@ryerson.ca> | 2015-04-14 06:06:44 +0200 |
---|---|---|
committer | Zaneo <gareth.higgins@ryerson.ca> | 2015-05-02 05:52:33 +0200 |
commit | b8328593fe3d60ecb066ad0959d8c1e8dfb4d3c5 (patch) | |
tree | fdeec9f5d356b84f21c92ddb4b469aedb11e93db /src/common/emu_window.cpp | |
parent | Merge pull request #715 from purpasmart96/configmem_typo_fix (diff) | |
download | yuzu-b8328593fe3d60ecb066ad0959d8c1e8dfb4d3c5.tar yuzu-b8328593fe3d60ecb066ad0959d8c1e8dfb4d3c5.tar.gz yuzu-b8328593fe3d60ecb066ad0959d8c1e8dfb4d3c5.tar.bz2 yuzu-b8328593fe3d60ecb066ad0959d8c1e8dfb4d3c5.tar.lz yuzu-b8328593fe3d60ecb066ad0959d8c1e8dfb4d3c5.tar.xz yuzu-b8328593fe3d60ecb066ad0959d8c1e8dfb4d3c5.tar.zst yuzu-b8328593fe3d60ecb066ad0959d8c1e8dfb4d3c5.zip |
Diffstat (limited to 'src/common/emu_window.cpp')
-rw-r--r-- | src/common/emu_window.cpp | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/common/emu_window.cpp b/src/common/emu_window.cpp index 6516fc633..f5b6c7301 100644 --- a/src/common/emu_window.cpp +++ b/src/common/emu_window.cpp @@ -28,6 +28,17 @@ static bool IsWithinTouchscreen(const EmuWindow::FramebufferLayout& layout, unsi framebuffer_x < layout.bottom_screen.right); } +std::tuple<unsigned,unsigned> EmuWindow::ClipToTouchScreen(unsigned new_x, unsigned new_y) { + + new_x = std::max(new_x, framebuffer_layout.bottom_screen.left); + new_x = std::min(new_x, framebuffer_layout.bottom_screen.right-1); + + new_y = std::max(new_y, framebuffer_layout.bottom_screen.top); + new_y = std::min(new_y, framebuffer_layout.bottom_screen.bottom-1); + + return std::make_tuple(new_x, new_y); +} + void EmuWindow::TouchPressed(unsigned framebuffer_x, unsigned framebuffer_y) { if (!IsWithinTouchscreen(framebuffer_layout, framebuffer_x, framebuffer_y)) return; @@ -52,14 +63,13 @@ void EmuWindow::TouchMoved(unsigned framebuffer_x, unsigned framebuffer_y) { if (!touch_pressed) return; - if (IsWithinTouchscreen(framebuffer_layout, framebuffer_x, framebuffer_y)) - TouchPressed(framebuffer_x, framebuffer_y); - else - TouchReleased(); + if (!IsWithinTouchscreen(framebuffer_layout, framebuffer_x, framebuffer_y)) + std::tie(framebuffer_x, framebuffer_y) = ClipToTouchScreen(framebuffer_x, framebuffer_y); + + TouchPressed(framebuffer_x, framebuffer_y); } -EmuWindow::FramebufferLayout EmuWindow::FramebufferLayout::DefaultScreenLayout(unsigned width, - unsigned height) { +EmuWindow::FramebufferLayout EmuWindow::FramebufferLayout::DefaultScreenLayout(unsigned width, unsigned height) { ASSERT(width > 0); ASSERT(height > 0); |