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