diff options
| -rw-r--r-- | externals/microprofile/microprofile.h | 14 | ||||
| -rw-r--r-- | src/common/CMakeLists.txt | 16 | ||||
| -rw-r--r-- | src/common/fiber.cpp | 8 | ||||
| -rw-r--r-- | src/common/fiber.h | 2 | ||||
| -rw-r--r-- | src/common/file_util.cpp | 31 | ||||
| -rw-r--r-- | src/common/logging/backend.cpp | 2 | ||||
| -rw-r--r-- | src/common/string_util.cpp | 5 | ||||
| -rw-r--r-- | src/common/timer.cpp | 12 | ||||
| -rw-r--r-- | src/common/wall_clock.cpp | 2 | ||||
| -rw-r--r-- | src/common/x64/native_clock.h | 2 |
10 files changed, 57 insertions, 37 deletions
diff --git a/externals/microprofile/microprofile.h b/externals/microprofile/microprofile.h index 85d5bd5de..5c381f002 100644 --- a/externals/microprofile/microprofile.h +++ b/externals/microprofile/microprofile.h | |||
| @@ -902,8 +902,10 @@ inline uint16_t MicroProfileGetGroupIndex(MicroProfileToken t) | |||
| 902 | #include <windows.h> | 902 | #include <windows.h> |
| 903 | #define snprintf _snprintf | 903 | #define snprintf _snprintf |
| 904 | 904 | ||
| 905 | #ifdef _MSC_VER | ||
| 905 | #pragma warning(push) | 906 | #pragma warning(push) |
| 906 | #pragma warning(disable: 4244) | 907 | #pragma warning(disable: 4244) |
| 908 | #endif | ||
| 907 | int64_t MicroProfileTicksPerSecondCpu() | 909 | int64_t MicroProfileTicksPerSecondCpu() |
| 908 | { | 910 | { |
| 909 | static int64_t nTicksPerSecond = 0; | 911 | static int64_t nTicksPerSecond = 0; |
| @@ -946,7 +948,7 @@ typedef HANDLE MicroProfileThread; | |||
| 946 | DWORD _stdcall ThreadTrampoline(void* pFunc) | 948 | DWORD _stdcall ThreadTrampoline(void* pFunc) |
| 947 | { | 949 | { |
| 948 | MicroProfileThreadFunc F = (MicroProfileThreadFunc)pFunc; | 950 | MicroProfileThreadFunc F = (MicroProfileThreadFunc)pFunc; |
| 949 | return (uint32_t)F(0); | 951 | return (DWORD)F(0); |
| 950 | } | 952 | } |
| 951 | 953 | ||
| 952 | inline void MicroProfileThreadStart(MicroProfileThread* pThread, MicroProfileThreadFunc Func) | 954 | inline void MicroProfileThreadStart(MicroProfileThread* pThread, MicroProfileThreadFunc Func) |
| @@ -1742,10 +1744,10 @@ void MicroProfileFlip() | |||
| 1742 | } | 1744 | } |
| 1743 | } | 1745 | } |
| 1744 | } | 1746 | } |
| 1745 | for(uint32_t i = 0; i < MICROPROFILE_MAX_GROUPS; ++i) | 1747 | for(uint32_t j = 0; j < MICROPROFILE_MAX_GROUPS; ++j) |
| 1746 | { | 1748 | { |
| 1747 | pLog->nGroupTicks[i] += nGroupTicks[i]; | 1749 | pLog->nGroupTicks[j] += nGroupTicks[j]; |
| 1748 | pFrameGroup[i] += nGroupTicks[i]; | 1750 | pFrameGroup[j] += nGroupTicks[j]; |
| 1749 | } | 1751 | } |
| 1750 | pLog->nStackPos = nStackPos; | 1752 | pLog->nStackPos = nStackPos; |
| 1751 | } | 1753 | } |
| @@ -3328,7 +3330,7 @@ bool MicroProfileIsLocalThread(uint32_t nThreadId) | |||
| 3328 | #endif | 3330 | #endif |
| 3329 | #else | 3331 | #else |
| 3330 | 3332 | ||
| 3331 | bool MicroProfileIsLocalThread(uint32_t nThreadId){return false;} | 3333 | bool MicroProfileIsLocalThread([[maybe_unused]] uint32_t nThreadId) { return false; } |
| 3332 | void MicroProfileStopContextSwitchTrace(){} | 3334 | void MicroProfileStopContextSwitchTrace(){} |
| 3333 | void MicroProfileStartContextSwitchTrace(){} | 3335 | void MicroProfileStartContextSwitchTrace(){} |
| 3334 | 3336 | ||
| @@ -3576,7 +3578,7 @@ int MicroProfileGetGpuTickReference(int64_t* pOutCpu, int64_t* pOutGpu) | |||
| 3576 | 3578 | ||
| 3577 | #undef S | 3579 | #undef S |
| 3578 | 3580 | ||
| 3579 | #ifdef _WIN32 | 3581 | #ifdef _MSC_VER |
| 3580 | #pragma warning(pop) | 3582 | #pragma warning(pop) |
| 3581 | #endif | 3583 | #endif |
| 3582 | 3584 | ||
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index e50ab2922..207c7a0a6 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt | |||
| @@ -190,6 +190,22 @@ if(ARCHITECTURE_x86_64) | |||
| 190 | ) | 190 | ) |
| 191 | endif() | 191 | endif() |
| 192 | 192 | ||
| 193 | if (MSVC) | ||
| 194 | target_compile_definitions(common PRIVATE | ||
| 195 | # The standard library doesn't provide any replacement for codecvt yet | ||
| 196 | # so we can disable this deprecation warning for the time being. | ||
| 197 | _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING | ||
| 198 | ) | ||
| 199 | target_compile_options(common PRIVATE | ||
| 200 | /W4 | ||
| 201 | /WX | ||
| 202 | ) | ||
| 203 | else() | ||
| 204 | target_compile_options(common PRIVATE | ||
| 205 | -Werror | ||
| 206 | ) | ||
| 207 | endif() | ||
| 208 | |||
| 193 | create_target_directory_groups(common) | 209 | create_target_directory_groups(common) |
| 194 | find_package(Boost 1.71 COMPONENTS context headers REQUIRED) | 210 | find_package(Boost 1.71 COMPONENTS context headers REQUIRED) |
| 195 | 211 | ||
diff --git a/src/common/fiber.cpp b/src/common/fiber.cpp index e186ed880..b209f52fc 100644 --- a/src/common/fiber.cpp +++ b/src/common/fiber.cpp | |||
| @@ -79,9 +79,9 @@ void Fiber::Exit() { | |||
| 79 | released = true; | 79 | released = true; |
| 80 | } | 80 | } |
| 81 | 81 | ||
| 82 | void Fiber::SetRewindPoint(std::function<void(void*)>&& rewind_func, void* start_parameter) { | 82 | void Fiber::SetRewindPoint(std::function<void(void*)>&& rewind_func, void* rewind_param) { |
| 83 | rewind_point = std::move(rewind_func); | 83 | rewind_point = std::move(rewind_func); |
| 84 | rewind_parameter = start_parameter; | 84 | rewind_parameter = rewind_param; |
| 85 | } | 85 | } |
| 86 | 86 | ||
| 87 | void Fiber::Rewind() { | 87 | void Fiber::Rewind() { |
| @@ -161,9 +161,9 @@ Fiber::Fiber(std::function<void(void*)>&& entry_point_func, void* start_paramete | |||
| 161 | boost::context::detail::make_fcontext(stack_base, impl->stack.size(), FiberStartFunc); | 161 | boost::context::detail::make_fcontext(stack_base, impl->stack.size(), FiberStartFunc); |
| 162 | } | 162 | } |
| 163 | 163 | ||
| 164 | void Fiber::SetRewindPoint(std::function<void(void*)>&& rewind_func, void* start_parameter) { | 164 | void Fiber::SetRewindPoint(std::function<void(void*)>&& rewind_func, void* rewind_param) { |
| 165 | rewind_point = std::move(rewind_func); | 165 | rewind_point = std::move(rewind_func); |
| 166 | rewind_parameter = start_parameter; | 166 | rewind_parameter = rewind_param; |
| 167 | } | 167 | } |
| 168 | 168 | ||
| 169 | Fiber::Fiber() : impl{std::make_unique<FiberImpl>()} {} | 169 | Fiber::Fiber() : impl{std::make_unique<FiberImpl>()} {} |
diff --git a/src/common/fiber.h b/src/common/fiber.h index cefd61df9..699286ee2 100644 --- a/src/common/fiber.h +++ b/src/common/fiber.h | |||
| @@ -49,7 +49,7 @@ public: | |||
| 49 | static void YieldTo(std::shared_ptr<Fiber> from, std::shared_ptr<Fiber> to); | 49 | static void YieldTo(std::shared_ptr<Fiber> from, std::shared_ptr<Fiber> to); |
| 50 | [[nodiscard]] static std::shared_ptr<Fiber> ThreadToFiber(); | 50 | [[nodiscard]] static std::shared_ptr<Fiber> ThreadToFiber(); |
| 51 | 51 | ||
| 52 | void SetRewindPoint(std::function<void(void*)>&& rewind_func, void* start_parameter); | 52 | void SetRewindPoint(std::function<void(void*)>&& rewind_func, void* rewind_param); |
| 53 | 53 | ||
| 54 | void Rewind(); | 54 | void Rewind(); |
| 55 | 55 | ||
diff --git a/src/common/file_util.cpp b/src/common/file_util.cpp index 16c3713e0..18fbfa25b 100644 --- a/src/common/file_util.cpp +++ b/src/common/file_util.cpp | |||
| @@ -472,13 +472,14 @@ u64 ScanDirectoryTree(const std::string& directory, FSTEntry& parent_entry, | |||
| 472 | } | 472 | } |
| 473 | 473 | ||
| 474 | bool DeleteDirRecursively(const std::string& directory, unsigned int recursion) { | 474 | bool DeleteDirRecursively(const std::string& directory, unsigned int recursion) { |
| 475 | const auto callback = [recursion](u64* num_entries_out, const std::string& directory, | 475 | const auto callback = [recursion](u64*, const std::string& directory, |
| 476 | const std::string& virtual_name) -> bool { | 476 | const std::string& virtual_name) { |
| 477 | std::string new_path = directory + DIR_SEP_CHR + virtual_name; | 477 | const std::string new_path = directory + DIR_SEP_CHR + virtual_name; |
| 478 | 478 | ||
| 479 | if (IsDirectory(new_path)) { | 479 | if (IsDirectory(new_path)) { |
| 480 | if (recursion == 0) | 480 | if (recursion == 0) { |
| 481 | return false; | 481 | return false; |
| 482 | } | ||
| 482 | return DeleteDirRecursively(new_path, recursion - 1); | 483 | return DeleteDirRecursively(new_path, recursion - 1); |
| 483 | } | 484 | } |
| 484 | return Delete(new_path); | 485 | return Delete(new_path); |
| @@ -492,7 +493,8 @@ bool DeleteDirRecursively(const std::string& directory, unsigned int recursion) | |||
| 492 | return true; | 493 | return true; |
| 493 | } | 494 | } |
| 494 | 495 | ||
| 495 | void CopyDir(const std::string& source_path, const std::string& dest_path) { | 496 | void CopyDir([[maybe_unused]] const std::string& source_path, |
| 497 | [[maybe_unused]] const std::string& dest_path) { | ||
| 496 | #ifndef _WIN32 | 498 | #ifndef _WIN32 |
| 497 | if (source_path == dest_path) { | 499 | if (source_path == dest_path) { |
| 498 | return; | 500 | return; |
| @@ -553,7 +555,7 @@ std::optional<std::string> GetCurrentDir() { | |||
| 553 | std::string strDir = dir; | 555 | std::string strDir = dir; |
| 554 | #endif | 556 | #endif |
| 555 | free(dir); | 557 | free(dir); |
| 556 | return std::move(strDir); | 558 | return strDir; |
| 557 | } | 559 | } |
| 558 | 560 | ||
| 559 | bool SetCurrentDir(const std::string& directory) { | 561 | bool SetCurrentDir(const std::string& directory) { |
| @@ -772,21 +774,23 @@ std::size_t ReadFileToString(bool text_file, const std::string& filename, std::s | |||
| 772 | 774 | ||
| 773 | void SplitFilename83(const std::string& filename, std::array<char, 9>& short_name, | 775 | void SplitFilename83(const std::string& filename, std::array<char, 9>& short_name, |
| 774 | std::array<char, 4>& extension) { | 776 | std::array<char, 4>& extension) { |
| 775 | const std::string forbidden_characters = ".\"/\\[]:;=, "; | 777 | static constexpr std::string_view forbidden_characters = ".\"/\\[]:;=, "; |
| 776 | 778 | ||
| 777 | // On a FAT32 partition, 8.3 names are stored as a 11 bytes array, filled with spaces. | 779 | // On a FAT32 partition, 8.3 names are stored as a 11 bytes array, filled with spaces. |
| 778 | short_name = {{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '\0'}}; | 780 | short_name = {{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '\0'}}; |
| 779 | extension = {{' ', ' ', ' ', '\0'}}; | 781 | extension = {{' ', ' ', ' ', '\0'}}; |
| 780 | 782 | ||
| 781 | std::string::size_type point = filename.rfind('.'); | 783 | auto point = filename.rfind('.'); |
| 782 | if (point == filename.size() - 1) | 784 | if (point == filename.size() - 1) { |
| 783 | point = filename.rfind('.', point); | 785 | point = filename.rfind('.', point); |
| 786 | } | ||
| 784 | 787 | ||
| 785 | // Get short name. | 788 | // Get short name. |
| 786 | int j = 0; | 789 | int j = 0; |
| 787 | for (char letter : filename.substr(0, point)) { | 790 | for (char letter : filename.substr(0, point)) { |
| 788 | if (forbidden_characters.find(letter, 0) != std::string::npos) | 791 | if (forbidden_characters.find(letter, 0) != std::string::npos) { |
| 789 | continue; | 792 | continue; |
| 793 | } | ||
| 790 | if (j == 8) { | 794 | if (j == 8) { |
| 791 | // TODO(Link Mauve): also do that for filenames containing a space. | 795 | // TODO(Link Mauve): also do that for filenames containing a space. |
| 792 | // TODO(Link Mauve): handle multiple files having the same short name. | 796 | // TODO(Link Mauve): handle multiple files having the same short name. |
| @@ -794,14 +798,15 @@ void SplitFilename83(const std::string& filename, std::array<char, 9>& short_nam | |||
| 794 | short_name[7] = '1'; | 798 | short_name[7] = '1'; |
| 795 | break; | 799 | break; |
| 796 | } | 800 | } |
| 797 | short_name[j++] = toupper(letter); | 801 | short_name[j++] = static_cast<char>(std::toupper(letter)); |
| 798 | } | 802 | } |
| 799 | 803 | ||
| 800 | // Get extension. | 804 | // Get extension. |
| 801 | if (point != std::string::npos) { | 805 | if (point != std::string::npos) { |
| 802 | j = 0; | 806 | j = 0; |
| 803 | for (char letter : filename.substr(point + 1, 3)) | 807 | for (char letter : filename.substr(point + 1, 3)) { |
| 804 | extension[j++] = toupper(letter); | 808 | extension[j++] = static_cast<char>(std::toupper(letter)); |
| 809 | } | ||
| 805 | } | 810 | } |
| 806 | } | 811 | } |
| 807 | 812 | ||
diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp index 62cfde397..90dfa22ca 100644 --- a/src/common/logging/backend.cpp +++ b/src/common/logging/backend.cpp | |||
| @@ -274,7 +274,6 @@ const char* GetLogClassName(Class log_class) { | |||
| 274 | case Class::Count: | 274 | case Class::Count: |
| 275 | break; | 275 | break; |
| 276 | } | 276 | } |
| 277 | UNREACHABLE(); | ||
| 278 | return "Invalid"; | 277 | return "Invalid"; |
| 279 | } | 278 | } |
| 280 | 279 | ||
| @@ -293,7 +292,6 @@ const char* GetLevelName(Level log_level) { | |||
| 293 | break; | 292 | break; |
| 294 | } | 293 | } |
| 295 | #undef LVL | 294 | #undef LVL |
| 296 | UNREACHABLE(); | ||
| 297 | return "Invalid"; | 295 | return "Invalid"; |
| 298 | } | 296 | } |
| 299 | 297 | ||
diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp index 84883a1d3..4cba2aaa4 100644 --- a/src/common/string_util.cpp +++ b/src/common/string_util.cpp | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | #include <cstdlib> | 8 | #include <cstdlib> |
| 9 | #include <locale> | 9 | #include <locale> |
| 10 | #include <sstream> | 10 | #include <sstream> |
| 11 | |||
| 11 | #include "common/common_paths.h" | 12 | #include "common/common_paths.h" |
| 12 | #include "common/logging/log.h" | 13 | #include "common/logging/log.h" |
| 13 | #include "common/string_util.h" | 14 | #include "common/string_util.h" |
| @@ -21,14 +22,14 @@ namespace Common { | |||
| 21 | /// Make a string lowercase | 22 | /// Make a string lowercase |
| 22 | std::string ToLower(std::string str) { | 23 | std::string ToLower(std::string str) { |
| 23 | std::transform(str.begin(), str.end(), str.begin(), | 24 | std::transform(str.begin(), str.end(), str.begin(), |
| 24 | [](unsigned char c) { return std::tolower(c); }); | 25 | [](unsigned char c) { return static_cast<char>(std::tolower(c)); }); |
| 25 | return str; | 26 | return str; |
| 26 | } | 27 | } |
| 27 | 28 | ||
| 28 | /// Make a string uppercase | 29 | /// Make a string uppercase |
| 29 | std::string ToUpper(std::string str) { | 30 | std::string ToUpper(std::string str) { |
| 30 | std::transform(str.begin(), str.end(), str.begin(), | 31 | std::transform(str.begin(), str.end(), str.begin(), |
| 31 | [](unsigned char c) { return std::toupper(c); }); | 32 | [](unsigned char c) { return static_cast<char>(std::toupper(c)); }); |
| 32 | return str; | 33 | return str; |
| 33 | } | 34 | } |
| 34 | 35 | ||
diff --git a/src/common/timer.cpp b/src/common/timer.cpp index 2dc15e434..d17dc2a50 100644 --- a/src/common/timer.cpp +++ b/src/common/timer.cpp | |||
| @@ -142,20 +142,18 @@ std::string Timer::GetTimeFormatted() { | |||
| 142 | // ---------------- | 142 | // ---------------- |
| 143 | double Timer::GetDoubleTime() { | 143 | double Timer::GetDoubleTime() { |
| 144 | // Get continuous timestamp | 144 | // Get continuous timestamp |
| 145 | u64 TmpSeconds = static_cast<u64>(Common::Timer::GetTimeSinceJan1970().count()); | 145 | auto tmp_seconds = static_cast<u64>(GetTimeSinceJan1970().count()); |
| 146 | double ms = static_cast<u64>(GetTimeMs().count()) % 1000; | 146 | const auto ms = static_cast<double>(static_cast<u64>(GetTimeMs().count()) % 1000); |
| 147 | 147 | ||
| 148 | // Remove a few years. We only really want enough seconds to make | 148 | // Remove a few years. We only really want enough seconds to make |
| 149 | // sure that we are detecting actual actions, perhaps 60 seconds is | 149 | // sure that we are detecting actual actions, perhaps 60 seconds is |
| 150 | // enough really, but I leave a year of seconds anyway, in case the | 150 | // enough really, but I leave a year of seconds anyway, in case the |
| 151 | // user's clock is incorrect or something like that. | 151 | // user's clock is incorrect or something like that. |
| 152 | TmpSeconds = TmpSeconds - (38 * 365 * 24 * 60 * 60); | 152 | tmp_seconds = tmp_seconds - (38 * 365 * 24 * 60 * 60); |
| 153 | 153 | ||
| 154 | // Make a smaller integer that fits in the double | 154 | // Make a smaller integer that fits in the double |
| 155 | u32 Seconds = static_cast<u32>(TmpSeconds); | 155 | const auto seconds = static_cast<u32>(tmp_seconds); |
| 156 | double TmpTime = Seconds + ms; | 156 | return seconds + ms; |
| 157 | |||
| 158 | return TmpTime; | ||
| 159 | } | 157 | } |
| 160 | 158 | ||
| 161 | } // Namespace Common | 159 | } // Namespace Common |
diff --git a/src/common/wall_clock.cpp b/src/common/wall_clock.cpp index 7a20e95b7..452a2837e 100644 --- a/src/common/wall_clock.cpp +++ b/src/common/wall_clock.cpp | |||
| @@ -53,7 +53,7 @@ public: | |||
| 53 | return Common::Divide128On32(temporary, 1000000000).first; | 53 | return Common::Divide128On32(temporary, 1000000000).first; |
| 54 | } | 54 | } |
| 55 | 55 | ||
| 56 | void Pause(bool is_paused) override { | 56 | void Pause([[maybe_unused]] bool is_paused) override { |
| 57 | // Do nothing in this clock type. | 57 | // Do nothing in this clock type. |
| 58 | } | 58 | } |
| 59 | 59 | ||
diff --git a/src/common/x64/native_clock.h b/src/common/x64/native_clock.h index 7c503df26..97aab6ac9 100644 --- a/src/common/x64/native_clock.h +++ b/src/common/x64/native_clock.h | |||
| @@ -34,7 +34,7 @@ private: | |||
| 34 | /// value used to reduce the native clocks accuracy as some apss rely on | 34 | /// value used to reduce the native clocks accuracy as some apss rely on |
| 35 | /// undefined behavior where the level of accuracy in the clock shouldn't | 35 | /// undefined behavior where the level of accuracy in the clock shouldn't |
| 36 | /// be higher. | 36 | /// be higher. |
| 37 | static constexpr u64 inaccuracy_mask = ~(0x400 - 1); | 37 | static constexpr u64 inaccuracy_mask = ~(UINT64_C(0x400) - 1); |
| 38 | 38 | ||
| 39 | SpinLock rtsc_serialize{}; | 39 | SpinLock rtsc_serialize{}; |
| 40 | u64 last_measure{}; | 40 | u64 last_measure{}; |