From 6ba8e185e905087f8993962cd69d6f7649cf9f3a Mon Sep 17 00:00:00 2001 From: oneup03 Date: Sat, 16 Mar 2024 16:48:15 -0500 Subject: [PATCH] Fix Android Build --- src/core/frontend/emu_window.cpp | 19 +++++++++++++++---- src/core/frontend/framebuffer_layout.cpp | 3 ++- .../renderer_opengl/renderer_opengl.cpp | 6 +++--- .../renderer_vulkan/renderer_vulkan.cpp | 2 +- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/core/frontend/emu_window.cpp b/src/core/frontend/emu_window.cpp index 87e6ae576..b537620da 100644 --- a/src/core/frontend/emu_window.cpp +++ b/src/core/frontend/emu_window.cpp @@ -90,16 +90,21 @@ bool EmuWindow::IsWithinTouchscreen(const Layout::FramebufferLayout& layout, uns } std::tuple EmuWindow::ClipToTouchScreen(unsigned new_x, unsigned new_y) const { + bool separate_win = false; +#ifndef ANDROID + separate_win = + (Settings::values.layout_option.GetValue() == Settings::LayoutOption::SeparateWindows); +#endif if (new_x >= framebuffer_layout.width / 2) { if (Settings::values.render_3d.GetValue() == Settings::StereoRenderOption::SideBySide && - Settings::values.layout_option.GetValue() != Settings::LayoutOption::SeparateWindows) + !separate_win) new_x -= framebuffer_layout.width / 2; else if (Settings::values.render_3d.GetValue() == Settings::StereoRenderOption::CardboardVR) new_x -= (framebuffer_layout.width / 2) - (framebuffer_layout.cardboard.user_x_shift * 2); } if (Settings::values.render_3d.GetValue() == Settings::StereoRenderOption::SideBySide && - Settings::values.layout_option.GetValue() != Settings::LayoutOption::SeparateWindows) { + !separate_win) { new_x = std::max(new_x, framebuffer_layout.bottom_screen.left / 2); new_x = std::min(new_x, framebuffer_layout.bottom_screen.right / 2 - 1); } else { @@ -127,9 +132,15 @@ bool EmuWindow::TouchPressed(unsigned framebuffer_x, unsigned framebuffer_y) { if (!IsWithinTouchscreen(framebuffer_layout, framebuffer_x, framebuffer_y)) return false; + bool separate_win = false; +#ifndef ANDROID + separate_win = + (Settings::values.layout_option.GetValue() == Settings::LayoutOption::SeparateWindows); +#endif + if (framebuffer_x >= framebuffer_layout.width / 2) { if (Settings::values.render_3d.GetValue() == Settings::StereoRenderOption::SideBySide && - Settings::values.layout_option.GetValue() != Settings::LayoutOption::SeparateWindows) + !separate_win) framebuffer_x -= framebuffer_layout.width / 2; else if (Settings::values.render_3d.GetValue() == Settings::StereoRenderOption::CardboardVR) framebuffer_x -= @@ -137,7 +148,7 @@ bool EmuWindow::TouchPressed(unsigned framebuffer_x, unsigned framebuffer_y) { } std::scoped_lock guard(touch_state->mutex); if (Settings::values.render_3d.GetValue() == Settings::StereoRenderOption::SideBySide && - Settings::values.layout_option.GetValue() != Settings::LayoutOption::SeparateWindows) { + !separate_win) { touch_state->touch_x = static_cast(framebuffer_x - framebuffer_layout.bottom_screen.left / 2) / (framebuffer_layout.bottom_screen.right / 2 - diff --git a/src/core/frontend/framebuffer_layout.cpp b/src/core/frontend/framebuffer_layout.cpp index 1c2e3b758..491762721 100644 --- a/src/core/frontend/framebuffer_layout.cpp +++ b/src/core/frontend/framebuffer_layout.cpp @@ -183,7 +183,8 @@ FramebufferLayout SingleFrameLayout(u32 width, u32 height, bool swapped, bool up if (window_aspect_ratio < emulation_aspect_ratio) { if (Settings::values.render_3d.GetValue() == Settings::StereoRenderOption::FullSideBySide && !(Settings::values.layout_option.GetValue() == - Settings::LayoutOption::SeparateWindows && swapped)) { + Settings::LayoutOption::SeparateWindows && + swapped)) { top_screen = top_screen.TranslateX( (screen_window_area.GetWidth() / 2 - top_screen.GetWidth()) / 2); bot_screen = bot_screen.TranslateX( diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index 5732e6795..f5fd53018 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp @@ -751,8 +751,8 @@ void RendererOpenGL::DrawTopScreen(const Layout::FramebufferLayout& layout, DrawSingleScreen(screen_infos[0], top_screen_left, top_screen_top, top_screen_width, top_screen_height, orientation); glUniform1i(uniform_layer, 1); - DrawSingleScreen(screen_infos[1], static_cast(top_screen_left + (layout.width / 2)), - top_screen_top, top_screen_width, top_screen_height, orientation); + DrawSingleScreen(screen_infos[1], static_cast(top_screen_left + (layout.width / 2)), + top_screen_top, top_screen_width, top_screen_height, orientation); break; } case Settings::StereoRenderOption::CardboardVR: { @@ -811,7 +811,7 @@ void RendererOpenGL::DrawBottomScreen(const Layout::FramebufferLayout& layout, } case Settings::StereoRenderOption::FullSideBySide: { DrawSingleScreen(screen_infos[2], bottom_screen_left, bottom_screen_top, - bottom_screen_width, bottom_screen_height, orientation); + bottom_screen_width, bottom_screen_height, orientation); if (Settings::values.layout_option.GetValue() != Settings::LayoutOption::SeparateWindows) { glUniform1i(uniform_layer, 1); DrawSingleScreen( diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index 69f216c84..70e462fe2 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp @@ -766,7 +766,7 @@ void RendererVulkan::DrawBottomScreen(const Layout::FramebufferLayout& layout, } case Settings::StereoRenderOption::FullSideBySide: { DrawSingleScreen(2, bottom_screen_left, bottom_screen_top, bottom_screen_width, - bottom_screen_height, orientation); + bottom_screen_height, orientation); if (Settings::values.layout_option.GetValue() != Settings::LayoutOption::SeparateWindows) { draw_info.layer = 1; DrawSingleScreen(2, static_cast(bottom_screen_left + (layout.width / 2)),