From 3e2614148353342284b06899080e4707804eecf5 Mon Sep 17 00:00:00 2001
From: san <san+gitkraken@smederijmerlijn.nl>
Date: Sun, 1 Aug 2021 21:46:13 +0200
Subject: [PATCH] yuzu-cmd: hide cursor when in fullscreen

Exposed the SDL_ShowCursor function to EmuWindow baseclass. When creating the window (GL or VK) in fullscreen it now automatically hides the cursor.
---
 src/yuzu_cmd/emu_window/emu_window_sdl2.cpp    | 4 ++++
 src/yuzu_cmd/emu_window/emu_window_sdl2.h      | 3 +++
 src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp | 1 +
 src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp | 1 +
 4 files changed, 9 insertions(+)

diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp
index f643a4b0b0..c80f7791c5 100644
--- a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp
+++ b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp
@@ -122,6 +122,10 @@ void EmuWindow_SDL2::OnResize() {
     UpdateCurrentFramebufferLayout(width, height);
 }
 
+void EmuWindow_SDL2::ShowCursor(bool show_cursor) {
+    SDL_ShowCursor(show_cursor ? SDL_ENABLE : SDL_DISABLE);
+}
+
 void EmuWindow_SDL2::Fullscreen() {
     switch (Settings::values.fullscreen_mode.GetValue()) {
     case Settings::FullscreenMode::Exclusive:
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2.h b/src/yuzu_cmd/emu_window/emu_window_sdl2.h
index aa0d52ae42..4810f87755 100644
--- a/src/yuzu_cmd/emu_window/emu_window_sdl2.h
+++ b/src/yuzu_cmd/emu_window/emu_window_sdl2.h
@@ -67,6 +67,9 @@ protected:
     /// Called by WaitEvent when any event that may cause the window to be resized occurs
     void OnResize();
 
+    /// Called when users want to hide the mouse cursor
+    void ShowCursor(bool show_cursor);
+
     /// Called when user passes the fullscreen parameter flag
     void Fullscreen();
 
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp
index 5b98c255ba..a075ad08ae 100644
--- a/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp
+++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp
@@ -111,6 +111,7 @@ EmuWindow_SDL2_GL::EmuWindow_SDL2_GL(InputCommon::InputSubsystem* input_subsyste
 
     if (fullscreen) {
         Fullscreen();
+        ShowCursor(false);
     }
 
     window_context = SDL_GL_CreateContext(render_window);
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp
index cdda375d8d..de40b76bf0 100644
--- a/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp
+++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp
@@ -45,6 +45,7 @@ EmuWindow_SDL2_VK::EmuWindow_SDL2_VK(InputCommon::InputSubsystem* input_subsyste
 
     if (fullscreen) {
         Fullscreen();
+        ShowCursor(false);
     }
 
     switch (wm.subsystem) {