diff options
author | Tony Wasserka <NeoBrainX@gmail.com> | 2014-10-12 22:46:33 +0200 |
---|---|---|
committer | Tony Wasserka <NeoBrainX@gmail.com> | 2014-11-18 13:09:01 +0100 |
commit | 722ce2258949c5edf81c946faedfd040efeb38a6 (patch) | |
tree | b935bde50743dd5638ea6fa2774db25ad3c174e1 /src/citra/emu_window | |
parent | Fixup EmuWindow interface and implementations thereof. (diff) | |
download | yuzu-722ce2258949c5edf81c946faedfd040efeb38a6.tar yuzu-722ce2258949c5edf81c946faedfd040efeb38a6.tar.gz yuzu-722ce2258949c5edf81c946faedfd040efeb38a6.tar.bz2 yuzu-722ce2258949c5edf81c946faedfd040efeb38a6.tar.lz yuzu-722ce2258949c5edf81c946faedfd040efeb38a6.tar.xz yuzu-722ce2258949c5edf81c946faedfd040efeb38a6.tar.zst yuzu-722ce2258949c5edf81c946faedfd040efeb38a6.zip |
Diffstat (limited to '')
-rw-r--r-- | src/citra/emu_window/emu_window_glfw.cpp | 21 | ||||
-rw-r--r-- | src/citra/emu_window/emu_window_glfw.h | 2 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/citra/emu_window/emu_window_glfw.cpp b/src/citra/emu_window/emu_window_glfw.cpp index 28aa3450c..7e1e1c9a6 100644 --- a/src/citra/emu_window/emu_window_glfw.cpp +++ b/src/citra/emu_window/emu_window_glfw.cpp @@ -46,6 +46,15 @@ void EmuWindow_GLFW::OnClientAreaResizeEvent(GLFWwindow* win, int width, int hei _dbg_assert_(GUI, width > 0); _dbg_assert_(GUI, height > 0); + // TODO: It's actually more interesting to us what the framebuffer size ends up being. + int adjusted_width = std::max<unsigned>(width, GetEmuWindow(win)->GetActiveConfig().min_client_area_size.first); + int adjusted_height = std::max<unsigned>(height, GetEmuWindow(win)->GetActiveConfig().min_client_area_size.second); + + if (adjusted_width != width || adjusted_height != height) { + glfwSetWindowSize(win, adjusted_width, adjusted_height); + return; + } + GetEmuWindow(win)->NotifyClientAreaSizeChanged(std::pair<unsigned,unsigned>(width, height)); } @@ -136,3 +145,15 @@ void EmuWindow_GLFW::ReloadSetKeymaps() { KeyMap::SetKeyMapping({Settings::values.pad_sup_key, keyboard_id}, HID_User::PAD_CIRCLE_UP); KeyMap::SetKeyMapping({Settings::values.pad_sdown_key, keyboard_id}, HID_User::PAD_CIRCLE_DOWN); } + +void EmuWindow_GLFW::OnMinimalClientAreaChangeRequest(const std::pair<unsigned,unsigned>& minimal_size) { + std::pair<int,int> current_size; + glfwGetWindowSize(m_render_window, ¤t_size.first, ¤t_size.second); + + _dbg_assert_(GUI, (int)minimal_size.first > 0 && (int)minimal_size.second > 0); + int new_width = std::max(current_size.first, (int)minimal_size.first); + int new_height = std::max(current_size.second, (int)minimal_size.second); + + if (current_size != std::make_pair(new_width, new_height)) + glfwSetWindowSize(m_render_window, new_width, new_height); +} diff --git a/src/citra/emu_window/emu_window_glfw.h b/src/citra/emu_window/emu_window_glfw.h index 0da688a54..61cef4e65 100644 --- a/src/citra/emu_window/emu_window_glfw.h +++ b/src/citra/emu_window/emu_window_glfw.h @@ -37,6 +37,8 @@ public: void ReloadSetKeymaps() override; private: + void OnMinimalClientAreaChangeRequest(const std::pair<unsigned,unsigned>& minimal_size) override; + static EmuWindow_GLFW* GetEmuWindow(GLFWwindow* win); GLFWwindow* m_render_window; ///< Internal GLFW render window |