From 74a2ff028c1c9687a08ff8b672ff48f27aa5cda9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 5 Dec 2020 18:21:34 +0100 Subject: [PATCH] source/Display/Display.cpp: Use the new display api that does not require recreating the display. --- source/Display/Display.cpp | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/source/Display/Display.cpp b/source/Display/Display.cpp index 24ced50..0691360 100644 --- a/source/Display/Display.cpp +++ b/source/Display/Display.cpp @@ -98,28 +98,29 @@ void Display::setSize(unsigned int width, unsigned int height) void Display::setVideoMode(Mode mode) { - DisplayDescription desc; - if (m_fmode == mode) { return; } - if (mode == FULLSCREEN || mode == WINDOWEDFULLSCREEN) { - - // True fullscreen - if (mode == FULLSCREEN) { - desc.mode = m_description.mode; - } else { - desc.mode = DisplayMode::getDesktopMode(); - m_cacheDesc = m_description; - } - - desc.decoration = DisplayDecorate::None; - } else { - desc = m_cacheDesc; + if (mode != FULLSCREEN) { + m_impl->exitFullscreen(); } - create(desc); + // True fullscreen + if (mode == FULLSCREEN) { + m_impl->enterFullscreen(m_description.mode); + } + // Windowed fullscreen. + else if (mode == WINDOWEDFULLSCREEN) { + DisplayMode desktop = DisplayMode::getDesktopMode(); + m_impl->setDecoration(DisplayDecorate::None); + m_impl->setSize(desktop.width, desktop.height); + } + // Window mode. + else { + // Set stored decoration. + m_impl->setDecoration(m_description.decoration); + } m_fmode = mode; }