From 325dc01757b8d3658d9e3c35bdbb11fe752538ea Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sat, 20 Jul 2024 02:17:22 +0300 Subject: [PATCH] Separate show_mouse and relative_mouse_mode --- libs/android/source/native_app.cpp | 1 + libs/app/include/psemek/app/application.hpp | 1 + libs/sdl2/include/psemek/sdl2/window.hpp | 1 + libs/sdl2/source/main.cpp | 1 + libs/sdl2/source/window.cpp | 7 ++++++- 5 files changed, 10 insertions(+), 1 deletion(-) diff --git a/libs/android/source/native_app.cpp b/libs/android/source/native_app.cpp index e7e94b43..182c84f6 100644 --- a/libs/android/source/native_app.cpp +++ b/libs/android/source/native_app.cpp @@ -72,6 +72,7 @@ extern "C" jlong Java_psemek_app_PsemekApplication_createNativeApp(JNIEnv * env, psemek::app::application::context context; context.show_cursor = [](bool){}; context.vsync = [](bool){}; + context.relative_mouse_mode = [](bool){}; context.windowed = [](bool){}; auto app = factory->create(factory->options(), context).release(); diff --git a/libs/app/include/psemek/app/application.hpp b/libs/app/include/psemek/app/application.hpp index fd447277..abe327a4 100644 --- a/libs/app/include/psemek/app/application.hpp +++ b/libs/app/include/psemek/app/application.hpp @@ -34,6 +34,7 @@ namespace psemek::app { std::vector args; std::function show_cursor; + std::function relative_mouse_mode; std::function windowed; #if defined(PSEMEK_APP_OPENGL) std::function vsync; diff --git a/libs/sdl2/include/psemek/sdl2/window.hpp b/libs/sdl2/include/psemek/sdl2/window.hpp index 53f84f81..9109fe51 100644 --- a/libs/sdl2/include/psemek/sdl2/window.hpp +++ b/libs/sdl2/include/psemek/sdl2/window.hpp @@ -23,6 +23,7 @@ namespace psemek::sdl2 void show(); void swap(); void show_cursor(bool show); + void relative_mouse_mode(bool mode); void vsync(bool on); void windowed(bool on); diff --git a/libs/sdl2/source/main.cpp b/libs/sdl2/source/main.cpp index e2dce60b..3fc3bd5c 100644 --- a/libs/sdl2/source/main.cpp +++ b/libs/sdl2/source/main.cpp @@ -46,6 +46,7 @@ int main(int argc, char ** argv) try for (int i = 0; i < argc; ++i) context.args.push_back(argv[i]); context.show_cursor = [&](bool show){ window.show_cursor(show); }; + context.relative_mouse_mode = [&](bool mode){ window.relative_mouse_mode(mode); }; context.windowed = [&](bool on){ window.windowed(on); }; #if defined(PSEMEK_SDL2_OPENGL) diff --git a/libs/sdl2/source/window.cpp b/libs/sdl2/source/window.cpp index d2f2bf9b..5fac6d40 100644 --- a/libs/sdl2/source/window.cpp +++ b/libs/sdl2/source/window.cpp @@ -163,7 +163,12 @@ namespace psemek::sdl2 { log::info() << (show ? "Cursor shown" : "Cursor hidden"); SDL_ShowCursor(show ? SDL_TRUE : SDL_FALSE); - SDL_SetRelativeMouseMode(show ? SDL_FALSE : SDL_TRUE); + } + + void window::relative_mouse_mode(bool mode) + { + log::info() << "Relative mouse mode " << (mode ? "on" : "off"); + SDL_SetRelativeMouseMode(mode ? SDL_TRUE: SDL_FALSE); } void window::vsync(bool on)