summaryrefslogtreecommitdiffstats
path: root/src/common/emu_window.cpp
diff options
context:
space:
mode:
authorZaneo <gareth.higgins@ryerson.ca>2015-04-14 06:06:44 +0200
committerZaneo <gareth.higgins@ryerson.ca>2015-05-02 05:52:33 +0200
commitb8328593fe3d60ecb066ad0959d8c1e8dfb4d3c5 (patch)
treefdeec9f5d356b84f21c92ddb4b469aedb11e93db /src/common/emu_window.cpp
parentMerge pull request #715 from purpasmart96/configmem_typo_fix (diff)
downloadyuzu-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.cpp22
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);