1
0

3 Komitmen 405949e1a7 ... 3a73fe4f74

Pembuat SHA1 Pesan Tanggal
  kiwec 3a73fe4f74 Build on Windows 4 bulan lalu
  kiwec aba5a673a5 Update default value of some convars 4 bulan lalu
  kiwec 852ab7d109 Make auto-updater handle win32, linux builds 4 bulan lalu

+ 6 - 4
neosu.vcxproj

@@ -96,7 +96,7 @@
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <AdditionalOptions>/VERBOSE:LIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;Ole32.lib;Uuid.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <IgnoreSpecificDefaultLibraries>LIBCMT.lib</IgnoreSpecificDefaultLibraries>
       <SubSystem>Windows</SubSystem>
     </Link>
@@ -125,7 +125,7 @@ copy $(SolutionDir)libraries\libcurl\curl-ca-bundle.crt $(SolutionDir)build\$(Pl
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;Ole32.lib;Uuid.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <IgnoreSpecificDefaultLibraries>LIBCMT.lib</IgnoreSpecificDefaultLibraries>
       <SubSystem>Windows</SubSystem>
     </Link>
@@ -156,7 +156,7 @@ copy $(SolutionDir)libraries\libcurl\curl-ca-bundle.crt $(SolutionDir)build\$(Pl
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalOptions>/VERBOSE:LIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;Ole32.lib;Uuid.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <IgnoreSpecificDefaultLibraries>LIBCMT.lib</IgnoreSpecificDefaultLibraries>
       <SubSystem>Windows</SubSystem>
     </Link>
@@ -186,7 +186,7 @@ copy $(SolutionDir)libraries\libcurl\curl-ca-bundle.crt $(SolutionDir)build\$(Pl
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>wbemuuid.lib;ntdll.lib;Shlwapi.lib;userenv.lib;oleaut32.lib;winmm.lib;ws2_32.lib;psapi.lib;Comdlg32.lib;Dwmapi.lib;comctl32.lib;OpenGL32.lib;glu32.lib;Ole32.lib;Uuid.lib;libraries\bass\$(Platform)\bass.lib;libraries\bassfx\$(Platform)\bass_fx.lib;libraries\bassasio\$(Platform)\bassasio.lib;libraries\bassloud\$(Platform)\bassloud.lib;libraries\bassmix\$(Platform)\bassmix.lib;libraries\basswasapi\$(Platform)\basswasapi.lib;libraries\rosu-pp-c\$(Platform)\rosu_pp_c.lib;libraries\discord-rpc\$(Platform)\discord-rpc.lib;libraries\freetype\$(Platform)\freetype.lib;libraries\libjpeg\$(Platform)\jpeg-static.lib;libraries\xinput\$(Platform)\libxinput9_1_0.a;libraries\libcurl\$(Platform)\libcurl.dll.a;libraries\lzma\$(Platform)\liblzma.a;libraries\glew\$(Platform)\glew32s.lib;libraries\glew\$(Platform)\glew32mxs.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <IgnoreSpecificDefaultLibraries>LIBCMT.lib</IgnoreSpecificDefaultLibraries>
       <SubSystem>Windows</SubSystem>
     </Link>
@@ -216,6 +216,7 @@ copy $(SolutionDir)libraries\libcurl\curl-ca-bundle.crt $(SolutionDir)build\$(Pl
     <ClCompile Include="src\app\osu\Beatmap.cpp" />
     <ClCompile Include="src\app\osu\Changelog.cpp" />
     <ClCompile Include="src\app\osu\Chat.cpp" />
+    <ClCompile Include="src\App\Osu\ChatLink.cpp" />
     <ClCompile Include="src\app\osu\Circle.cpp" />
     <ClCompile Include="src\app\osu\Collections.cpp" />
     <ClCompile Include="src\app\osu\Database.cpp" />
@@ -673,6 +674,7 @@ copy $(SolutionDir)libraries\libcurl\curl-ca-bundle.crt $(SolutionDir)build\$(Pl
     <ClInclude Include="src\app\osu\Beatmap.h" />
     <ClInclude Include="src\app\osu\Changelog.h" />
     <ClInclude Include="src\app\osu\Chat.h" />
+    <ClInclude Include="src\App\Osu\ChatLink.h" />
     <ClInclude Include="src\app\osu\Circle.h" />
     <ClInclude Include="src\app\osu\Collections.h" />
     <ClInclude Include="src\app\osu\Database.h" />

+ 1 - 1
src/App/Osu/BanchoNetworking.h

@@ -11,7 +11,7 @@
 #define NEOSU_STREAM "release"
 #endif
 
-#define NEOSU_UPDATE_URL "https://neosu.net"
+#define NEOSU_URL "https://neosu.net"
 
 // NOTE: Full version can be something like "b20200201.2cuttingedge"
 #define OSU_VERSION "b20240425.2"

+ 1 - 1
src/App/Osu/HitObject.cpp

@@ -83,7 +83,7 @@ ConVar osu_mod_approach_different_style(
     "Decelerate1, 8 = Decelerate2, 9 = Decelerate3");
 
 ConVar osu_relax_offset(
-    "osu_relax_offset", 0, FCVAR_DEFAULT,
+    "osu_relax_offset", -12, FCVAR_DEFAULT,
     "osu!relax always hits -12 ms too early, so set this to -12 (note the negative) if you want it to be the same");
 
 ConVar *HitObject::m_osu_approach_scale_multiplier_ref = &osu_approach_scale_multiplier;

+ 14 - 1
src/App/Osu/MainMenu.cpp

@@ -212,10 +212,23 @@ MainMenu::MainMenu() : OsuScreen() {
             if(versionFile.canRead()) {
                 float version = std::stof(versionFile.readLine());
                 if(version < Osu::version->getFloat() - 0.0001f) m_bDrawVersionNotificationArrow = true;
-                if(version < 34.05) {
+                if(version < 35.06) {
                     // SoundEngine choking issues have been fixed, option has been removed from settings menu
                     // We leave the cvar available as it could still be useful for some players
                     convar->getConVarByName("restart_sound_engine_before_playing")->setValue(false);
+
+                    // 0.5 is shit default value
+                    auto search_delay = convar->getConVarByName("osu_songbrowser_search_delay");
+                    if(search_delay->getFloat() == 0.5f) {
+                        search_delay->setValue(0.2f);
+                    }
+
+                    // Match osu!stable value
+                    auto relax_offset = convar->getConVarByName("osu_relax_offset");
+                    if(relax_offset->getFloat() == 0.f) {
+                        relax_offset->setValue(-12.f);
+                    }
+
                     osu->getOptionsMenu()->save();
                 }
             } else {

+ 6 - 0
src/App/Osu/OptionsMenu.cpp

@@ -2427,6 +2427,9 @@ void OptionsMenu::onSkinSelect() {
             char la = tolower(a[i]);
             char lb = tolower(b[j]);
             if(la != lb) return la < lb;
+
+            i++;
+            j++;
         }
 
         return false;
@@ -3607,9 +3610,12 @@ void OptionsMenu::save() {
     std::vector<ConVar *> manualConVars;
     std::vector<ConVar *> removeConCommands;
 
+    manualConVars.push_back(convar->getConVarByName("osu_relax_offset"));
     manualConVars.push_back(convar->getConVarByName("osu_songbrowser_sortingtype"));
     manualConVars.push_back(convar->getConVarByName("osu_songbrowser_scores_sortingtype"));
+    manualConVars.push_back(convar->getConVarByName("osu_songbrowser_search_delay"));
     manualConVars.push_back(convar->getConVarByName("mp_autologin"));
+    manualConVars.push_back(convar->getConVarByName("restart_sound_engine_before_playing"));
     manualConVars.push_back(m_osu_notelock_type_ref);
     manualConVars.push_back(m_osu_drain_type_ref);
 

+ 3 - 3
src/App/Osu/Osu.cpp

@@ -148,7 +148,7 @@ ConVar restart_sound_engine_before_playing("restart_sound_engine_before_playing"
 ConVar instafade("instafade", false, FCVAR_DEFAULT, "don't draw hitcircle fadeout animations");
 
 ConVar use_https("use_https", true, FCVAR_DEFAULT);
-ConVar mp_server("mp_server", "ez-pp.farm", FCVAR_DEFAULT);
+ConVar mp_server("mp_server", "akatsuki.gg", FCVAR_DEFAULT);
 ConVar mp_password("mp_password", "", FCVAR_DEFAULT | FCVAR_HIDDEN);
 ConVar mp_autologin("mp_autologin", false, FCVAR_DEFAULT);
 ConVar submit_scores("submit_scores", false, FCVAR_DEFAULT);
@@ -178,7 +178,7 @@ Osu::Osu() {
 
     bancho.neosu_version = UString::format("%.2f-" NEOSU_STREAM, osu_version.getFloat());
     bancho.user_agent =
-        UString::format("Mozilla/5.0 (compatible; neosu/%s; +" NEOSU_UPDATE_URL "/)", bancho.neosu_version.toUtf8());
+        UString::format("Mozilla/5.0 (compatible; neosu/%s; +" NEOSU_URL "/)", bancho.neosu_version.toUtf8());
 
     // convar refs
     m_osu_folder_ref = convar->getConVarByName("osu_folder");
@@ -449,8 +449,8 @@ Osu::Osu() {
     m_songBrowser2 = new SongBrowser();
     m_volumeOverlay = new VolumeOverlay();
     m_tooltipOverlay = new TooltipOverlay();
-    m_mainMenu = new MainMenu();
     m_optionsMenu = new OptionsMenu();
+    m_mainMenu = new MainMenu();  // has to be after options menu
     m_backgroundImageHandler = new BackgroundImageHandler();
     m_modSelector = new ModSelector();
     m_rankingScreen = new RankingScreen();

+ 1 - 1
src/App/Osu/SongBrowser/SongBrowser.cpp

@@ -72,7 +72,7 @@ ConVar osu_draw_songbrowser_strain_graph("osu_draw_songbrowser_strain_graph", fa
 ConVar osu_songbrowser_scorebrowser_enabled("osu_songbrowser_scorebrowser_enabled", true, FCVAR_DEFAULT);
 ConVar osu_songbrowser_background_fade_in_duration("osu_songbrowser_background_fade_in_duration", 0.1f, FCVAR_DEFAULT);
 
-ConVar osu_songbrowser_search_delay("osu_songbrowser_search_delay", 0.5f, FCVAR_DEFAULT,
+ConVar osu_songbrowser_search_delay("osu_songbrowser_search_delay", 0.2f, FCVAR_DEFAULT,
                                     "delay until search update when entering text");
 void _osu_songbrowser_search_hardcoded_filter(UString oldValue, UString newValue);
 ConVar osu_songbrowser_search_hardcoded_filter("osu_songbrowser_search_hardcoded_filter", "", FCVAR_DEFAULT,

+ 2 - 27
src/App/Osu/UpdateHandler.cpp

@@ -1,10 +1,3 @@
-//================ Copyright (c) 2016, PG, All rights reserved. =================//
-//
-// Purpose:		checks if an update is available from github
-//
-// $NoKeywords: $osuupdchk
-//===============================================================================//
-
 #ifndef _WIN32
 #include <sys/stat.h>
 #include <sys/types.h>
@@ -99,7 +92,7 @@ void UpdateHandler::_requestUpdate() {
     debugLog("UpdateHandler::requestUpdate()\n");
     m_status = STATUS::STATUS_CHECKING_FOR_UPDATE;
 
-    UString latestVersion = engine->getNetworkHandler()->httpGet(NEOSU_UPDATE_URL "/latest-version.txt");
+    UString latestVersion = engine->getNetworkHandler()->httpGet(NEOSU_URL "/update/" OS_NAME "/latest-version.txt");
     float fLatestVersion = strtof(latestVersion.toUtf8(), NULL);
     if(fLatestVersion == 0.f) {
         m_status = STATUS::STATUS_UP_TO_DATE;
@@ -115,14 +108,8 @@ void UpdateHandler::_requestUpdate() {
         return;
     }
 
-#ifdef _WIN32
-    const char *os = "windows";
-#else
-    const char *os = "linux";
-#endif
-
     debugLog("Downloading latest update... (current v%.2f, latest v%.2f)\n", current_version, fLatestVersion);
-    update_url = UString::format(NEOSU_UPDATE_URL "/update/%s-v%.2f.zip", os, fLatestVersion);
+    update_url = UString::format(NEOSU_URL "/update/" OS_NAME "/v%.2f.zip", fLatestVersion);
 }
 
 bool UpdateHandler::_downloadUpdate() {
@@ -277,15 +264,3 @@ void UpdateHandler::_installUpdate(std::string zipFilePath) {
     m_status = STATUS::STATUS_SUCCESS_INSTALLATION;
     env->deleteFile(zipFilePath);
 }
-
-Environment::OS UpdateHandler::stringToOS(UString osString) {
-    Environment::OS os = Environment::OS::NONE;
-    if(osString.find("windows") != -1)
-        os = Environment::OS::WINDOWS;
-    else if(osString.find("linux") != -1)
-        os = Environment::OS::LINUX;
-    else if(osString.find("macos") != -1)
-        os = Environment::OS::MACOS;
-
-    return os;
-}

+ 0 - 3
src/App/Osu/UpdateHandler.h

@@ -39,9 +39,6 @@ class UpdateHandler {
     std::thread* m_updateThread = NULL;
     bool _m_bKYS;
 
-    // releases
-    Environment::OS stringToOS(UString osString);
-
     // status
     STATUS m_status;
     int m_iNumRetries;

+ 6 - 11
src/Engine/Main/main_Windows.cpp

@@ -1,15 +1,10 @@
 #ifdef _WIN32
 
-// #define MCENGINE_WINDOWS_REALTIMESTYLUS_SUPPORT
-// #define MCENGINE_WINDOWS_TOUCH_SUPPORT
-
-#ifdef MCENGINE_WINDOWS_TOUCH_SUPPORT
-#define WINVER 0x0A00  // Windows 10, to enable the ifdefs in winuser.h for touch
-#endif
-
-#include <dwmapi.h>
-
+// clang-format off
+// Include order matters
 #include "cbase.h"
+#include <dwmapi.h>
+// clang-format on
 
 // NEXTRAWINPUTBLOCK macro requires this
 typedef uint64_t QWORD;
@@ -60,7 +55,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
 
 #ifdef MCENGINE_WINDOWS_TOUCH_SUPPORT
 #include <winuser.h>
-typedef WINBOOL(WINAPI *PGPI)(UINT32 pointerId, POINTER_INFO *pointerInfo);
+typedef BOOL(WINAPI * PGPI)(UINT32 pointerId, POINTER_INFO *pointerInfo);
 PGPI g_GetPointerInfo = (PGPI)GetProcAddress(GetModuleHandle(TEXT("user32.dll")), "GetPointerInfo");
 #ifndef TWF_WANTPALM
 #define TWF_WANTPALM 0x00000002
@@ -1133,7 +1128,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
                     // rate will produce ~0.12 MB per second)
                     const UINT numAlignmentBytes = 8;
                     const UINT rawInputBufferNumBytes =
-                        clamp<UINT>(minRawInputBufferNumBytes * numAlignmentBytes * 1024, 1, 1024 * 1024);
+                        std::clamp<UINT>(minRawInputBufferNumBytes * numAlignmentBytes * 1024, 1, 1024 * 1024);
                     if(currentRawInputBuffer == NULL || currentRawInputBufferNumBytes < rawInputBufferNumBytes) {
                         currentRawInputBufferNumBytes = rawInputBufferNumBytes;
                         {

+ 1 - 12
src/Engine/Platform/WinRealTimeStylus.h

@@ -1,8 +1,6 @@
+#pragma once
 #ifdef _WIN32
 
-#ifndef WINREALTIMESTYLUS_H
-#define WINREALTIMESTYLUS_H
-
 #ifdef MCENGINE_WINDOWS_REALTIMESTYLUS_SUPPORT
 
 #include "ConVar.h"
@@ -11,10 +9,6 @@
 extern Engine* g_engine;
 extern ConVar* win_realtimestylus;
 
-// this is really hacky, I copied and merged some header files from the Microsoft SDK into MinGW to make it work
-// MinGW is missing some definitions inside tpcshrd.h, you can get them from the Microsoft SDK includes
-// you MUST link to Ole32.lib and Uuid.lib (which is not in the default project configuration!)
-
 // most of this code was taken 1:1 from the windows sdk samples
 // the only interesting/useful functions here are StylusDown and StylusUp
 
@@ -22,9 +16,6 @@ extern ConVar* win_realtimestylus;
 
 #include <rtscom_i.c>  // RTS GUID definitions
 
-// yay for missing uuid declarations, had to add this one manually
-__CRT_UUID_DECL(IRealTimeStylus, 0xA8BB5D22, 0x3144, 0x4a7b, 0x93, 0xCD, 0xF3, 0x4A, 0x16, 0xBE, 0x51, 0x3A);
-
 static IRealTimeStylus* g_pRealTimeStylus = NULL;         // RTS object
 static IStylusSyncPlugin* g_pSyncEventHandlerRTS = NULL;  // EventHandler object
 
@@ -387,5 +378,3 @@ BOOL InitRealTimeStylus(HINSTANCE hInstance, HWND hWnd)  // extern
 #endif
 
 #endif
-
-#endif

+ 2 - 2
src/Engine/Platform/XInputGamepad.cpp

@@ -91,8 +91,8 @@ void XInputGamepad::setVibration(float leftMotorSpeedPercent, float rightMotorSp
         XINPUT_VIBRATION vibration;
         memset(&vibration, 0, sizeof(XINPUT_VIBRATION));
         {
-            vibration.wLeftMotorSpeed = (WORD)(65535.0f * clamp<float>(leftMotorSpeedPercent, 0.0f, 1.0f));
-            vibration.wRightMotorSpeed = (WORD)(65535.0f * clamp<float>(rightMotorSpeedPercent, 0.0f, 1.0f));
+            vibration.wLeftMotorSpeed = (WORD)(65535.0f * std::clamp<float>(leftMotorSpeedPercent, 0.0f, 1.0f));
+            vibration.wRightMotorSpeed = (WORD)(65535.0f * std::clamp<float>(rightMotorSpeedPercent, 0.0f, 1.0f));
         }
         XInputSetState(m_iPort, &vibration);
     }

+ 21 - 0
src/Util/cbase.h

@@ -1,5 +1,26 @@
 #pragma once
 
+#ifdef _WIN32
+// Windows build
+#ifdef _WIN64
+#define OS_NAME "win64"
+#define WINVER 0x0A00  // Windows 10, to enable the ifdefs in winuser.h for touch
+#define MCENGINE_WINDOWS_REALTIMESTYLUS_SUPPORT
+#define MCENGINE_WINDOWS_TOUCH_SUPPORT
+#else
+#define OS_NAME "win32"
+#endif
+// End of Windows build
+#else
+// Linux build
+#ifdef __x86_64
+#define OS_NAME "linux-x64"
+#else
+#define OS_NAME "linux-i686"
+#endif
+// End of Linux build
+#endif
+
 #ifdef _WIN32
 // clang-format off
 #define NOMINMAX