android: frontend: Track screen layout separately for orientation.
android framebuffer
This commit is contained in:
		| @@ -145,7 +145,8 @@ void EmuWindow::TouchMoved(unsigned framebuffer_x, unsigned framebuffer_y) { | ||||
|     TouchPressed(framebuffer_x, framebuffer_y); | ||||
| } | ||||
|  | ||||
| void EmuWindow::UpdateCurrentFramebufferLayout(unsigned width, unsigned height) { | ||||
| void EmuWindow::UpdateCurrentFramebufferLayout(unsigned width, unsigned height, | ||||
|                                                bool is_portrait_mode) { | ||||
|     Layout::FramebufferLayout layout; | ||||
|     const auto layout_option = Settings::values.layout_option; | ||||
|     const auto min_size = | ||||
| @@ -156,6 +157,12 @@ void EmuWindow::UpdateCurrentFramebufferLayout(unsigned width, unsigned height) | ||||
|     } else { | ||||
|         width = std::max(width, min_size.first); | ||||
|         height = std::max(height, min_size.second); | ||||
|  | ||||
|         // If in portrait mode, only the MobilePortrait option really makes sense | ||||
|         const Settings::LayoutOption layout_option = is_portrait_mode | ||||
|                                                          ? Settings::LayoutOption::MobilePortrait | ||||
|                                                          : Settings::values.layout_option; | ||||
|  | ||||
|         switch (layout_option) { | ||||
|         case Settings::LayoutOption::SingleScreen: | ||||
|             layout = Layout::SingleFrameLayout(width, height, Settings::values.swap_screen, | ||||
|   | ||||
| @@ -159,7 +159,8 @@ public: | ||||
|      * Convenience method to update the current frame layout | ||||
|      * Read from the current settings to determine which layout to use. | ||||
|      */ | ||||
|     void UpdateCurrentFramebufferLayout(unsigned width, unsigned height); | ||||
|     void UpdateCurrentFramebufferLayout(unsigned width, unsigned height, | ||||
|                                         bool is_portrait_mode = {}); | ||||
|  | ||||
|     std::unique_ptr<TextureMailbox> mailbox = nullptr; | ||||
|  | ||||
|   | ||||
| @@ -33,9 +33,11 @@ void Apply() { | ||||
|     VideoCore::g_hw_shader_accurate_mul = values.shaders_accurate_mul; | ||||
|     VideoCore::g_use_disk_shader_cache = values.use_disk_shader_cache; | ||||
|  | ||||
| #ifndef ANDROID | ||||
|     if (VideoCore::g_renderer) { | ||||
|         VideoCore::g_renderer->UpdateCurrentFramebufferLayout(); | ||||
|     } | ||||
| #endif | ||||
|  | ||||
|     VideoCore::g_renderer_bg_color_update_requested = true; | ||||
|     VideoCore::g_renderer_sampler_update_requested = true; | ||||
|   | ||||
| @@ -11,9 +11,9 @@ | ||||
|  | ||||
| RendererBase::RendererBase(Frontend::EmuWindow& window) : render_window{window} {} | ||||
| RendererBase::~RendererBase() = default; | ||||
| void RendererBase::UpdateCurrentFramebufferLayout() { | ||||
| void RendererBase::UpdateCurrentFramebufferLayout(bool is_portrait_mode) { | ||||
|     const Layout::FramebufferLayout& layout = render_window.GetFramebufferLayout(); | ||||
|     render_window.UpdateCurrentFramebufferLayout(layout.width, layout.height); | ||||
|     render_window.UpdateCurrentFramebufferLayout(layout.width, layout.height, is_portrait_mode); | ||||
| } | ||||
|  | ||||
| void RendererBase::RefreshRasterizerSetting() { | ||||
|   | ||||
| @@ -38,7 +38,7 @@ public: | ||||
|     virtual void CleanupVideoDumping() = 0; | ||||
|  | ||||
|     /// Updates the framebuffer layout of the contained render window handle. | ||||
|     void UpdateCurrentFramebufferLayout(); | ||||
|     void UpdateCurrentFramebufferLayout(bool is_portrait_mode = {}); | ||||
|  | ||||
|     // Getter/setter functions: | ||||
|     // ------------------------ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user