mirror of
https://github.com/citra-emu/citra.git
synced 2024-12-18 19:40:05 +00:00
android: frontend: Track screen layout separately for orientation.
android framebuffer
This commit is contained in:
parent
e8f57d7e3c
commit
b7a156f7c8
@ -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…
Reference in New Issue
Block a user