diff options
author | adityaruplaha <adi24360526@gmail.com> | 2018-04-21 09:52:34 +0200 |
---|---|---|
committer | adityaruplaha <adi24360526@gmail.com> | 2018-04-21 09:54:33 +0200 |
commit | f48d5e4c4c03ffc8c374b2ec5a2d2455050bbf8a (patch) | |
tree | 551cdec2d10712ab347dc204ceb0340f8fa29b9f /src/yuzu_cmd/emu_window | |
parent | Merge pull request #323 from Hexagon12/stub-hid (diff) | |
download | yuzu-f48d5e4c4c03ffc8c374b2ec5a2d2455050bbf8a.tar yuzu-f48d5e4c4c03ffc8c374b2ec5a2d2455050bbf8a.tar.gz yuzu-f48d5e4c4c03ffc8c374b2ec5a2d2455050bbf8a.tar.bz2 yuzu-f48d5e4c4c03ffc8c374b2ec5a2d2455050bbf8a.tar.lz yuzu-f48d5e4c4c03ffc8c374b2ec5a2d2455050bbf8a.tar.xz yuzu-f48d5e4c4c03ffc8c374b2ec5a2d2455050bbf8a.tar.zst yuzu-f48d5e4c4c03ffc8c374b2ec5a2d2455050bbf8a.zip |
Diffstat (limited to 'src/yuzu_cmd/emu_window')
-rw-r--r-- | src/yuzu_cmd/emu_window/emu_window_sdl2.cpp | 27 | ||||
-rw-r--r-- | src/yuzu_cmd/emu_window/emu_window_sdl2.h | 5 |
2 files changed, 30 insertions, 2 deletions
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp index 3d7cd06a4..36d40a9b5 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp @@ -56,7 +56,28 @@ void EmuWindow_SDL2::OnResize() { UpdateCurrentFramebufferLayout(width, height); } -EmuWindow_SDL2::EmuWindow_SDL2() { +void EmuWindow_SDL2::Fullscreen() { + if (SDL_SetWindowFullscreen(render_window, SDL_WINDOW_FULLSCREEN) == 0) { + return; + } + + NGLOG_ERROR(Frontend, "Fullscreening failed: {}", SDL_GetError()); + + // Try a different fullscreening method + NGLOG_INFO(Frontend, "Attempting to use borderless fullscreen..."); + if (SDL_SetWindowFullscreen(render_window, SDL_WINDOW_FULLSCREEN_DESKTOP) == 0) { + return; + } + + NGLOG_ERROR(Frontend, "Borderless fullscreening failed: {}", SDL_GetError()); + + // Fallback algorithm: Maximise window. + // Works on all systems (unless something is seriously wrong), so no fallback for this one. + NGLOG_INFO(Frontend, "Falling back on a maximised window..."); + SDL_MaximizeWindow(render_window); +} + +EmuWindow_SDL2::EmuWindow_SDL2(bool fullscreen) { InputCommon::Init(); SDL_SetMainReady(); @@ -90,6 +111,10 @@ EmuWindow_SDL2::EmuWindow_SDL2() { exit(1); } + if (fullscreen) { + Fullscreen(); + } + gl_context = SDL_GL_CreateContext(render_window); if (gl_context == nullptr) { diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2.h b/src/yuzu_cmd/emu_window/emu_window_sdl2.h index 3664d2fbe..7d5cfffb6 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2.h +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2.h @@ -12,7 +12,7 @@ struct SDL_Window; class EmuWindow_SDL2 : public EmuWindow { public: - EmuWindow_SDL2(); + explicit EmuWindow_SDL2(bool fullscreen); ~EmuWindow_SDL2(); /// Swap buffers to display the next frame @@ -43,6 +43,9 @@ private: /// Called by PollEvents when any event that may cause the window to be resized occurs void OnResize(); + /// Called when user passes the fullscreen parameter flag + void Fullscreen(); + /// Called when a configuration change affects the minimal size of the window void OnMinimalClientAreaChangeRequest( const std::pair<unsigned, unsigned>& minimal_size) override; |