mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 22:00:05 +00:00 
			
		
		
		
	android: frontend: Track screen layout separately for orientation.
android framebuffer
This commit is contained in:
		
							parent
							
								
									e8f57d7e3c
								
							
						
					
					
						commit
						b7a156f7c8
					
				
					 5 changed files with 15 additions and 5 deletions
				
			
		|  | @ -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:
 | ||||||
|     // ------------------------
 |     // ------------------------
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue