diff options
Diffstat (limited to 'src')
58 files changed, 421 insertions, 226 deletions
diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index 50cef5d2a..4ea82e217 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp | |||
| @@ -404,7 +404,9 @@ static Core::SystemResultStatus RunEmulation(const std::string& filepath, | |||
| 404 | const size_t program_index, | 404 | const size_t program_index, |
| 405 | const bool frontend_initiated) { | 405 | const bool frontend_initiated) { |
| 406 | MicroProfileOnThreadCreate("EmuThread"); | 406 | MicroProfileOnThreadCreate("EmuThread"); |
| 407 | SCOPE_EXIT({ MicroProfileShutdown(); }); | 407 | SCOPE_EXIT { |
| 408 | MicroProfileShutdown(); | ||
| 409 | }; | ||
| 408 | 410 | ||
| 409 | LOG_INFO(Frontend, "starting"); | 411 | LOG_INFO(Frontend, "starting"); |
| 410 | 412 | ||
| @@ -413,7 +415,9 @@ static Core::SystemResultStatus RunEmulation(const std::string& filepath, | |||
| 413 | return Core::SystemResultStatus::ErrorLoader; | 415 | return Core::SystemResultStatus::ErrorLoader; |
| 414 | } | 416 | } |
| 415 | 417 | ||
| 416 | SCOPE_EXIT({ EmulationSession::GetInstance().ShutdownEmulation(); }); | 418 | SCOPE_EXIT { |
| 419 | EmulationSession::GetInstance().ShutdownEmulation(); | ||
| 420 | }; | ||
| 417 | 421 | ||
| 418 | jconst result = EmulationSession::GetInstance().InitializeEmulation(filepath, program_index, | 422 | jconst result = EmulationSession::GetInstance().InitializeEmulation(filepath, program_index, |
| 419 | frontend_initiated); | 423 | frontend_initiated); |
diff --git a/src/audio_core/sink/cubeb_sink.cpp b/src/audio_core/sink/cubeb_sink.cpp index d97ca2a40..49efae8e3 100644 --- a/src/audio_core/sink/cubeb_sink.cpp +++ b/src/audio_core/sink/cubeb_sink.cpp | |||
| @@ -357,7 +357,9 @@ bool IsCubebSuitable() { | |||
| 357 | return false; | 357 | return false; |
| 358 | } | 358 | } |
| 359 | 359 | ||
| 360 | SCOPE_EXIT({ cubeb_destroy(ctx); }); | 360 | SCOPE_EXIT { |
| 361 | cubeb_destroy(ctx); | ||
| 362 | }; | ||
| 361 | 363 | ||
| 362 | #ifdef _WIN32 | 364 | #ifdef _WIN32 |
| 363 | if (SUCCEEDED(com_init_result)) { | 365 | if (SUCCEEDED(com_init_result)) { |
diff --git a/src/audio_core/sink/sink_stream.cpp b/src/audio_core/sink/sink_stream.cpp index c047b0668..0a98eb31e 100644 --- a/src/audio_core/sink/sink_stream.cpp +++ b/src/audio_core/sink/sink_stream.cpp | |||
| @@ -20,10 +20,10 @@ | |||
| 20 | namespace AudioCore::Sink { | 20 | namespace AudioCore::Sink { |
| 21 | 21 | ||
| 22 | void SinkStream::AppendBuffer(SinkBuffer& buffer, std::span<s16> samples) { | 22 | void SinkStream::AppendBuffer(SinkBuffer& buffer, std::span<s16> samples) { |
| 23 | SCOPE_EXIT({ | 23 | SCOPE_EXIT { |
| 24 | queue.enqueue(buffer); | 24 | queue.enqueue(buffer); |
| 25 | ++queued_buffers; | 25 | ++queued_buffers; |
| 26 | }); | 26 | }; |
| 27 | 27 | ||
| 28 | if (type == StreamType::In) { | 28 | if (type == StreamType::In) { |
| 29 | return; | 29 | return; |
diff --git a/src/common/demangle.cpp b/src/common/demangle.cpp index 6e117cb41..b2c9d126a 100644 --- a/src/common/demangle.cpp +++ b/src/common/demangle.cpp | |||
| @@ -20,7 +20,9 @@ std::string DemangleSymbol(const std::string& mangled) { | |||
| 20 | } | 20 | } |
| 21 | 21 | ||
| 22 | char* demangled = nullptr; | 22 | char* demangled = nullptr; |
| 23 | SCOPE_EXIT({ std::free(demangled); }); | 23 | SCOPE_EXIT { |
| 24 | std::free(demangled); | ||
| 25 | }; | ||
| 24 | 26 | ||
| 25 | if (is_itanium(mangled)) { | 27 | if (is_itanium(mangled)) { |
| 26 | demangled = llvm::itaniumDemangle(mangled.c_str()); | 28 | demangled = llvm::itaniumDemangle(mangled.c_str()); |
diff --git a/src/common/host_memory.cpp b/src/common/host_memory.cpp index 860c39e6a..e0b5a6a67 100644 --- a/src/common/host_memory.cpp +++ b/src/common/host_memory.cpp | |||
| @@ -430,11 +430,11 @@ public: | |||
| 430 | explicit Impl(size_t backing_size_, size_t virtual_size_) | 430 | explicit Impl(size_t backing_size_, size_t virtual_size_) |
| 431 | : backing_size{backing_size_}, virtual_size{virtual_size_} { | 431 | : backing_size{backing_size_}, virtual_size{virtual_size_} { |
| 432 | bool good = false; | 432 | bool good = false; |
| 433 | SCOPE_EXIT({ | 433 | SCOPE_EXIT { |
| 434 | if (!good) { | 434 | if (!good) { |
| 435 | Release(); | 435 | Release(); |
| 436 | } | 436 | } |
| 437 | }); | 437 | }; |
| 438 | 438 | ||
| 439 | long page_size = sysconf(_SC_PAGESIZE); | 439 | long page_size = sysconf(_SC_PAGESIZE); |
| 440 | if (page_size != 0x1000) { | 440 | if (page_size != 0x1000) { |
diff --git a/src/common/page_table.cpp b/src/common/page_table.cpp index 85dc18c11..3205eb7da 100644 --- a/src/common/page_table.cpp +++ b/src/common/page_table.cpp | |||
| @@ -24,10 +24,10 @@ bool PageTable::ContinueTraversal(TraversalEntry* out_entry, TraversalContext* c | |||
| 24 | out_entry->block_size = page_size; | 24 | out_entry->block_size = page_size; |
| 25 | 25 | ||
| 26 | // Regardless of whether the page was mapped, advance on exit. | 26 | // Regardless of whether the page was mapped, advance on exit. |
| 27 | SCOPE_EXIT({ | 27 | SCOPE_EXIT { |
| 28 | context->next_page += 1; | 28 | context->next_page += 1; |
| 29 | context->next_offset += page_size; | 29 | context->next_offset += page_size; |
| 30 | }); | 30 | }; |
| 31 | 31 | ||
| 32 | // Validate that we can read the actual entry. | 32 | // Validate that we can read the actual entry. |
| 33 | const auto page = context->next_page; | 33 | const auto page = context->next_page; |
diff --git a/src/common/scope_exit.h b/src/common/scope_exit.h index e9c789c88..f3e88cde9 100644 --- a/src/common/scope_exit.h +++ b/src/common/scope_exit.h | |||
| @@ -7,29 +7,61 @@ | |||
| 7 | #include "common/common_funcs.h" | 7 | #include "common/common_funcs.h" |
| 8 | 8 | ||
| 9 | namespace detail { | 9 | namespace detail { |
| 10 | template <typename Func> | 10 | template <class F> |
| 11 | struct ScopeExitHelper { | 11 | class ScopeGuard { |
| 12 | explicit ScopeExitHelper(Func&& func_) : func(std::move(func_)) {} | 12 | YUZU_NON_COPYABLE(ScopeGuard); |
| 13 | ~ScopeExitHelper() { | 13 | |
| 14 | private: | ||
| 15 | F f; | ||
| 16 | bool active; | ||
| 17 | |||
| 18 | public: | ||
| 19 | constexpr ScopeGuard(F f_) : f(std::move(f_)), active(true) {} | ||
| 20 | constexpr ~ScopeGuard() { | ||
| 14 | if (active) { | 21 | if (active) { |
| 15 | func(); | 22 | f(); |
| 16 | } | 23 | } |
| 17 | } | 24 | } |
| 18 | 25 | constexpr void Cancel() { | |
| 19 | void Cancel() { | ||
| 20 | active = false; | 26 | active = false; |
| 21 | } | 27 | } |
| 22 | 28 | ||
| 23 | Func func; | 29 | constexpr ScopeGuard(ScopeGuard&& rhs) : f(std::move(rhs.f)), active(rhs.active) { |
| 24 | bool active{true}; | 30 | rhs.Cancel(); |
| 31 | } | ||
| 32 | |||
| 33 | ScopeGuard& operator=(ScopeGuard&& rhs) = delete; | ||
| 25 | }; | 34 | }; |
| 26 | 35 | ||
| 27 | template <typename Func> | 36 | template <class F> |
| 28 | ScopeExitHelper<Func> ScopeExit(Func&& func) { | 37 | constexpr ScopeGuard<F> MakeScopeGuard(F f) { |
| 29 | return ScopeExitHelper<Func>(std::forward<Func>(func)); | 38 | return ScopeGuard<F>(std::move(f)); |
| 30 | } | 39 | } |
| 40 | |||
| 41 | enum class ScopeGuardOnExit {}; | ||
| 42 | |||
| 43 | template <typename F> | ||
| 44 | constexpr ScopeGuard<F> operator+(ScopeGuardOnExit, F&& f) { | ||
| 45 | return ScopeGuard<F>(std::forward<F>(f)); | ||
| 46 | } | ||
| 47 | |||
| 31 | } // namespace detail | 48 | } // namespace detail |
| 32 | 49 | ||
| 50 | #define CONCATENATE_IMPL(s1, s2) s1##s2 | ||
| 51 | #define CONCATENATE(s1, s2) CONCATENATE_IMPL(s1, s2) | ||
| 52 | |||
| 53 | #ifdef __COUNTER__ | ||
| 54 | #define ANONYMOUS_VARIABLE(pref) CONCATENATE(pref, __COUNTER__) | ||
| 55 | #else | ||
| 56 | #define ANONYMOUS_VARIABLE(pref) CONCATENATE(pref, __LINE__) | ||
| 57 | #endif | ||
| 58 | |||
| 59 | /** | ||
| 60 | * This macro is similar to SCOPE_EXIT, except the object is caller managed. This is intended to be | ||
| 61 | * used when the caller might want to cancel the ScopeExit. | ||
| 62 | */ | ||
| 63 | #define SCOPE_GUARD detail::ScopeGuardOnExit() + [&]() | ||
| 64 | |||
| 33 | /** | 65 | /** |
| 34 | * This macro allows you to conveniently specify a block of code that will run on scope exit. Handy | 66 | * This macro allows you to conveniently specify a block of code that will run on scope exit. Handy |
| 35 | * for doing ad-hoc clean-up tasks in a function with multiple returns. | 67 | * for doing ad-hoc clean-up tasks in a function with multiple returns. |
| @@ -38,7 +70,7 @@ ScopeExitHelper<Func> ScopeExit(Func&& func) { | |||
| 38 | * \code | 70 | * \code |
| 39 | * const int saved_val = g_foo; | 71 | * const int saved_val = g_foo; |
| 40 | * g_foo = 55; | 72 | * g_foo = 55; |
| 41 | * SCOPE_EXIT({ g_foo = saved_val; }); | 73 | * SCOPE_EXIT{ g_foo = saved_val; }; |
| 42 | * | 74 | * |
| 43 | * if (Bar()) { | 75 | * if (Bar()) { |
| 44 | * return 0; | 76 | * return 0; |
| @@ -47,10 +79,4 @@ ScopeExitHelper<Func> ScopeExit(Func&& func) { | |||
| 47 | * } | 79 | * } |
| 48 | * \endcode | 80 | * \endcode |
| 49 | */ | 81 | */ |
| 50 | #define SCOPE_EXIT(body) auto CONCAT2(scope_exit_helper_, __LINE__) = detail::ScopeExit([&]() body) | 82 | #define SCOPE_EXIT auto ANONYMOUS_VARIABLE(SCOPE_EXIT_STATE_) = SCOPE_GUARD |
| 51 | |||
| 52 | /** | ||
| 53 | * This macro is similar to SCOPE_EXIT, except the object is caller managed. This is intended to be | ||
| 54 | * used when the caller might want to cancel the ScopeExit. | ||
| 55 | */ | ||
| 56 | #define SCOPE_GUARD(body) detail::ScopeExit([&]() body) | ||
diff --git a/src/core/cpu_manager.cpp b/src/core/cpu_manager.cpp index 7a5c22f78..9b1c77387 100644 --- a/src/core/cpu_manager.cpp +++ b/src/core/cpu_manager.cpp | |||
| @@ -199,10 +199,10 @@ void CpuManager::RunThread(std::stop_token token, std::size_t core) { | |||
| 199 | data.host_context = Common::Fiber::ThreadToFiber(); | 199 | data.host_context = Common::Fiber::ThreadToFiber(); |
| 200 | 200 | ||
| 201 | // Cleanup | 201 | // Cleanup |
| 202 | SCOPE_EXIT({ | 202 | SCOPE_EXIT { |
| 203 | data.host_context->Exit(); | 203 | data.host_context->Exit(); |
| 204 | MicroProfileOnThreadExit(); | 204 | MicroProfileOnThreadExit(); |
| 205 | }); | 205 | }; |
| 206 | 206 | ||
| 207 | // Running | 207 | // Running |
| 208 | if (!gpu_barrier->Sync(token)) { | 208 | if (!gpu_barrier->Sync(token)) { |
diff --git a/src/core/device_memory_manager.inc b/src/core/device_memory_manager.inc index 6dfee806c..37c1e69c3 100644 --- a/src/core/device_memory_manager.inc +++ b/src/core/device_memory_manager.inc | |||
| @@ -391,12 +391,12 @@ void DeviceMemoryManager<Traits>::WalkBlock(DAddr addr, std::size_t size, auto o | |||
| 391 | std::min((next_pages << Memory::YUZU_PAGEBITS) - page_offset, remaining_size); | 391 | std::min((next_pages << Memory::YUZU_PAGEBITS) - page_offset, remaining_size); |
| 392 | const auto current_vaddr = | 392 | const auto current_vaddr = |
| 393 | static_cast<u64>((page_index << Memory::YUZU_PAGEBITS) + page_offset); | 393 | static_cast<u64>((page_index << Memory::YUZU_PAGEBITS) + page_offset); |
| 394 | SCOPE_EXIT({ | 394 | SCOPE_EXIT{ |
| 395 | page_index += next_pages; | 395 | page_index += next_pages; |
| 396 | page_offset = 0; | 396 | page_offset = 0; |
| 397 | increment(copy_amount); | 397 | increment(copy_amount); |
| 398 | remaining_size -= copy_amount; | 398 | remaining_size -= copy_amount; |
| 399 | }); | 399 | }; |
| 400 | 400 | ||
| 401 | auto phys_addr = compressed_physical_ptr[page_index]; | 401 | auto phys_addr = compressed_physical_ptr[page_index]; |
| 402 | if (phys_addr == 0) { | 402 | if (phys_addr == 0) { |
diff --git a/src/core/file_sys/fs_directory.h b/src/core/file_sys/fs_directory.h index 25c9cb18a..3f90abb8f 100644 --- a/src/core/file_sys/fs_directory.h +++ b/src/core/file_sys/fs_directory.h | |||
| @@ -3,6 +3,10 @@ | |||
| 3 | 3 | ||
| 4 | #pragma once | 4 | #pragma once |
| 5 | 5 | ||
| 6 | #include <string_view> | ||
| 7 | #include "common/common_funcs.h" | ||
| 8 | #include "common/common_types.h" | ||
| 9 | |||
| 6 | namespace FileSys { | 10 | namespace FileSys { |
| 7 | 11 | ||
| 8 | constexpr inline size_t EntryNameLengthMax = 0x300; | 12 | constexpr inline size_t EntryNameLengthMax = 0x300; |
diff --git a/src/core/file_sys/fs_path_utility.h b/src/core/file_sys/fs_path_utility.h index e9011d065..5643141f9 100644 --- a/src/core/file_sys/fs_path_utility.h +++ b/src/core/file_sys/fs_path_utility.h | |||
| @@ -447,7 +447,7 @@ public: | |||
| 447 | char* replacement_path = nullptr; | 447 | char* replacement_path = nullptr; |
| 448 | size_t replacement_path_size = 0; | 448 | size_t replacement_path_size = 0; |
| 449 | 449 | ||
| 450 | SCOPE_EXIT({ | 450 | SCOPE_EXIT { |
| 451 | if (replacement_path != nullptr) { | 451 | if (replacement_path != nullptr) { |
| 452 | if (std::is_constant_evaluated()) { | 452 | if (std::is_constant_evaluated()) { |
| 453 | delete[] replacement_path; | 453 | delete[] replacement_path; |
| @@ -455,7 +455,7 @@ public: | |||
| 455 | Deallocate(replacement_path, replacement_path_size); | 455 | Deallocate(replacement_path, replacement_path_size); |
| 456 | } | 456 | } |
| 457 | } | 457 | } |
| 458 | }); | 458 | }; |
| 459 | 459 | ||
| 460 | // Perform path replacement, if necessary | 460 | // Perform path replacement, if necessary |
| 461 | if (IsParentDirectoryPathReplacementNeeded(cur_path)) { | 461 | if (IsParentDirectoryPathReplacementNeeded(cur_path)) { |
| @@ -1102,8 +1102,8 @@ public: | |||
| 1102 | R_SUCCEED(); | 1102 | R_SUCCEED(); |
| 1103 | } | 1103 | } |
| 1104 | 1104 | ||
| 1105 | static Result Normalize(char* dst, size_t dst_size, const char* path, size_t path_len, | 1105 | static constexpr Result Normalize(char* dst, size_t dst_size, const char* path, size_t path_len, |
| 1106 | const PathFlags& flags) { | 1106 | const PathFlags& flags) { |
| 1107 | // Use StringTraits names for remainder of scope | 1107 | // Use StringTraits names for remainder of scope |
| 1108 | using namespace StringTraits; | 1108 | using namespace StringTraits; |
| 1109 | 1109 | ||
| @@ -1199,7 +1199,7 @@ public: | |||
| 1199 | const size_t replaced_src_len = path_len - (src - path); | 1199 | const size_t replaced_src_len = path_len - (src - path); |
| 1200 | 1200 | ||
| 1201 | char* replaced_src = nullptr; | 1201 | char* replaced_src = nullptr; |
| 1202 | SCOPE_EXIT({ | 1202 | SCOPE_EXIT { |
| 1203 | if (replaced_src != nullptr) { | 1203 | if (replaced_src != nullptr) { |
| 1204 | if (std::is_constant_evaluated()) { | 1204 | if (std::is_constant_evaluated()) { |
| 1205 | delete[] replaced_src; | 1205 | delete[] replaced_src; |
| @@ -1207,7 +1207,7 @@ public: | |||
| 1207 | Deallocate(replaced_src, replaced_src_len); | 1207 | Deallocate(replaced_src, replaced_src_len); |
| 1208 | } | 1208 | } |
| 1209 | } | 1209 | } |
| 1210 | }); | 1210 | }; |
| 1211 | 1211 | ||
| 1212 | if (std::is_constant_evaluated()) { | 1212 | if (std::is_constant_evaluated()) { |
| 1213 | replaced_src = new char[replaced_src_len]; | 1213 | replaced_src = new char[replaced_src_len]; |
diff --git a/src/core/file_sys/fssystem/fssystem_hierarchical_sha256_storage.cpp b/src/core/file_sys/fssystem/fssystem_hierarchical_sha256_storage.cpp index caea0b8f8..a68fd973c 100644 --- a/src/core/file_sys/fssystem/fssystem_hierarchical_sha256_storage.cpp +++ b/src/core/file_sys/fssystem/fssystem_hierarchical_sha256_storage.cpp | |||
| @@ -36,7 +36,9 @@ Result HierarchicalSha256Storage::Initialize(VirtualFile* base_storages, s32 lay | |||
| 36 | // Get the base storage size. | 36 | // Get the base storage size. |
| 37 | m_base_storage_size = base_storages[2]->GetSize(); | 37 | m_base_storage_size = base_storages[2]->GetSize(); |
| 38 | { | 38 | { |
| 39 | auto size_guard = SCOPE_GUARD({ m_base_storage_size = 0; }); | 39 | auto size_guard = SCOPE_GUARD { |
| 40 | m_base_storage_size = 0; | ||
| 41 | }; | ||
| 40 | R_UNLESS(m_base_storage_size <= static_cast<s64>(HashSize) | 42 | R_UNLESS(m_base_storage_size <= static_cast<s64>(HashSize) |
| 41 | << m_log_size_ratio << m_log_size_ratio, | 43 | << m_log_size_ratio << m_log_size_ratio, |
| 42 | ResultHierarchicalSha256BaseStorageTooLarge); | 44 | ResultHierarchicalSha256BaseStorageTooLarge); |
diff --git a/src/core/file_sys/program_metadata.cpp b/src/core/file_sys/program_metadata.cpp index ae4e441c9..289969cc4 100644 --- a/src/core/file_sys/program_metadata.cpp +++ b/src/core/file_sys/program_metadata.cpp | |||
| @@ -98,7 +98,9 @@ Loader::ResultStatus ProgramMetadata::Load(VirtualFile file) { | |||
| 98 | 98 | ||
| 99 | Loader::ResultStatus ProgramMetadata::Reload(VirtualFile file) { | 99 | Loader::ResultStatus ProgramMetadata::Reload(VirtualFile file) { |
| 100 | const u64 original_program_id = aci_header.title_id; | 100 | const u64 original_program_id = aci_header.title_id; |
| 101 | SCOPE_EXIT({ aci_header.title_id = original_program_id; }); | 101 | SCOPE_EXIT { |
| 102 | aci_header.title_id = original_program_id; | ||
| 103 | }; | ||
| 102 | 104 | ||
| 103 | return this->Load(file); | 105 | return this->Load(file); |
| 104 | } | 106 | } |
diff --git a/src/core/hle/kernel/k_client_session.cpp b/src/core/hle/kernel/k_client_session.cpp index 472e8571c..3e01e3b67 100644 --- a/src/core/hle/kernel/k_client_session.cpp +++ b/src/core/hle/kernel/k_client_session.cpp | |||
| @@ -24,7 +24,9 @@ Result KClientSession::SendSyncRequest(uintptr_t address, size_t size) { | |||
| 24 | // Create a session request. | 24 | // Create a session request. |
| 25 | KSessionRequest* request = KSessionRequest::Create(m_kernel); | 25 | KSessionRequest* request = KSessionRequest::Create(m_kernel); |
| 26 | R_UNLESS(request != nullptr, ResultOutOfResource); | 26 | R_UNLESS(request != nullptr, ResultOutOfResource); |
| 27 | SCOPE_EXIT({ request->Close(); }); | 27 | SCOPE_EXIT { |
| 28 | request->Close(); | ||
| 29 | }; | ||
| 28 | 30 | ||
| 29 | // Initialize the request. | 31 | // Initialize the request. |
| 30 | request->Initialize(nullptr, address, size); | 32 | request->Initialize(nullptr, address, size); |
| @@ -37,7 +39,9 @@ Result KClientSession::SendAsyncRequest(KEvent* event, uintptr_t address, size_t | |||
| 37 | // Create a session request. | 39 | // Create a session request. |
| 38 | KSessionRequest* request = KSessionRequest::Create(m_kernel); | 40 | KSessionRequest* request = KSessionRequest::Create(m_kernel); |
| 39 | R_UNLESS(request != nullptr, ResultOutOfResource); | 41 | R_UNLESS(request != nullptr, ResultOutOfResource); |
| 40 | SCOPE_EXIT({ request->Close(); }); | 42 | SCOPE_EXIT { |
| 43 | request->Close(); | ||
| 44 | }; | ||
| 41 | 45 | ||
| 42 | // Initialize the request. | 46 | // Initialize the request. |
| 43 | request->Initialize(event, address, size); | 47 | request->Initialize(event, address, size); |
diff --git a/src/core/hle/kernel/k_page_table_base.cpp b/src/core/hle/kernel/k_page_table_base.cpp index 1dd86fb3c..19cdf4f3a 100644 --- a/src/core/hle/kernel/k_page_table_base.cpp +++ b/src/core/hle/kernel/k_page_table_base.cpp | |||
| @@ -1305,11 +1305,11 @@ Result KPageTableBase::UnmapCodeMemory(KProcessAddress dst_address, KProcessAddr | |||
| 1305 | 1305 | ||
| 1306 | // Ensure that we maintain the instruction cache. | 1306 | // Ensure that we maintain the instruction cache. |
| 1307 | bool reprotected_pages = false; | 1307 | bool reprotected_pages = false; |
| 1308 | SCOPE_EXIT({ | 1308 | SCOPE_EXIT { |
| 1309 | if (reprotected_pages && any_code_pages) { | 1309 | if (reprotected_pages && any_code_pages) { |
| 1310 | InvalidateInstructionCache(m_kernel, this, dst_address, size); | 1310 | InvalidateInstructionCache(m_kernel, this, dst_address, size); |
| 1311 | } | 1311 | } |
| 1312 | }); | 1312 | }; |
| 1313 | 1313 | ||
| 1314 | // Unmap. | 1314 | // Unmap. |
| 1315 | { | 1315 | { |
| @@ -1397,7 +1397,9 @@ Result KPageTableBase::MapInsecureMemory(KProcessAddress address, size_t size) { | |||
| 1397 | // Close the opened pages when we're done with them. | 1397 | // Close the opened pages when we're done with them. |
| 1398 | // If the mapping succeeds, each page will gain an extra reference, otherwise they will be freed | 1398 | // If the mapping succeeds, each page will gain an extra reference, otherwise they will be freed |
| 1399 | // automatically. | 1399 | // automatically. |
| 1400 | SCOPE_EXIT({ pg.Close(); }); | 1400 | SCOPE_EXIT { |
| 1401 | pg.Close(); | ||
| 1402 | }; | ||
| 1401 | 1403 | ||
| 1402 | // Clear all the newly allocated pages. | 1404 | // Clear all the newly allocated pages. |
| 1403 | for (const auto& it : pg) { | 1405 | for (const auto& it : pg) { |
| @@ -1603,7 +1605,9 @@ Result KPageTableBase::AllocateAndMapPagesImpl(PageLinkedList* page_list, KProce | |||
| 1603 | m_kernel.MemoryManager().AllocateAndOpen(std::addressof(pg), num_pages, m_allocate_option)); | 1605 | m_kernel.MemoryManager().AllocateAndOpen(std::addressof(pg), num_pages, m_allocate_option)); |
| 1604 | 1606 | ||
| 1605 | // Ensure that the page group is closed when we're done working with it. | 1607 | // Ensure that the page group is closed when we're done working with it. |
| 1606 | SCOPE_EXIT({ pg.Close(); }); | 1608 | SCOPE_EXIT { |
| 1609 | pg.Close(); | ||
| 1610 | }; | ||
| 1607 | 1611 | ||
| 1608 | // Clear all pages. | 1612 | // Clear all pages. |
| 1609 | for (const auto& it : pg) { | 1613 | for (const auto& it : pg) { |
| @@ -2191,7 +2195,9 @@ Result KPageTableBase::SetHeapSize(KProcessAddress* out, size_t size) { | |||
| 2191 | // Close the opened pages when we're done with them. | 2195 | // Close the opened pages when we're done with them. |
| 2192 | // If the mapping succeeds, each page will gain an extra reference, otherwise they will be freed | 2196 | // If the mapping succeeds, each page will gain an extra reference, otherwise they will be freed |
| 2193 | // automatically. | 2197 | // automatically. |
| 2194 | SCOPE_EXIT({ pg.Close(); }); | 2198 | SCOPE_EXIT { |
| 2199 | pg.Close(); | ||
| 2200 | }; | ||
| 2195 | 2201 | ||
| 2196 | // Clear all the newly allocated pages. | 2202 | // Clear all the newly allocated pages. |
| 2197 | for (const auto& it : pg) { | 2203 | for (const auto& it : pg) { |
| @@ -2592,7 +2598,9 @@ Result KPageTableBase::UnmapIoRegion(KProcessAddress dst_address, KPhysicalAddre | |||
| 2592 | // Temporarily unlock ourselves, so that other operations can occur while we flush the | 2598 | // Temporarily unlock ourselves, so that other operations can occur while we flush the |
| 2593 | // region. | 2599 | // region. |
| 2594 | m_general_lock.Unlock(); | 2600 | m_general_lock.Unlock(); |
| 2595 | SCOPE_EXIT({ m_general_lock.Lock(); }); | 2601 | SCOPE_EXIT { |
| 2602 | m_general_lock.Lock(); | ||
| 2603 | }; | ||
| 2596 | 2604 | ||
| 2597 | // Flush the region. | 2605 | // Flush the region. |
| 2598 | R_ASSERT(FlushDataCache(dst_address, size)); | 2606 | R_ASSERT(FlushDataCache(dst_address, size)); |
| @@ -3311,10 +3319,10 @@ Result KPageTableBase::ReadIoMemoryImpl(KProcessAddress dst_addr, KPhysicalAddre | |||
| 3311 | // Ensure we unmap the io memory when we're done with it. | 3319 | // Ensure we unmap the io memory when we're done with it. |
| 3312 | const KPageProperties unmap_properties = | 3320 | const KPageProperties unmap_properties = |
| 3313 | KPageProperties{KMemoryPermission::None, false, false, DisableMergeAttribute::None}; | 3321 | KPageProperties{KMemoryPermission::None, false, false, DisableMergeAttribute::None}; |
| 3314 | SCOPE_EXIT({ | 3322 | SCOPE_EXIT { |
| 3315 | R_ASSERT(this->Operate(updater.GetPageList(), io_addr, map_size / PageSize, 0, false, | 3323 | R_ASSERT(this->Operate(updater.GetPageList(), io_addr, map_size / PageSize, 0, false, |
| 3316 | unmap_properties, OperationType::Unmap, true)); | 3324 | unmap_properties, OperationType::Unmap, true)); |
| 3317 | }); | 3325 | }; |
| 3318 | 3326 | ||
| 3319 | // Read the memory. | 3327 | // Read the memory. |
| 3320 | const KProcessAddress read_addr = io_addr + (GetInteger(phys_addr) & (PageSize - 1)); | 3328 | const KProcessAddress read_addr = io_addr + (GetInteger(phys_addr) & (PageSize - 1)); |
| @@ -3347,10 +3355,10 @@ Result KPageTableBase::WriteIoMemoryImpl(KPhysicalAddress phys_addr, KProcessAdd | |||
| 3347 | // Ensure we unmap the io memory when we're done with it. | 3355 | // Ensure we unmap the io memory when we're done with it. |
| 3348 | const KPageProperties unmap_properties = | 3356 | const KPageProperties unmap_properties = |
| 3349 | KPageProperties{KMemoryPermission::None, false, false, DisableMergeAttribute::None}; | 3357 | KPageProperties{KMemoryPermission::None, false, false, DisableMergeAttribute::None}; |
| 3350 | SCOPE_EXIT({ | 3358 | SCOPE_EXIT { |
| 3351 | R_ASSERT(this->Operate(updater.GetPageList(), io_addr, map_size / PageSize, 0, false, | 3359 | R_ASSERT(this->Operate(updater.GetPageList(), io_addr, map_size / PageSize, 0, false, |
| 3352 | unmap_properties, OperationType::Unmap, true)); | 3360 | unmap_properties, OperationType::Unmap, true)); |
| 3353 | }); | 3361 | }; |
| 3354 | 3362 | ||
| 3355 | // Write the memory. | 3363 | // Write the memory. |
| 3356 | const KProcessAddress write_addr = io_addr + (GetInteger(phys_addr) & (PageSize - 1)); | 3364 | const KProcessAddress write_addr = io_addr + (GetInteger(phys_addr) & (PageSize - 1)); |
| @@ -4491,14 +4499,14 @@ Result KPageTableBase::SetupForIpcServer(KProcessAddress* out_addr, size_t size, | |||
| 4491 | 4499 | ||
| 4492 | // If the partial pages are mapped, an extra reference will have been opened. Otherwise, they'll | 4500 | // If the partial pages are mapped, an extra reference will have been opened. Otherwise, they'll |
| 4493 | // free on scope exit. | 4501 | // free on scope exit. |
| 4494 | SCOPE_EXIT({ | 4502 | SCOPE_EXIT { |
| 4495 | if (start_partial_page != 0) { | 4503 | if (start_partial_page != 0) { |
| 4496 | m_kernel.MemoryManager().Close(start_partial_page, 1); | 4504 | m_kernel.MemoryManager().Close(start_partial_page, 1); |
| 4497 | } | 4505 | } |
| 4498 | if (end_partial_page != 0) { | 4506 | if (end_partial_page != 0) { |
| 4499 | m_kernel.MemoryManager().Close(end_partial_page, 1); | 4507 | m_kernel.MemoryManager().Close(end_partial_page, 1); |
| 4500 | } | 4508 | } |
| 4501 | }); | 4509 | }; |
| 4502 | 4510 | ||
| 4503 | ON_RESULT_FAILURE { | 4511 | ON_RESULT_FAILURE { |
| 4504 | if (cur_mapped_addr != dst_addr) { | 4512 | if (cur_mapped_addr != dst_addr) { |
| @@ -5166,10 +5174,10 @@ Result KPageTableBase::MapPhysicalMemory(KProcessAddress address, size_t size) { | |||
| 5166 | GetCurrentProcess(m_kernel).GetId(), m_heap_fill_value)); | 5174 | GetCurrentProcess(m_kernel).GetId(), m_heap_fill_value)); |
| 5167 | 5175 | ||
| 5168 | // If we fail in the next bit (or retry), we need to cleanup the pages. | 5176 | // If we fail in the next bit (or retry), we need to cleanup the pages. |
| 5169 | auto pg_guard = SCOPE_GUARD({ | 5177 | auto pg_guard = SCOPE_GUARD { |
| 5170 | pg.OpenFirst(); | 5178 | pg.OpenFirst(); |
| 5171 | pg.Close(); | 5179 | pg.Close(); |
| 5172 | }); | 5180 | }; |
| 5173 | 5181 | ||
| 5174 | // Map the memory. | 5182 | // Map the memory. |
| 5175 | { | 5183 | { |
| @@ -5694,7 +5702,9 @@ Result KPageTableBase::Operate(PageLinkedList* page_list, KProcessAddress virt_a | |||
| 5694 | 5702 | ||
| 5695 | // Ensure that any pages we track are closed on exit. | 5703 | // Ensure that any pages we track are closed on exit. |
| 5696 | KPageGroup pages_to_close(m_kernel, this->GetBlockInfoManager()); | 5704 | KPageGroup pages_to_close(m_kernel, this->GetBlockInfoManager()); |
| 5697 | SCOPE_EXIT({ pages_to_close.CloseAndReset(); }); | 5705 | SCOPE_EXIT { |
| 5706 | pages_to_close.CloseAndReset(); | ||
| 5707 | }; | ||
| 5698 | 5708 | ||
| 5699 | // Make a page group representing the region to unmap. | 5709 | // Make a page group representing the region to unmap. |
| 5700 | this->MakePageGroup(pages_to_close, virt_addr, num_pages); | 5710 | this->MakePageGroup(pages_to_close, virt_addr, num_pages); |
diff --git a/src/core/hle/kernel/k_process.cpp b/src/core/hle/kernel/k_process.cpp index 1bcc42890..cb9a11a63 100644 --- a/src/core/hle/kernel/k_process.cpp +++ b/src/core/hle/kernel/k_process.cpp | |||
| @@ -77,7 +77,9 @@ Result TerminateChildren(KernelCore& kernel, KProcess* process, | |||
| 77 | } | 77 | } |
| 78 | 78 | ||
| 79 | // Terminate and close the thread. | 79 | // Terminate and close the thread. |
| 80 | SCOPE_EXIT({ cur_child->Close(); }); | 80 | SCOPE_EXIT { |
| 81 | cur_child->Close(); | ||
| 82 | }; | ||
| 81 | 83 | ||
| 82 | if (const Result terminate_result = cur_child->Terminate(); | 84 | if (const Result terminate_result = cur_child->Terminate(); |
| 83 | ResultTerminationRequested == terminate_result) { | 85 | ResultTerminationRequested == terminate_result) { |
| @@ -466,11 +468,11 @@ void KProcess::DoWorkerTaskImpl() { | |||
| 466 | 468 | ||
| 467 | Result KProcess::StartTermination() { | 469 | Result KProcess::StartTermination() { |
| 468 | // Finalize the handle table when we're done, if the process isn't immortal. | 470 | // Finalize the handle table when we're done, if the process isn't immortal. |
| 469 | SCOPE_EXIT({ | 471 | SCOPE_EXIT { |
| 470 | if (!m_is_immortal) { | 472 | if (!m_is_immortal) { |
| 471 | this->FinalizeHandleTable(); | 473 | this->FinalizeHandleTable(); |
| 472 | } | 474 | } |
| 473 | }); | 475 | }; |
| 474 | 476 | ||
| 475 | // Terminate child threads other than the current one. | 477 | // Terminate child threads other than the current one. |
| 476 | R_RETURN(TerminateChildren(m_kernel, this, GetCurrentThreadPointer(m_kernel))); | 478 | R_RETURN(TerminateChildren(m_kernel, this, GetCurrentThreadPointer(m_kernel))); |
| @@ -964,7 +966,9 @@ Result KProcess::Run(s32 priority, size_t stack_size) { | |||
| 964 | // Create a new thread for the process. | 966 | // Create a new thread for the process. |
| 965 | KThread* main_thread = KThread::Create(m_kernel); | 967 | KThread* main_thread = KThread::Create(m_kernel); |
| 966 | R_UNLESS(main_thread != nullptr, ResultOutOfResource); | 968 | R_UNLESS(main_thread != nullptr, ResultOutOfResource); |
| 967 | SCOPE_EXIT({ main_thread->Close(); }); | 969 | SCOPE_EXIT { |
| 970 | main_thread->Close(); | ||
| 971 | }; | ||
| 968 | 972 | ||
| 969 | // Initialize the thread. | 973 | // Initialize the thread. |
| 970 | R_TRY(KThread::InitializeUserThread(m_kernel.System(), main_thread, this->GetEntryPoint(), 0, | 974 | R_TRY(KThread::InitializeUserThread(m_kernel.System(), main_thread, this->GetEntryPoint(), 0, |
| @@ -1155,7 +1159,9 @@ Result KProcess::LoadFromMetadata(const FileSys::ProgramMetadata& metadata, std: | |||
| 1155 | Kernel::CreateResourceLimitForProcess(m_kernel.System(), physical_memory_size); | 1159 | Kernel::CreateResourceLimitForProcess(m_kernel.System(), physical_memory_size); |
| 1156 | 1160 | ||
| 1157 | // Ensure we maintain a clean state on exit. | 1161 | // Ensure we maintain a clean state on exit. |
| 1158 | SCOPE_EXIT({ res_limit->Close(); }); | 1162 | SCOPE_EXIT { |
| 1163 | res_limit->Close(); | ||
| 1164 | }; | ||
| 1159 | 1165 | ||
| 1160 | // Declare flags and code address. | 1166 | // Declare flags and code address. |
| 1161 | Svc::CreateProcessFlag flag{}; | 1167 | Svc::CreateProcessFlag flag{}; |
diff --git a/src/core/hle/kernel/k_server_session.cpp b/src/core/hle/kernel/k_server_session.cpp index adaabdd6d..40c3323ef 100644 --- a/src/core/hle/kernel/k_server_session.cpp +++ b/src/core/hle/kernel/k_server_session.cpp | |||
| @@ -651,11 +651,11 @@ Result ReceiveMessage(KernelCore& kernel, bool& recv_list_broken, uint64_t dst_m | |||
| 651 | // Process any special data. | 651 | // Process any special data. |
| 652 | if (src_header.GetHasSpecialHeader()) { | 652 | if (src_header.GetHasSpecialHeader()) { |
| 653 | // After we process, make sure we track whether the receive list is broken. | 653 | // After we process, make sure we track whether the receive list is broken. |
| 654 | SCOPE_EXIT({ | 654 | SCOPE_EXIT { |
| 655 | if (offset > dst_recv_list_idx) { | 655 | if (offset > dst_recv_list_idx) { |
| 656 | recv_list_broken = true; | 656 | recv_list_broken = true; |
| 657 | } | 657 | } |
| 658 | }); | 658 | }; |
| 659 | 659 | ||
| 660 | // Process special data. | 660 | // Process special data. |
| 661 | R_TRY(ProcessMessageSpecialData<false>(offset, dst_process, src_process, src_thread, | 661 | R_TRY(ProcessMessageSpecialData<false>(offset, dst_process, src_process, src_thread, |
| @@ -665,11 +665,11 @@ Result ReceiveMessage(KernelCore& kernel, bool& recv_list_broken, uint64_t dst_m | |||
| 665 | // Process any pointer buffers. | 665 | // Process any pointer buffers. |
| 666 | for (auto i = 0; i < src_header.GetPointerCount(); ++i) { | 666 | for (auto i = 0; i < src_header.GetPointerCount(); ++i) { |
| 667 | // After we process, make sure we track whether the receive list is broken. | 667 | // After we process, make sure we track whether the receive list is broken. |
| 668 | SCOPE_EXIT({ | 668 | SCOPE_EXIT { |
| 669 | if (offset > dst_recv_list_idx) { | 669 | if (offset > dst_recv_list_idx) { |
| 670 | recv_list_broken = true; | 670 | recv_list_broken = true; |
| 671 | } | 671 | } |
| 672 | }); | 672 | }; |
| 673 | 673 | ||
| 674 | R_TRY(ProcessReceiveMessagePointerDescriptors( | 674 | R_TRY(ProcessReceiveMessagePointerDescriptors( |
| 675 | offset, pointer_key, dst_page_table, src_page_table, dst_msg, src_msg, dst_recv_list, | 675 | offset, pointer_key, dst_page_table, src_page_table, dst_msg, src_msg, dst_recv_list, |
| @@ -680,11 +680,11 @@ Result ReceiveMessage(KernelCore& kernel, bool& recv_list_broken, uint64_t dst_m | |||
| 680 | // Process any map alias buffers. | 680 | // Process any map alias buffers. |
| 681 | for (auto i = 0; i < src_header.GetMapAliasCount(); ++i) { | 681 | for (auto i = 0; i < src_header.GetMapAliasCount(); ++i) { |
| 682 | // After we process, make sure we track whether the receive list is broken. | 682 | // After we process, make sure we track whether the receive list is broken. |
| 683 | SCOPE_EXIT({ | 683 | SCOPE_EXIT { |
| 684 | if (offset > dst_recv_list_idx) { | 684 | if (offset > dst_recv_list_idx) { |
| 685 | recv_list_broken = true; | 685 | recv_list_broken = true; |
| 686 | } | 686 | } |
| 687 | }); | 687 | }; |
| 688 | 688 | ||
| 689 | // We process in order send, recv, exch. Buffers after send (recv/exch) are ReadWrite. | 689 | // We process in order send, recv, exch. Buffers after send (recv/exch) are ReadWrite. |
| 690 | const KMemoryPermission perm = (i >= src_header.GetSendCount()) | 690 | const KMemoryPermission perm = (i >= src_header.GetSendCount()) |
| @@ -702,11 +702,11 @@ Result ReceiveMessage(KernelCore& kernel, bool& recv_list_broken, uint64_t dst_m | |||
| 702 | // Process any raw data. | 702 | // Process any raw data. |
| 703 | if (const auto raw_count = src_header.GetRawCount(); raw_count != 0) { | 703 | if (const auto raw_count = src_header.GetRawCount(); raw_count != 0) { |
| 704 | // After we process, make sure we track whether the receive list is broken. | 704 | // After we process, make sure we track whether the receive list is broken. |
| 705 | SCOPE_EXIT({ | 705 | SCOPE_EXIT { |
| 706 | if (offset + raw_count > dst_recv_list_idx) { | 706 | if (offset + raw_count > dst_recv_list_idx) { |
| 707 | recv_list_broken = true; | 707 | recv_list_broken = true; |
| 708 | } | 708 | } |
| 709 | }); | 709 | }; |
| 710 | 710 | ||
| 711 | // Get the offset and size. | 711 | // Get the offset and size. |
| 712 | const size_t offset_words = offset * sizeof(u32); | 712 | const size_t offset_words = offset * sizeof(u32); |
| @@ -1124,7 +1124,9 @@ Result KServerSession::ReceiveRequest(uintptr_t server_message, uintptr_t server | |||
| 1124 | client_thread->Open(); | 1124 | client_thread->Open(); |
| 1125 | } | 1125 | } |
| 1126 | 1126 | ||
| 1127 | SCOPE_EXIT({ client_thread->Close(); }); | 1127 | SCOPE_EXIT { |
| 1128 | client_thread->Close(); | ||
| 1129 | }; | ||
| 1128 | 1130 | ||
| 1129 | // Set the request as our current. | 1131 | // Set the request as our current. |
| 1130 | m_current_request = request; | 1132 | m_current_request = request; |
| @@ -1174,7 +1176,9 @@ Result KServerSession::ReceiveRequest(uintptr_t server_message, uintptr_t server | |||
| 1174 | // Reply to the client. | 1176 | // Reply to the client. |
| 1175 | { | 1177 | { |
| 1176 | // After we reply, close our reference to the request. | 1178 | // After we reply, close our reference to the request. |
| 1177 | SCOPE_EXIT({ request->Close(); }); | 1179 | SCOPE_EXIT { |
| 1180 | request->Close(); | ||
| 1181 | }; | ||
| 1178 | 1182 | ||
| 1179 | // Get the event to check whether the request is async. | 1183 | // Get the event to check whether the request is async. |
| 1180 | if (KEvent* event = request->GetEvent(); event != nullptr) { | 1184 | if (KEvent* event = request->GetEvent(); event != nullptr) { |
| @@ -1236,7 +1240,9 @@ Result KServerSession::SendReply(uintptr_t server_message, uintptr_t server_buff | |||
| 1236 | } | 1240 | } |
| 1237 | 1241 | ||
| 1238 | // Close reference to the request once we're done processing it. | 1242 | // Close reference to the request once we're done processing it. |
| 1239 | SCOPE_EXIT({ request->Close(); }); | 1243 | SCOPE_EXIT { |
| 1244 | request->Close(); | ||
| 1245 | }; | ||
| 1240 | 1246 | ||
| 1241 | // Extract relevant information from the request. | 1247 | // Extract relevant information from the request. |
| 1242 | const uint64_t client_message = request->GetAddress(); | 1248 | const uint64_t client_message = request->GetAddress(); |
| @@ -1394,7 +1400,9 @@ void KServerSession::CleanupRequests() { | |||
| 1394 | } | 1400 | } |
| 1395 | 1401 | ||
| 1396 | // Close a reference to the request once it's cleaned up. | 1402 | // Close a reference to the request once it's cleaned up. |
| 1397 | SCOPE_EXIT({ request->Close(); }); | 1403 | SCOPE_EXIT { |
| 1404 | request->Close(); | ||
| 1405 | }; | ||
| 1398 | 1406 | ||
| 1399 | // Extract relevant information from the request. | 1407 | // Extract relevant information from the request. |
| 1400 | const uint64_t client_message = request->GetAddress(); | 1408 | const uint64_t client_message = request->GetAddress(); |
| @@ -1491,7 +1499,9 @@ void KServerSession::OnClientClosed() { | |||
| 1491 | ASSERT(thread != nullptr); | 1499 | ASSERT(thread != nullptr); |
| 1492 | 1500 | ||
| 1493 | // Ensure that we close the request when done. | 1501 | // Ensure that we close the request when done. |
| 1494 | SCOPE_EXIT({ request->Close(); }); | 1502 | SCOPE_EXIT { |
| 1503 | request->Close(); | ||
| 1504 | }; | ||
| 1495 | 1505 | ||
| 1496 | // If we're terminating, close a reference to the thread and event. | 1506 | // If we're terminating, close a reference to the thread and event. |
| 1497 | if (terminate) { | 1507 | if (terminate) { |
diff --git a/src/core/hle/kernel/k_thread_local_page.cpp b/src/core/hle/kernel/k_thread_local_page.cpp index a632d1634..1952c0083 100644 --- a/src/core/hle/kernel/k_thread_local_page.cpp +++ b/src/core/hle/kernel/k_thread_local_page.cpp | |||
| @@ -21,7 +21,9 @@ Result KThreadLocalPage::Initialize(KernelCore& kernel, KProcess* process) { | |||
| 21 | // Allocate a new page. | 21 | // Allocate a new page. |
| 22 | KPageBuffer* page_buf = KPageBuffer::Allocate(kernel); | 22 | KPageBuffer* page_buf = KPageBuffer::Allocate(kernel); |
| 23 | R_UNLESS(page_buf != nullptr, ResultOutOfMemory); | 23 | R_UNLESS(page_buf != nullptr, ResultOutOfMemory); |
| 24 | auto page_buf_guard = SCOPE_GUARD({ KPageBuffer::Free(kernel, page_buf); }); | 24 | auto page_buf_guard = SCOPE_GUARD { |
| 25 | KPageBuffer::Free(kernel, page_buf); | ||
| 26 | }; | ||
| 25 | 27 | ||
| 26 | // Map the address in. | 28 | // Map the address in. |
| 27 | const auto phys_addr = kernel.System().DeviceMemory().GetPhysicalAddr(page_buf); | 29 | const auto phys_addr = kernel.System().DeviceMemory().GetPhysicalAddr(page_buf); |
diff --git a/src/core/hle/kernel/k_transfer_memory.cpp b/src/core/hle/kernel/k_transfer_memory.cpp index cbb1b02bb..09295e8ad 100644 --- a/src/core/hle/kernel/k_transfer_memory.cpp +++ b/src/core/hle/kernel/k_transfer_memory.cpp | |||
| @@ -24,7 +24,9 @@ Result KTransferMemory::Initialize(KProcessAddress addr, std::size_t size, | |||
| 24 | 24 | ||
| 25 | // Construct the page group, guarding to make sure our state is valid on exit. | 25 | // Construct the page group, guarding to make sure our state is valid on exit. |
| 26 | m_page_group.emplace(m_kernel, page_table.GetBlockInfoManager()); | 26 | m_page_group.emplace(m_kernel, page_table.GetBlockInfoManager()); |
| 27 | auto pg_guard = SCOPE_GUARD({ m_page_group.reset(); }); | 27 | auto pg_guard = SCOPE_GUARD { |
| 28 | m_page_group.reset(); | ||
| 29 | }; | ||
| 28 | 30 | ||
| 29 | // Lock the memory. | 31 | // Lock the memory. |
| 30 | R_TRY(page_table.LockForTransferMemory(std::addressof(*m_page_group), addr, size, | 32 | R_TRY(page_table.LockForTransferMemory(std::addressof(*m_page_group), addr, size, |
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index 4f4b02fac..9e5eaeec4 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp | |||
| @@ -109,7 +109,9 @@ struct KernelCore::Impl { | |||
| 109 | 109 | ||
| 110 | void Shutdown() { | 110 | void Shutdown() { |
| 111 | is_shutting_down.store(true, std::memory_order_relaxed); | 111 | is_shutting_down.store(true, std::memory_order_relaxed); |
| 112 | SCOPE_EXIT({ is_shutting_down.store(false, std::memory_order_relaxed); }); | 112 | SCOPE_EXIT { |
| 113 | is_shutting_down.store(false, std::memory_order_relaxed); | ||
| 114 | }; | ||
| 113 | 115 | ||
| 114 | CloseServices(); | 116 | CloseServices(); |
| 115 | 117 | ||
| @@ -1080,7 +1082,9 @@ std::jthread KernelCore::RunOnHostCoreProcess(std::string&& process_name, | |||
| 1080 | process->Initialize(Svc::CreateProcessParameter{}, GetSystemResourceLimit(), false))); | 1082 | process->Initialize(Svc::CreateProcessParameter{}, GetSystemResourceLimit(), false))); |
| 1081 | 1083 | ||
| 1082 | // Ensure that we don't hold onto any extra references. | 1084 | // Ensure that we don't hold onto any extra references. |
| 1083 | SCOPE_EXIT({ process->Close(); }); | 1085 | SCOPE_EXIT { |
| 1086 | process->Close(); | ||
| 1087 | }; | ||
| 1084 | 1088 | ||
| 1085 | // Register the new process. | 1089 | // Register the new process. |
| 1086 | KProcess::Register(*this, process); | 1090 | KProcess::Register(*this, process); |
| @@ -1108,7 +1112,9 @@ void KernelCore::RunOnGuestCoreProcess(std::string&& process_name, std::function | |||
| 1108 | process->Initialize(Svc::CreateProcessParameter{}, GetSystemResourceLimit(), false))); | 1112 | process->Initialize(Svc::CreateProcessParameter{}, GetSystemResourceLimit(), false))); |
| 1109 | 1113 | ||
| 1110 | // Ensure that we don't hold onto any extra references. | 1114 | // Ensure that we don't hold onto any extra references. |
| 1111 | SCOPE_EXIT({ process->Close(); }); | 1115 | SCOPE_EXIT { |
| 1116 | process->Close(); | ||
| 1117 | }; | ||
| 1112 | 1118 | ||
| 1113 | // Register the new process. | 1119 | // Register the new process. |
| 1114 | KProcess::Register(*this, process); | 1120 | KProcess::Register(*this, process); |
diff --git a/src/core/hle/kernel/svc/svc_code_memory.cpp b/src/core/hle/kernel/svc/svc_code_memory.cpp index bae4cb0cd..7be2802f0 100644 --- a/src/core/hle/kernel/svc/svc_code_memory.cpp +++ b/src/core/hle/kernel/svc/svc_code_memory.cpp | |||
| @@ -45,7 +45,9 @@ Result CreateCodeMemory(Core::System& system, Handle* out, u64 address, uint64_t | |||
| 45 | 45 | ||
| 46 | KCodeMemory* code_mem = KCodeMemory::Create(kernel); | 46 | KCodeMemory* code_mem = KCodeMemory::Create(kernel); |
| 47 | R_UNLESS(code_mem != nullptr, ResultOutOfResource); | 47 | R_UNLESS(code_mem != nullptr, ResultOutOfResource); |
| 48 | SCOPE_EXIT({ code_mem->Close(); }); | 48 | SCOPE_EXIT { |
| 49 | code_mem->Close(); | ||
| 50 | }; | ||
| 49 | 51 | ||
| 50 | // Verify that the region is in range. | 52 | // Verify that the region is in range. |
| 51 | R_UNLESS(GetCurrentProcess(system.Kernel()).GetPageTable().Contains(address, size), | 53 | R_UNLESS(GetCurrentProcess(system.Kernel()).GetPageTable().Contains(address, size), |
diff --git a/src/core/hle/kernel/svc/svc_device_address_space.cpp b/src/core/hle/kernel/svc/svc_device_address_space.cpp index 42add9473..ac828320f 100644 --- a/src/core/hle/kernel/svc/svc_device_address_space.cpp +++ b/src/core/hle/kernel/svc/svc_device_address_space.cpp | |||
| @@ -28,7 +28,9 @@ Result CreateDeviceAddressSpace(Core::System& system, Handle* out, uint64_t das_ | |||
| 28 | // Create the device address space. | 28 | // Create the device address space. |
| 29 | KDeviceAddressSpace* das = KDeviceAddressSpace::Create(system.Kernel()); | 29 | KDeviceAddressSpace* das = KDeviceAddressSpace::Create(system.Kernel()); |
| 30 | R_UNLESS(das != nullptr, ResultOutOfResource); | 30 | R_UNLESS(das != nullptr, ResultOutOfResource); |
| 31 | SCOPE_EXIT({ das->Close(); }); | 31 | SCOPE_EXIT { |
| 32 | das->Close(); | ||
| 33 | }; | ||
| 32 | 34 | ||
| 33 | // Initialize the device address space. | 35 | // Initialize the device address space. |
| 34 | R_TRY(das->Initialize(das_address, das_size)); | 36 | R_TRY(das->Initialize(das_address, das_size)); |
diff --git a/src/core/hle/kernel/svc/svc_event.cpp b/src/core/hle/kernel/svc/svc_event.cpp index 901202e6a..8e4beb396 100644 --- a/src/core/hle/kernel/svc/svc_event.cpp +++ b/src/core/hle/kernel/svc/svc_event.cpp | |||
| @@ -72,10 +72,10 @@ Result CreateEvent(Core::System& system, Handle* out_write, Handle* out_read) { | |||
| 72 | event_reservation.Commit(); | 72 | event_reservation.Commit(); |
| 73 | 73 | ||
| 74 | // Ensure that we clean up the event (and its only references are handle table) on function end. | 74 | // Ensure that we clean up the event (and its only references are handle table) on function end. |
| 75 | SCOPE_EXIT({ | 75 | SCOPE_EXIT { |
| 76 | event->GetReadableEvent().Close(); | 76 | event->GetReadableEvent().Close(); |
| 77 | event->Close(); | 77 | event->Close(); |
| 78 | }); | 78 | }; |
| 79 | 79 | ||
| 80 | // Register the event. | 80 | // Register the event. |
| 81 | KEvent::Register(kernel, event); | 81 | KEvent::Register(kernel, event); |
diff --git a/src/core/hle/kernel/svc/svc_ipc.cpp b/src/core/hle/kernel/svc/svc_ipc.cpp index 85cc4f561..b619bd70a 100644 --- a/src/core/hle/kernel/svc/svc_ipc.cpp +++ b/src/core/hle/kernel/svc/svc_ipc.cpp | |||
| @@ -129,11 +129,11 @@ Result ReplyAndReceiveImpl(KernelCore& kernel, int32_t* out_index, uintptr_t mes | |||
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | // Ensure handles are closed when we're done. | 131 | // Ensure handles are closed when we're done. |
| 132 | SCOPE_EXIT({ | 132 | SCOPE_EXIT { |
| 133 | for (auto i = 0; i < num_handles; ++i) { | 133 | for (auto i = 0; i < num_handles; ++i) { |
| 134 | objs[i]->Close(); | 134 | objs[i]->Close(); |
| 135 | } | 135 | } |
| 136 | }); | 136 | }; |
| 137 | 137 | ||
| 138 | R_RETURN(ReplyAndReceiveImpl(kernel, out_index, message, buffer_size, message_paddr, objs, | 138 | R_RETURN(ReplyAndReceiveImpl(kernel, out_index, message, buffer_size, message_paddr, objs, |
| 139 | num_handles, reply_target, timeout_ns)); | 139 | num_handles, reply_target, timeout_ns)); |
| @@ -208,10 +208,10 @@ Result SendAsyncRequestWithUserBuffer(Core::System& system, Handle* out_event_ha | |||
| 208 | event_reservation.Commit(); | 208 | event_reservation.Commit(); |
| 209 | 209 | ||
| 210 | // At end of scope, kill the standing references to the sub events. | 210 | // At end of scope, kill the standing references to the sub events. |
| 211 | SCOPE_EXIT({ | 211 | SCOPE_EXIT { |
| 212 | event->GetReadableEvent().Close(); | 212 | event->GetReadableEvent().Close(); |
| 213 | event->Close(); | 213 | event->Close(); |
| 214 | }); | 214 | }; |
| 215 | 215 | ||
| 216 | // Register the event. | 216 | // Register the event. |
| 217 | KEvent::Register(system.Kernel(), event); | 217 | KEvent::Register(system.Kernel(), event); |
diff --git a/src/core/hle/kernel/svc/svc_port.cpp b/src/core/hle/kernel/svc/svc_port.cpp index 737749f7d..9a22dadaf 100644 --- a/src/core/hle/kernel/svc/svc_port.cpp +++ b/src/core/hle/kernel/svc/svc_port.cpp | |||
| @@ -68,10 +68,10 @@ Result CreatePort(Core::System& system, Handle* out_server, Handle* out_client, | |||
| 68 | port->Initialize(max_sessions, is_light, name); | 68 | port->Initialize(max_sessions, is_light, name); |
| 69 | 69 | ||
| 70 | // Ensure that we clean up the port (and its only references are handle table) on function end. | 70 | // Ensure that we clean up the port (and its only references are handle table) on function end. |
| 71 | SCOPE_EXIT({ | 71 | SCOPE_EXIT { |
| 72 | port->GetServerPort().Close(); | 72 | port->GetServerPort().Close(); |
| 73 | port->GetClientPort().Close(); | 73 | port->GetClientPort().Close(); |
| 74 | }); | 74 | }; |
| 75 | 75 | ||
| 76 | // Register the port. | 76 | // Register the port. |
| 77 | KPort::Register(kernel, port); | 77 | KPort::Register(kernel, port); |
| @@ -150,10 +150,10 @@ Result ManageNamedPort(Core::System& system, Handle* out_server_handle, uint64_t | |||
| 150 | KPort::Register(system.Kernel(), port); | 150 | KPort::Register(system.Kernel(), port); |
| 151 | 151 | ||
| 152 | // Ensure that our only reference to the port is in the handle table when we're done. | 152 | // Ensure that our only reference to the port is in the handle table when we're done. |
| 153 | SCOPE_EXIT({ | 153 | SCOPE_EXIT { |
| 154 | port->GetClientPort().Close(); | 154 | port->GetClientPort().Close(); |
| 155 | port->GetServerPort().Close(); | 155 | port->GetServerPort().Close(); |
| 156 | }); | 156 | }; |
| 157 | 157 | ||
| 158 | // Register the handle in the table. | 158 | // Register the handle in the table. |
| 159 | R_TRY(handle_table.Add(out_server_handle, std::addressof(port->GetServerPort()))); | 159 | R_TRY(handle_table.Add(out_server_handle, std::addressof(port->GetServerPort()))); |
diff --git a/src/core/hle/kernel/svc/svc_resource_limit.cpp b/src/core/hle/kernel/svc/svc_resource_limit.cpp index c8e820b6a..6f3972482 100644 --- a/src/core/hle/kernel/svc/svc_resource_limit.cpp +++ b/src/core/hle/kernel/svc/svc_resource_limit.cpp | |||
| @@ -18,7 +18,9 @@ Result CreateResourceLimit(Core::System& system, Handle* out_handle) { | |||
| 18 | R_UNLESS(resource_limit != nullptr, ResultOutOfResource); | 18 | R_UNLESS(resource_limit != nullptr, ResultOutOfResource); |
| 19 | 19 | ||
| 20 | // Ensure we don't leak a reference to the limit. | 20 | // Ensure we don't leak a reference to the limit. |
| 21 | SCOPE_EXIT({ resource_limit->Close(); }); | 21 | SCOPE_EXIT { |
| 22 | resource_limit->Close(); | ||
| 23 | }; | ||
| 22 | 24 | ||
| 23 | // Initialize the resource limit. | 25 | // Initialize the resource limit. |
| 24 | resource_limit->Initialize(); | 26 | resource_limit->Initialize(); |
diff --git a/src/core/hle/kernel/svc/svc_session.cpp b/src/core/hle/kernel/svc/svc_session.cpp index 2f5905f32..b034d21d1 100644 --- a/src/core/hle/kernel/svc/svc_session.cpp +++ b/src/core/hle/kernel/svc/svc_session.cpp | |||
| @@ -69,10 +69,10 @@ Result CreateSession(Core::System& system, Handle* out_server, Handle* out_clien | |||
| 69 | 69 | ||
| 70 | // Ensure that we clean up the session (and its only references are handle table) on function | 70 | // Ensure that we clean up the session (and its only references are handle table) on function |
| 71 | // end. | 71 | // end. |
| 72 | SCOPE_EXIT({ | 72 | SCOPE_EXIT { |
| 73 | session->GetClientSession().Close(); | 73 | session->GetClientSession().Close(); |
| 74 | session->GetServerSession().Close(); | 74 | session->GetServerSession().Close(); |
| 75 | }); | 75 | }; |
| 76 | 76 | ||
| 77 | // Register the session. | 77 | // Register the session. |
| 78 | T::Register(system.Kernel(), session); | 78 | T::Register(system.Kernel(), session); |
diff --git a/src/core/hle/kernel/svc/svc_synchronization.cpp b/src/core/hle/kernel/svc/svc_synchronization.cpp index 6c79cfd8d..fb03908d7 100644 --- a/src/core/hle/kernel/svc/svc_synchronization.cpp +++ b/src/core/hle/kernel/svc/svc_synchronization.cpp | |||
| @@ -78,11 +78,11 @@ Result WaitSynchronization(Core::System& system, int32_t* out_index, u64 user_ha | |||
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | // Ensure handles are closed when we're done. | 80 | // Ensure handles are closed when we're done. |
| 81 | SCOPE_EXIT({ | 81 | SCOPE_EXIT { |
| 82 | for (auto i = 0; i < num_handles; ++i) { | 82 | for (auto i = 0; i < num_handles; ++i) { |
| 83 | objs[i]->Close(); | 83 | objs[i]->Close(); |
| 84 | } | 84 | } |
| 85 | }); | 85 | }; |
| 86 | 86 | ||
| 87 | // Convert the timeout from nanoseconds to ticks. | 87 | // Convert the timeout from nanoseconds to ticks. |
| 88 | s64 timeout; | 88 | s64 timeout; |
diff --git a/src/core/hle/kernel/svc/svc_thread.cpp b/src/core/hle/kernel/svc/svc_thread.cpp index 7681afa33..7517bb9d3 100644 --- a/src/core/hle/kernel/svc/svc_thread.cpp +++ b/src/core/hle/kernel/svc/svc_thread.cpp | |||
| @@ -51,7 +51,9 @@ Result CreateThread(Core::System& system, Handle* out_handle, u64 entry_point, u | |||
| 51 | // Create the thread. | 51 | // Create the thread. |
| 52 | KThread* thread = KThread::Create(kernel); | 52 | KThread* thread = KThread::Create(kernel); |
| 53 | R_UNLESS(thread != nullptr, ResultOutOfResource) | 53 | R_UNLESS(thread != nullptr, ResultOutOfResource) |
| 54 | SCOPE_EXIT({ thread->Close(); }); | 54 | SCOPE_EXIT { |
| 55 | thread->Close(); | ||
| 56 | }; | ||
| 55 | 57 | ||
| 56 | // Initialize the thread. | 58 | // Initialize the thread. |
| 57 | { | 59 | { |
diff --git a/src/core/hle/kernel/svc/svc_transfer_memory.cpp b/src/core/hle/kernel/svc/svc_transfer_memory.cpp index 671bca23f..2ea0d4421 100644 --- a/src/core/hle/kernel/svc/svc_transfer_memory.cpp +++ b/src/core/hle/kernel/svc/svc_transfer_memory.cpp | |||
| @@ -52,7 +52,9 @@ Result CreateTransferMemory(Core::System& system, Handle* out, u64 address, u64 | |||
| 52 | R_UNLESS(trmem != nullptr, ResultOutOfResource); | 52 | R_UNLESS(trmem != nullptr, ResultOutOfResource); |
| 53 | 53 | ||
| 54 | // Ensure the only reference is in the handle table when we're done. | 54 | // Ensure the only reference is in the handle table when we're done. |
| 55 | SCOPE_EXIT({ trmem->Close(); }); | 55 | SCOPE_EXIT { |
| 56 | trmem->Close(); | ||
| 57 | }; | ||
| 56 | 58 | ||
| 57 | // Ensure that the region is in range. | 59 | // Ensure that the region is in range. |
| 58 | R_UNLESS(process.GetPageTable().Contains(address, size), ResultInvalidCurrentMemory); | 60 | R_UNLESS(process.GetPageTable().Contains(address, size), ResultInvalidCurrentMemory); |
diff --git a/src/core/hle/service/am/applet_data_broker.cpp b/src/core/hle/service/am/applet_data_broker.cpp index 4d58c4db5..9057244a9 100644 --- a/src/core/hle/service/am/applet_data_broker.cpp +++ b/src/core/hle/service/am/applet_data_broker.cpp | |||
| @@ -24,11 +24,11 @@ void AppletStorageChannel::Push(std::shared_ptr<IStorage> storage) { | |||
| 24 | Result AppletStorageChannel::Pop(std::shared_ptr<IStorage>* out_storage) { | 24 | Result AppletStorageChannel::Pop(std::shared_ptr<IStorage>* out_storage) { |
| 25 | std::scoped_lock lk{m_lock}; | 25 | std::scoped_lock lk{m_lock}; |
| 26 | 26 | ||
| 27 | SCOPE_EXIT({ | 27 | SCOPE_EXIT { |
| 28 | if (m_data.empty()) { | 28 | if (m_data.empty()) { |
| 29 | m_event.Clear(); | 29 | m_event.Clear(); |
| 30 | } | 30 | } |
| 31 | }); | 31 | }; |
| 32 | 32 | ||
| 33 | R_UNLESS(!m_data.empty(), AM::ResultNoDataInChannel); | 33 | R_UNLESS(!m_data.empty(), AM::ResultNoDataInChannel); |
| 34 | 34 | ||
diff --git a/src/core/hle/service/am/process.cpp b/src/core/hle/service/am/process.cpp index 992c50713..388d2045c 100644 --- a/src/core/hle/service/am/process.cpp +++ b/src/core/hle/service/am/process.cpp | |||
| @@ -68,7 +68,9 @@ bool Process::Initialize(u64 program_id, u8 minimum_key_generation, u8 maximum_k | |||
| 68 | Kernel::KProcess::Register(m_system.Kernel(), process); | 68 | Kernel::KProcess::Register(m_system.Kernel(), process); |
| 69 | 69 | ||
| 70 | // On exit, ensure we free the additional reference to the process. | 70 | // On exit, ensure we free the additional reference to the process. |
| 71 | SCOPE_EXIT({ process->Close(); }); | 71 | SCOPE_EXIT { |
| 72 | process->Close(); | ||
| 73 | }; | ||
| 72 | 74 | ||
| 73 | // Insert process modules into memory. | 75 | // Insert process modules into memory. |
| 74 | const auto [load_result, load_parameters] = app_loader->Load(*process, m_system); | 76 | const auto [load_result, load_parameters] = app_loader->Load(*process, m_system); |
diff --git a/src/core/hle/service/glue/time/static.cpp b/src/core/hle/service/glue/time/static.cpp index ec9b0efb1..b801faef2 100644 --- a/src/core/hle/service/glue/time/static.cpp +++ b/src/core/hle/service/glue/time/static.cpp | |||
| @@ -142,16 +142,18 @@ Result StaticService::SetStandardSteadyClockInternalOffset(s64 offset_ns) { | |||
| 142 | } | 142 | } |
| 143 | 143 | ||
| 144 | Result StaticService::GetStandardSteadyClockRtcValue(Out<s64> out_rtc_value) { | 144 | Result StaticService::GetStandardSteadyClockRtcValue(Out<s64> out_rtc_value) { |
| 145 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_rtc_value={}", *out_rtc_value); }); | 145 | SCOPE_EXIT { |
| 146 | LOG_DEBUG(Service_Time, "called. out_rtc_value={}", *out_rtc_value); | ||
| 147 | }; | ||
| 146 | 148 | ||
| 147 | R_RETURN(m_standard_steady_clock_resource.GetRtcTimeInSeconds(*out_rtc_value)); | 149 | R_RETURN(m_standard_steady_clock_resource.GetRtcTimeInSeconds(*out_rtc_value)); |
| 148 | } | 150 | } |
| 149 | 151 | ||
| 150 | Result StaticService::IsStandardUserSystemClockAutomaticCorrectionEnabled( | 152 | Result StaticService::IsStandardUserSystemClockAutomaticCorrectionEnabled( |
| 151 | Out<bool> out_automatic_correction) { | 153 | Out<bool> out_automatic_correction) { |
| 152 | SCOPE_EXIT({ | 154 | SCOPE_EXIT { |
| 153 | LOG_DEBUG(Service_Time, "called. out_automatic_correction={}", *out_automatic_correction); | 155 | LOG_DEBUG(Service_Time, "called. out_automatic_correction={}", *out_automatic_correction); |
| 154 | }); | 156 | }; |
| 155 | 157 | ||
| 156 | R_RETURN(m_wrapped_service->IsStandardUserSystemClockAutomaticCorrectionEnabled( | 158 | R_RETURN(m_wrapped_service->IsStandardUserSystemClockAutomaticCorrectionEnabled( |
| 157 | out_automatic_correction)); | 159 | out_automatic_correction)); |
| @@ -166,21 +168,27 @@ Result StaticService::SetStandardUserSystemClockAutomaticCorrectionEnabled( | |||
| 166 | } | 168 | } |
| 167 | 169 | ||
| 168 | Result StaticService::GetStandardUserSystemClockInitialYear(Out<s32> out_year) { | 170 | Result StaticService::GetStandardUserSystemClockInitialYear(Out<s32> out_year) { |
| 169 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_year={}", *out_year); }); | 171 | SCOPE_EXIT { |
| 172 | LOG_DEBUG(Service_Time, "called. out_year={}", *out_year); | ||
| 173 | }; | ||
| 170 | 174 | ||
| 171 | R_RETURN(m_set_sys->GetSettingsItemValueImpl<s32>(*out_year, "time", | 175 | R_RETURN(m_set_sys->GetSettingsItemValueImpl<s32>(*out_year, "time", |
| 172 | "standard_user_clock_initial_year")); | 176 | "standard_user_clock_initial_year")); |
| 173 | } | 177 | } |
| 174 | 178 | ||
| 175 | Result StaticService::IsStandardNetworkSystemClockAccuracySufficient(Out<bool> out_is_sufficient) { | 179 | Result StaticService::IsStandardNetworkSystemClockAccuracySufficient(Out<bool> out_is_sufficient) { |
| 176 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_is_sufficient={}", *out_is_sufficient); }); | 180 | SCOPE_EXIT { |
| 181 | LOG_DEBUG(Service_Time, "called. out_is_sufficient={}", *out_is_sufficient); | ||
| 182 | }; | ||
| 177 | 183 | ||
| 178 | R_RETURN(m_wrapped_service->IsStandardNetworkSystemClockAccuracySufficient(out_is_sufficient)); | 184 | R_RETURN(m_wrapped_service->IsStandardNetworkSystemClockAccuracySufficient(out_is_sufficient)); |
| 179 | } | 185 | } |
| 180 | 186 | ||
| 181 | Result StaticService::GetStandardUserSystemClockAutomaticCorrectionUpdatedTime( | 187 | Result StaticService::GetStandardUserSystemClockAutomaticCorrectionUpdatedTime( |
| 182 | Out<Service::PSC::Time::SteadyClockTimePoint> out_time_point) { | 188 | Out<Service::PSC::Time::SteadyClockTimePoint> out_time_point) { |
| 183 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_time_point={}", *out_time_point); }); | 189 | SCOPE_EXIT { |
| 190 | LOG_DEBUG(Service_Time, "called. out_time_point={}", *out_time_point); | ||
| 191 | }; | ||
| 184 | 192 | ||
| 185 | R_RETURN(m_wrapped_service->GetStandardUserSystemClockAutomaticCorrectionUpdatedTime( | 193 | R_RETURN(m_wrapped_service->GetStandardUserSystemClockAutomaticCorrectionUpdatedTime( |
| 186 | out_time_point)); | 194 | out_time_point)); |
| @@ -188,15 +196,18 @@ Result StaticService::GetStandardUserSystemClockAutomaticCorrectionUpdatedTime( | |||
| 188 | 196 | ||
| 189 | Result StaticService::CalculateMonotonicSystemClockBaseTimePoint( | 197 | Result StaticService::CalculateMonotonicSystemClockBaseTimePoint( |
| 190 | Out<s64> out_time, const Service::PSC::Time::SystemClockContext& context) { | 198 | Out<s64> out_time, const Service::PSC::Time::SystemClockContext& context) { |
| 191 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. context={} out_time={}", context, *out_time); }); | 199 | SCOPE_EXIT { |
| 200 | LOG_DEBUG(Service_Time, "called. context={} out_time={}", context, *out_time); | ||
| 201 | }; | ||
| 192 | 202 | ||
| 193 | R_RETURN(m_wrapped_service->CalculateMonotonicSystemClockBaseTimePoint(out_time, context)); | 203 | R_RETURN(m_wrapped_service->CalculateMonotonicSystemClockBaseTimePoint(out_time, context)); |
| 194 | } | 204 | } |
| 195 | 205 | ||
| 196 | Result StaticService::GetClockSnapshot(OutClockSnapshot out_snapshot, | 206 | Result StaticService::GetClockSnapshot(OutClockSnapshot out_snapshot, |
| 197 | Service::PSC::Time::TimeType type) { | 207 | Service::PSC::Time::TimeType type) { |
| 198 | SCOPE_EXIT( | 208 | SCOPE_EXIT { |
| 199 | { LOG_DEBUG(Service_Time, "called. type={} out_snapshot={}", type, *out_snapshot); }); | 209 | LOG_DEBUG(Service_Time, "called. type={} out_snapshot={}", type, *out_snapshot); |
| 210 | }; | ||
| 200 | 211 | ||
| 201 | R_RETURN(m_wrapped_service->GetClockSnapshot(out_snapshot, type)); | 212 | R_RETURN(m_wrapped_service->GetClockSnapshot(out_snapshot, type)); |
| 202 | } | 213 | } |
| @@ -205,11 +216,11 @@ Result StaticService::GetClockSnapshotFromSystemClockContext( | |||
| 205 | Service::PSC::Time::TimeType type, OutClockSnapshot out_snapshot, | 216 | Service::PSC::Time::TimeType type, OutClockSnapshot out_snapshot, |
| 206 | const Service::PSC::Time::SystemClockContext& user_context, | 217 | const Service::PSC::Time::SystemClockContext& user_context, |
| 207 | const Service::PSC::Time::SystemClockContext& network_context) { | 218 | const Service::PSC::Time::SystemClockContext& network_context) { |
| 208 | SCOPE_EXIT({ | 219 | SCOPE_EXIT { |
| 209 | LOG_DEBUG(Service_Time, | 220 | LOG_DEBUG(Service_Time, |
| 210 | "called. type={} out_snapshot={} user_context={} network_context={}", type, | 221 | "called. type={} out_snapshot={} user_context={} network_context={}", type, |
| 211 | *out_snapshot, user_context, network_context); | 222 | *out_snapshot, user_context, network_context); |
| 212 | }); | 223 | }; |
| 213 | 224 | ||
| 214 | R_RETURN(m_wrapped_service->GetClockSnapshotFromSystemClockContext( | 225 | R_RETURN(m_wrapped_service->GetClockSnapshotFromSystemClockContext( |
| 215 | type, out_snapshot, user_context, network_context)); | 226 | type, out_snapshot, user_context, network_context)); |
| @@ -218,14 +229,18 @@ Result StaticService::GetClockSnapshotFromSystemClockContext( | |||
| 218 | Result StaticService::CalculateStandardUserSystemClockDifferenceByUser(Out<s64> out_time, | 229 | Result StaticService::CalculateStandardUserSystemClockDifferenceByUser(Out<s64> out_time, |
| 219 | InClockSnapshot a, | 230 | InClockSnapshot a, |
| 220 | InClockSnapshot b) { | 231 | InClockSnapshot b) { |
| 221 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. a={} b={} out_time={}", *a, *b, *out_time); }); | 232 | SCOPE_EXIT { |
| 233 | LOG_DEBUG(Service_Time, "called. a={} b={} out_time={}", *a, *b, *out_time); | ||
| 234 | }; | ||
| 222 | 235 | ||
| 223 | R_RETURN(m_wrapped_service->CalculateStandardUserSystemClockDifferenceByUser(out_time, a, b)); | 236 | R_RETURN(m_wrapped_service->CalculateStandardUserSystemClockDifferenceByUser(out_time, a, b)); |
| 224 | } | 237 | } |
| 225 | 238 | ||
| 226 | Result StaticService::CalculateSpanBetween(Out<s64> out_time, InClockSnapshot a, | 239 | Result StaticService::CalculateSpanBetween(Out<s64> out_time, InClockSnapshot a, |
| 227 | InClockSnapshot b) { | 240 | InClockSnapshot b) { |
| 228 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. a={} b={} out_time={}", *a, *b, *out_time); }); | 241 | SCOPE_EXIT { |
| 242 | LOG_DEBUG(Service_Time, "called. a={} b={} out_time={}", *a, *b, *out_time); | ||
| 243 | }; | ||
| 229 | 244 | ||
| 230 | R_RETURN(m_wrapped_service->CalculateSpanBetween(out_time, a, b)); | 245 | R_RETURN(m_wrapped_service->CalculateSpanBetween(out_time, a, b)); |
| 231 | } | 246 | } |
diff --git a/src/core/hle/service/glue/time/time_zone.cpp b/src/core/hle/service/glue/time/time_zone.cpp index 36f163419..f4d0c87d5 100644 --- a/src/core/hle/service/glue/time/time_zone.cpp +++ b/src/core/hle/service/glue/time/time_zone.cpp | |||
| @@ -57,7 +57,9 @@ TimeZoneService::~TimeZoneService() = default; | |||
| 57 | 57 | ||
| 58 | Result TimeZoneService::GetDeviceLocationName( | 58 | Result TimeZoneService::GetDeviceLocationName( |
| 59 | Out<Service::PSC::Time::LocationName> out_location_name) { | 59 | Out<Service::PSC::Time::LocationName> out_location_name) { |
| 60 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_location_name={}", *out_location_name); }); | 60 | SCOPE_EXIT { |
| 61 | LOG_DEBUG(Service_Time, "called. out_location_name={}", *out_location_name); | ||
| 62 | }; | ||
| 61 | 63 | ||
| 62 | R_RETURN(m_wrapped_service->GetDeviceLocationName(out_location_name)); | 64 | R_RETURN(m_wrapped_service->GetDeviceLocationName(out_location_name)); |
| 63 | } | 65 | } |
| @@ -94,7 +96,9 @@ Result TimeZoneService::SetDeviceLocationName( | |||
| 94 | } | 96 | } |
| 95 | 97 | ||
| 96 | Result TimeZoneService::GetTotalLocationNameCount(Out<u32> out_count) { | 98 | Result TimeZoneService::GetTotalLocationNameCount(Out<u32> out_count) { |
| 97 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_count={}", *out_count); }); | 99 | SCOPE_EXIT { |
| 100 | LOG_DEBUG(Service_Time, "called. out_count={}", *out_count); | ||
| 101 | }; | ||
| 98 | 102 | ||
| 99 | R_RETURN(m_wrapped_service->GetTotalLocationNameCount(out_count)); | 103 | R_RETURN(m_wrapped_service->GetTotalLocationNameCount(out_count)); |
| 100 | } | 104 | } |
| @@ -102,10 +106,10 @@ Result TimeZoneService::GetTotalLocationNameCount(Out<u32> out_count) { | |||
| 102 | Result TimeZoneService::LoadLocationNameList( | 106 | Result TimeZoneService::LoadLocationNameList( |
| 103 | Out<u32> out_count, | 107 | Out<u32> out_count, |
| 104 | OutArray<Service::PSC::Time::LocationName, BufferAttr_HipcMapAlias> out_names, u32 index) { | 108 | OutArray<Service::PSC::Time::LocationName, BufferAttr_HipcMapAlias> out_names, u32 index) { |
| 105 | SCOPE_EXIT({ | 109 | SCOPE_EXIT { |
| 106 | LOG_DEBUG(Service_Time, "called. index={} out_count={} out_names[0]={} out_names[1]={}", | 110 | LOG_DEBUG(Service_Time, "called. index={} out_count={} out_names[0]={} out_names[1]={}", |
| 107 | index, *out_count, out_names[0], out_names[1]); | 111 | index, *out_count, out_names[0], out_names[1]); |
| 108 | }); | 112 | }; |
| 109 | 113 | ||
| 110 | std::scoped_lock l{m_mutex}; | 114 | std::scoped_lock l{m_mutex}; |
| 111 | R_RETURN(GetTimeZoneLocationList(*out_count, out_names, out_names.size(), index)); | 115 | R_RETURN(GetTimeZoneLocationList(*out_count, out_names, out_names.size(), index)); |
| @@ -124,7 +128,9 @@ Result TimeZoneService::LoadTimeZoneRule(OutRule out_rule, | |||
| 124 | 128 | ||
| 125 | Result TimeZoneService::GetTimeZoneRuleVersion( | 129 | Result TimeZoneService::GetTimeZoneRuleVersion( |
| 126 | Out<Service::PSC::Time::RuleVersion> out_rule_version) { | 130 | Out<Service::PSC::Time::RuleVersion> out_rule_version) { |
| 127 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_rule_version={}", *out_rule_version); }); | 131 | SCOPE_EXIT { |
| 132 | LOG_DEBUG(Service_Time, "called. out_rule_version={}", *out_rule_version); | ||
| 133 | }; | ||
| 128 | 134 | ||
| 129 | R_RETURN(m_wrapped_service->GetTimeZoneRuleVersion(out_rule_version)); | 135 | R_RETURN(m_wrapped_service->GetTimeZoneRuleVersion(out_rule_version)); |
| 130 | } | 136 | } |
| @@ -132,10 +138,10 @@ Result TimeZoneService::GetTimeZoneRuleVersion( | |||
| 132 | Result TimeZoneService::GetDeviceLocationNameAndUpdatedTime( | 138 | Result TimeZoneService::GetDeviceLocationNameAndUpdatedTime( |
| 133 | Out<Service::PSC::Time::LocationName> location_name, | 139 | Out<Service::PSC::Time::LocationName> location_name, |
| 134 | Out<Service::PSC::Time::SteadyClockTimePoint> out_time_point) { | 140 | Out<Service::PSC::Time::SteadyClockTimePoint> out_time_point) { |
| 135 | SCOPE_EXIT({ | 141 | SCOPE_EXIT { |
| 136 | LOG_DEBUG(Service_Time, "called. location_name={} out_time_point={}", *location_name, | 142 | LOG_DEBUG(Service_Time, "called. location_name={} out_time_point={}", *location_name, |
| 137 | *out_time_point); | 143 | *out_time_point); |
| 138 | }); | 144 | }; |
| 139 | 145 | ||
| 140 | R_RETURN(m_wrapped_service->GetDeviceLocationNameAndUpdatedTime(location_name, out_time_point)); | 146 | R_RETURN(m_wrapped_service->GetDeviceLocationNameAndUpdatedTime(location_name, out_time_point)); |
| 141 | } | 147 | } |
| @@ -178,10 +184,10 @@ Result TimeZoneService::GetDeviceLocationNameOperationEventReadableHandle( | |||
| 178 | Result TimeZoneService::ToCalendarTime( | 184 | Result TimeZoneService::ToCalendarTime( |
| 179 | Out<Service::PSC::Time::CalendarTime> out_calendar_time, | 185 | Out<Service::PSC::Time::CalendarTime> out_calendar_time, |
| 180 | Out<Service::PSC::Time::CalendarAdditionalInfo> out_additional_info, s64 time, InRule rule) { | 186 | Out<Service::PSC::Time::CalendarAdditionalInfo> out_additional_info, s64 time, InRule rule) { |
| 181 | SCOPE_EXIT({ | 187 | SCOPE_EXIT { |
| 182 | LOG_DEBUG(Service_Time, "called. time={} out_calendar_time={} out_additional_info={}", time, | 188 | LOG_DEBUG(Service_Time, "called. time={} out_calendar_time={} out_additional_info={}", time, |
| 183 | *out_calendar_time, *out_additional_info); | 189 | *out_calendar_time, *out_additional_info); |
| 184 | }); | 190 | }; |
| 185 | 191 | ||
| 186 | R_RETURN(m_wrapped_service->ToCalendarTime(out_calendar_time, out_additional_info, time, rule)); | 192 | R_RETURN(m_wrapped_service->ToCalendarTime(out_calendar_time, out_additional_info, time, rule)); |
| 187 | } | 193 | } |
| @@ -189,10 +195,10 @@ Result TimeZoneService::ToCalendarTime( | |||
| 189 | Result TimeZoneService::ToCalendarTimeWithMyRule( | 195 | Result TimeZoneService::ToCalendarTimeWithMyRule( |
| 190 | Out<Service::PSC::Time::CalendarTime> out_calendar_time, | 196 | Out<Service::PSC::Time::CalendarTime> out_calendar_time, |
| 191 | Out<Service::PSC::Time::CalendarAdditionalInfo> out_additional_info, s64 time) { | 197 | Out<Service::PSC::Time::CalendarAdditionalInfo> out_additional_info, s64 time) { |
| 192 | SCOPE_EXIT({ | 198 | SCOPE_EXIT { |
| 193 | LOG_DEBUG(Service_Time, "called. time={} out_calendar_time={} out_additional_info={}", time, | 199 | LOG_DEBUG(Service_Time, "called. time={} out_calendar_time={} out_additional_info={}", time, |
| 194 | *out_calendar_time, *out_additional_info); | 200 | *out_calendar_time, *out_additional_info); |
| 195 | }); | 201 | }; |
| 196 | 202 | ||
| 197 | R_RETURN( | 203 | R_RETURN( |
| 198 | m_wrapped_service->ToCalendarTimeWithMyRule(out_calendar_time, out_additional_info, time)); | 204 | m_wrapped_service->ToCalendarTimeWithMyRule(out_calendar_time, out_additional_info, time)); |
| @@ -202,11 +208,11 @@ Result TimeZoneService::ToPosixTime(Out<u32> out_count, | |||
| 202 | OutArray<s64, BufferAttr_HipcPointer> out_times, | 208 | OutArray<s64, BufferAttr_HipcPointer> out_times, |
| 203 | const Service::PSC::Time::CalendarTime& calendar_time, | 209 | const Service::PSC::Time::CalendarTime& calendar_time, |
| 204 | InRule rule) { | 210 | InRule rule) { |
| 205 | SCOPE_EXIT({ | 211 | SCOPE_EXIT { |
| 206 | LOG_DEBUG(Service_Time, | 212 | LOG_DEBUG(Service_Time, |
| 207 | "called. calendar_time={} out_count={} out_times[0]={} out_times[1]={}", | 213 | "called. calendar_time={} out_count={} out_times[0]={} out_times[1]={}", |
| 208 | calendar_time, *out_count, out_times[0], out_times[1]); | 214 | calendar_time, *out_count, out_times[0], out_times[1]); |
| 209 | }); | 215 | }; |
| 210 | 216 | ||
| 211 | R_RETURN(m_wrapped_service->ToPosixTime(out_count, out_times, calendar_time, rule)); | 217 | R_RETURN(m_wrapped_service->ToPosixTime(out_count, out_times, calendar_time, rule)); |
| 212 | } | 218 | } |
| @@ -214,11 +220,11 @@ Result TimeZoneService::ToPosixTime(Out<u32> out_count, | |||
| 214 | Result TimeZoneService::ToPosixTimeWithMyRule( | 220 | Result TimeZoneService::ToPosixTimeWithMyRule( |
| 215 | Out<u32> out_count, OutArray<s64, BufferAttr_HipcPointer> out_times, | 221 | Out<u32> out_count, OutArray<s64, BufferAttr_HipcPointer> out_times, |
| 216 | const Service::PSC::Time::CalendarTime& calendar_time) { | 222 | const Service::PSC::Time::CalendarTime& calendar_time) { |
| 217 | SCOPE_EXIT({ | 223 | SCOPE_EXIT { |
| 218 | LOG_DEBUG(Service_Time, | 224 | LOG_DEBUG(Service_Time, |
| 219 | "called. calendar_time={} out_count={} out_times[0]={} out_times[1]={}", | 225 | "called. calendar_time={} out_count={} out_times[0]={} out_times[1]={}", |
| 220 | calendar_time, *out_count, out_times[0], out_times[1]); | 226 | calendar_time, *out_count, out_times[0], out_times[1]); |
| 221 | }); | 227 | }; |
| 222 | 228 | ||
| 223 | R_RETURN(m_wrapped_service->ToPosixTimeWithMyRule(out_count, out_times, calendar_time)); | 229 | R_RETURN(m_wrapped_service->ToPosixTimeWithMyRule(out_count, out_times, calendar_time)); |
| 224 | } | 230 | } |
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp b/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp index 250d01de3..0265d55f2 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp | |||
| @@ -92,11 +92,11 @@ NvResult nvhost_ctrl::IocCtrlEventWait(IocCtrlEventWaitParams& params, bool is_a | |||
| 92 | 92 | ||
| 93 | bool must_unmark_fail = !is_allocation; | 93 | bool must_unmark_fail = !is_allocation; |
| 94 | const u32 event_id = params.value.raw; | 94 | const u32 event_id = params.value.raw; |
| 95 | SCOPE_EXIT({ | 95 | SCOPE_EXIT { |
| 96 | if (must_unmark_fail) { | 96 | if (must_unmark_fail) { |
| 97 | events[event_id].fails = 0; | 97 | events[event_id].fails = 0; |
| 98 | } | 98 | } |
| 99 | }); | 99 | }; |
| 100 | 100 | ||
| 101 | const u32 fence_id = static_cast<u32>(params.fence.id); | 101 | const u32 fence_id = static_cast<u32>(params.fence.id); |
| 102 | 102 | ||
diff --git a/src/core/hle/service/nvdrv/nvdrv_interface.cpp b/src/core/hle/service/nvdrv/nvdrv_interface.cpp index 241006cc8..258970fd5 100644 --- a/src/core/hle/service/nvdrv/nvdrv_interface.cpp +++ b/src/core/hle/service/nvdrv/nvdrv_interface.cpp | |||
| @@ -154,10 +154,10 @@ void NVDRV::Close(HLERequestContext& ctx) { | |||
| 154 | void NVDRV::Initialize(HLERequestContext& ctx) { | 154 | void NVDRV::Initialize(HLERequestContext& ctx) { |
| 155 | LOG_WARNING(Service_NVDRV, "(STUBBED) called"); | 155 | LOG_WARNING(Service_NVDRV, "(STUBBED) called"); |
| 156 | IPC::ResponseBuilder rb{ctx, 3}; | 156 | IPC::ResponseBuilder rb{ctx, 3}; |
| 157 | SCOPE_EXIT({ | 157 | SCOPE_EXIT { |
| 158 | rb.Push(ResultSuccess); | 158 | rb.Push(ResultSuccess); |
| 159 | rb.PushEnum(NvResult::Success); | 159 | rb.PushEnum(NvResult::Success); |
| 160 | }); | 160 | }; |
| 161 | 161 | ||
| 162 | if (is_initialized) { | 162 | if (is_initialized) { |
| 163 | // No need to initialize again | 163 | // No need to initialize again |
diff --git a/src/core/hle/service/psc/time/static.cpp b/src/core/hle/service/psc/time/static.cpp index 24b85cc61..9a0adb295 100644 --- a/src/core/hle/service/psc/time/static.cpp +++ b/src/core/hle/service/psc/time/static.cpp | |||
| @@ -144,7 +144,9 @@ Result StaticService::GetStandardSteadyClockRtcValue(Out<s64> out_rtc_value) { | |||
| 144 | 144 | ||
| 145 | Result StaticService::IsStandardUserSystemClockAutomaticCorrectionEnabled( | 145 | Result StaticService::IsStandardUserSystemClockAutomaticCorrectionEnabled( |
| 146 | Out<bool> out_is_enabled) { | 146 | Out<bool> out_is_enabled) { |
| 147 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_is_enabled={}", *out_is_enabled); }); | 147 | SCOPE_EXIT { |
| 148 | LOG_DEBUG(Service_Time, "called. out_is_enabled={}", *out_is_enabled); | ||
| 149 | }; | ||
| 148 | 150 | ||
| 149 | R_UNLESS(m_user_system_clock.IsInitialized(), ResultClockUninitialized); | 151 | R_UNLESS(m_user_system_clock.IsInitialized(), ResultClockUninitialized); |
| 150 | 152 | ||
| @@ -180,7 +182,9 @@ Result StaticService::GetStandardUserSystemClockInitialYear(Out<s32> out_year) { | |||
| 180 | } | 182 | } |
| 181 | 183 | ||
| 182 | Result StaticService::IsStandardNetworkSystemClockAccuracySufficient(Out<bool> out_is_sufficient) { | 184 | Result StaticService::IsStandardNetworkSystemClockAccuracySufficient(Out<bool> out_is_sufficient) { |
| 183 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_is_sufficient={}", *out_is_sufficient); }); | 185 | SCOPE_EXIT { |
| 186 | LOG_DEBUG(Service_Time, "called. out_is_sufficient={}", *out_is_sufficient); | ||
| 187 | }; | ||
| 184 | 188 | ||
| 185 | *out_is_sufficient = m_network_system_clock.IsAccuracySufficient(); | 189 | *out_is_sufficient = m_network_system_clock.IsAccuracySufficient(); |
| 186 | 190 | ||
| @@ -189,7 +193,9 @@ Result StaticService::IsStandardNetworkSystemClockAccuracySufficient(Out<bool> o | |||
| 189 | 193 | ||
| 190 | Result StaticService::GetStandardUserSystemClockAutomaticCorrectionUpdatedTime( | 194 | Result StaticService::GetStandardUserSystemClockAutomaticCorrectionUpdatedTime( |
| 191 | Out<SteadyClockTimePoint> out_time_point) { | 195 | Out<SteadyClockTimePoint> out_time_point) { |
| 192 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_time_point={}", *out_time_point); }); | 196 | SCOPE_EXIT { |
| 197 | LOG_DEBUG(Service_Time, "called. out_time_point={}", *out_time_point); | ||
| 198 | }; | ||
| 193 | 199 | ||
| 194 | R_UNLESS(m_user_system_clock.IsInitialized(), ResultClockUninitialized); | 200 | R_UNLESS(m_user_system_clock.IsInitialized(), ResultClockUninitialized); |
| 195 | 201 | ||
| @@ -200,7 +206,9 @@ Result StaticService::GetStandardUserSystemClockAutomaticCorrectionUpdatedTime( | |||
| 200 | 206 | ||
| 201 | Result StaticService::CalculateMonotonicSystemClockBaseTimePoint( | 207 | Result StaticService::CalculateMonotonicSystemClockBaseTimePoint( |
| 202 | Out<s64> out_time, const SystemClockContext& context) { | 208 | Out<s64> out_time, const SystemClockContext& context) { |
| 203 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. context={} out_time={}", context, *out_time); }); | 209 | SCOPE_EXIT { |
| 210 | LOG_DEBUG(Service_Time, "called. context={} out_time={}", context, *out_time); | ||
| 211 | }; | ||
| 204 | 212 | ||
| 205 | R_UNLESS(m_time->m_standard_steady_clock.IsInitialized(), ResultClockUninitialized); | 213 | R_UNLESS(m_time->m_standard_steady_clock.IsInitialized(), ResultClockUninitialized); |
| 206 | 214 | ||
| @@ -219,8 +227,9 @@ Result StaticService::CalculateMonotonicSystemClockBaseTimePoint( | |||
| 219 | } | 227 | } |
| 220 | 228 | ||
| 221 | Result StaticService::GetClockSnapshot(OutClockSnapshot out_snapshot, TimeType type) { | 229 | Result StaticService::GetClockSnapshot(OutClockSnapshot out_snapshot, TimeType type) { |
| 222 | SCOPE_EXIT( | 230 | SCOPE_EXIT { |
| 223 | { LOG_DEBUG(Service_Time, "called. type={} out_snapshot={}", type, *out_snapshot); }); | 231 | LOG_DEBUG(Service_Time, "called. type={} out_snapshot={}", type, *out_snapshot); |
| 232 | }; | ||
| 224 | 233 | ||
| 225 | SystemClockContext user_context{}; | 234 | SystemClockContext user_context{}; |
| 226 | R_TRY(m_user_system_clock.GetContext(user_context)); | 235 | R_TRY(m_user_system_clock.GetContext(user_context)); |
| @@ -234,11 +243,11 @@ Result StaticService::GetClockSnapshot(OutClockSnapshot out_snapshot, TimeType t | |||
| 234 | Result StaticService::GetClockSnapshotFromSystemClockContext( | 243 | Result StaticService::GetClockSnapshotFromSystemClockContext( |
| 235 | TimeType type, OutClockSnapshot out_snapshot, const SystemClockContext& user_context, | 244 | TimeType type, OutClockSnapshot out_snapshot, const SystemClockContext& user_context, |
| 236 | const SystemClockContext& network_context) { | 245 | const SystemClockContext& network_context) { |
| 237 | SCOPE_EXIT({ | 246 | SCOPE_EXIT { |
| 238 | LOG_DEBUG(Service_Time, | 247 | LOG_DEBUG(Service_Time, |
| 239 | "called. type={} user_context={} network_context={} out_snapshot={}", type, | 248 | "called. type={} user_context={} network_context={} out_snapshot={}", type, |
| 240 | user_context, network_context, *out_snapshot); | 249 | user_context, network_context, *out_snapshot); |
| 241 | }); | 250 | }; |
| 242 | 251 | ||
| 243 | R_RETURN(GetClockSnapshotImpl(out_snapshot, user_context, network_context, type)); | 252 | R_RETURN(GetClockSnapshotImpl(out_snapshot, user_context, network_context, type)); |
| 244 | } | 253 | } |
| @@ -246,9 +255,9 @@ Result StaticService::GetClockSnapshotFromSystemClockContext( | |||
| 246 | Result StaticService::CalculateStandardUserSystemClockDifferenceByUser(Out<s64> out_difference, | 255 | Result StaticService::CalculateStandardUserSystemClockDifferenceByUser(Out<s64> out_difference, |
| 247 | InClockSnapshot a, | 256 | InClockSnapshot a, |
| 248 | InClockSnapshot b) { | 257 | InClockSnapshot b) { |
| 249 | SCOPE_EXIT({ | 258 | SCOPE_EXIT { |
| 250 | LOG_DEBUG(Service_Time, "called. a={} b={} out_difference={}", *a, *b, *out_difference); | 259 | LOG_DEBUG(Service_Time, "called. a={} b={} out_difference={}", *a, *b, *out_difference); |
| 251 | }); | 260 | }; |
| 252 | 261 | ||
| 253 | auto diff_s = | 262 | auto diff_s = |
| 254 | std::chrono::seconds(b->user_context.offset) - std::chrono::seconds(a->user_context.offset); | 263 | std::chrono::seconds(b->user_context.offset) - std::chrono::seconds(a->user_context.offset); |
| @@ -276,7 +285,9 @@ Result StaticService::CalculateStandardUserSystemClockDifferenceByUser(Out<s64> | |||
| 276 | 285 | ||
| 277 | Result StaticService::CalculateSpanBetween(Out<s64> out_time, InClockSnapshot a, | 286 | Result StaticService::CalculateSpanBetween(Out<s64> out_time, InClockSnapshot a, |
| 278 | InClockSnapshot b) { | 287 | InClockSnapshot b) { |
| 279 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. a={} b={} out_time={}", *a, *b, *out_time); }); | 288 | SCOPE_EXIT { |
| 289 | LOG_DEBUG(Service_Time, "called. a={} b={} out_time={}", *a, *b, *out_time); | ||
| 290 | }; | ||
| 280 | 291 | ||
| 281 | s64 time_s{}; | 292 | s64 time_s{}; |
| 282 | auto res = | 293 | auto res = |
diff --git a/src/core/hle/service/psc/time/steady_clock.cpp b/src/core/hle/service/psc/time/steady_clock.cpp index 948610a2b..78dcf532c 100644 --- a/src/core/hle/service/psc/time/steady_clock.cpp +++ b/src/core/hle/service/psc/time/steady_clock.cpp | |||
| @@ -29,7 +29,9 @@ SteadyClock::SteadyClock(Core::System& system_, std::shared_ptr<TimeManager> man | |||
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | Result SteadyClock::GetCurrentTimePoint(Out<SteadyClockTimePoint> out_time_point) { | 31 | Result SteadyClock::GetCurrentTimePoint(Out<SteadyClockTimePoint> out_time_point) { |
| 32 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_time_point={}", *out_time_point); }); | 32 | SCOPE_EXIT { |
| 33 | LOG_DEBUG(Service_Time, "called. out_time_point={}", *out_time_point); | ||
| 34 | }; | ||
| 33 | 35 | ||
| 34 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), | 36 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), |
| 35 | ResultClockUninitialized); | 37 | ResultClockUninitialized); |
| @@ -38,7 +40,9 @@ Result SteadyClock::GetCurrentTimePoint(Out<SteadyClockTimePoint> out_time_point | |||
| 38 | } | 40 | } |
| 39 | 41 | ||
| 40 | Result SteadyClock::GetTestOffset(Out<s64> out_test_offset) { | 42 | Result SteadyClock::GetTestOffset(Out<s64> out_test_offset) { |
| 41 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_test_offset={}", *out_test_offset); }); | 43 | SCOPE_EXIT { |
| 44 | LOG_DEBUG(Service_Time, "called. out_test_offset={}", *out_test_offset); | ||
| 45 | }; | ||
| 42 | 46 | ||
| 43 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), | 47 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), |
| 44 | ResultClockUninitialized); | 48 | ResultClockUninitialized); |
| @@ -59,7 +63,9 @@ Result SteadyClock::SetTestOffset(s64 test_offset) { | |||
| 59 | } | 63 | } |
| 60 | 64 | ||
| 61 | Result SteadyClock::GetRtcValue(Out<s64> out_rtc_value) { | 65 | Result SteadyClock::GetRtcValue(Out<s64> out_rtc_value) { |
| 62 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_rtc_value={}", *out_rtc_value); }); | 66 | SCOPE_EXIT { |
| 67 | LOG_DEBUG(Service_Time, "called. out_rtc_value={}", *out_rtc_value); | ||
| 68 | }; | ||
| 63 | 69 | ||
| 64 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), | 70 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), |
| 65 | ResultClockUninitialized); | 71 | ResultClockUninitialized); |
| @@ -68,7 +74,9 @@ Result SteadyClock::GetRtcValue(Out<s64> out_rtc_value) { | |||
| 68 | } | 74 | } |
| 69 | 75 | ||
| 70 | Result SteadyClock::IsRtcResetDetected(Out<bool> out_is_detected) { | 76 | Result SteadyClock::IsRtcResetDetected(Out<bool> out_is_detected) { |
| 71 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_is_detected={}", *out_is_detected); }); | 77 | SCOPE_EXIT { |
| 78 | LOG_DEBUG(Service_Time, "called. out_is_detected={}", *out_is_detected); | ||
| 79 | }; | ||
| 72 | 80 | ||
| 73 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), | 81 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), |
| 74 | ResultClockUninitialized); | 82 | ResultClockUninitialized); |
| @@ -78,7 +86,9 @@ Result SteadyClock::IsRtcResetDetected(Out<bool> out_is_detected) { | |||
| 78 | } | 86 | } |
| 79 | 87 | ||
| 80 | Result SteadyClock::GetSetupResultValue(Out<Result> out_result) { | 88 | Result SteadyClock::GetSetupResultValue(Out<Result> out_result) { |
| 81 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_result=0x{:X}", out_result->raw); }); | 89 | SCOPE_EXIT { |
| 90 | LOG_DEBUG(Service_Time, "called. out_result=0x{:X}", out_result->raw); | ||
| 91 | }; | ||
| 82 | 92 | ||
| 83 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), | 93 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), |
| 84 | ResultClockUninitialized); | 94 | ResultClockUninitialized); |
| @@ -88,8 +98,9 @@ Result SteadyClock::GetSetupResultValue(Out<Result> out_result) { | |||
| 88 | } | 98 | } |
| 89 | 99 | ||
| 90 | Result SteadyClock::GetInternalOffset(Out<s64> out_internal_offset) { | 100 | Result SteadyClock::GetInternalOffset(Out<s64> out_internal_offset) { |
| 91 | SCOPE_EXIT( | 101 | SCOPE_EXIT { |
| 92 | { LOG_DEBUG(Service_Time, "called. out_internal_offset={}", *out_internal_offset); }); | 102 | LOG_DEBUG(Service_Time, "called. out_internal_offset={}", *out_internal_offset); |
| 103 | }; | ||
| 93 | 104 | ||
| 94 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), | 105 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), |
| 95 | ResultClockUninitialized); | 106 | ResultClockUninitialized); |
diff --git a/src/core/hle/service/psc/time/system_clock.cpp b/src/core/hle/service/psc/time/system_clock.cpp index b4e9264d8..9f841d8e0 100644 --- a/src/core/hle/service/psc/time/system_clock.cpp +++ b/src/core/hle/service/psc/time/system_clock.cpp | |||
| @@ -26,7 +26,9 @@ SystemClock::SystemClock(Core::System& system_, SystemClockCore& clock_core, boo | |||
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | Result SystemClock::GetCurrentTime(Out<s64> out_time) { | 28 | Result SystemClock::GetCurrentTime(Out<s64> out_time) { |
| 29 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_time={}", *out_time); }); | 29 | SCOPE_EXIT { |
| 30 | LOG_DEBUG(Service_Time, "called. out_time={}", *out_time); | ||
| 31 | }; | ||
| 30 | 32 | ||
| 31 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), | 33 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), |
| 32 | ResultClockUninitialized); | 34 | ResultClockUninitialized); |
| @@ -45,7 +47,9 @@ Result SystemClock::SetCurrentTime(s64 time) { | |||
| 45 | } | 47 | } |
| 46 | 48 | ||
| 47 | Result SystemClock::GetSystemClockContext(Out<SystemClockContext> out_context) { | 49 | Result SystemClock::GetSystemClockContext(Out<SystemClockContext> out_context) { |
| 48 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_context={}", *out_context); }); | 50 | SCOPE_EXIT { |
| 51 | LOG_DEBUG(Service_Time, "called. out_context={}", *out_context); | ||
| 52 | }; | ||
| 49 | 53 | ||
| 50 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), | 54 | R_UNLESS(m_can_write_uninitialized_clock || m_clock_core.IsInitialized(), |
| 51 | ResultClockUninitialized); | 55 | ResultClockUninitialized); |
diff --git a/src/core/hle/service/psc/time/time_zone_service.cpp b/src/core/hle/service/psc/time/time_zone_service.cpp index 2f80030a4..9e0674f27 100644 --- a/src/core/hle/service/psc/time/time_zone_service.cpp +++ b/src/core/hle/service/psc/time/time_zone_service.cpp | |||
| @@ -37,7 +37,9 @@ TimeZoneService::TimeZoneService(Core::System& system_, StandardSteadyClockCore& | |||
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | Result TimeZoneService::GetDeviceLocationName(Out<LocationName> out_location_name) { | 39 | Result TimeZoneService::GetDeviceLocationName(Out<LocationName> out_location_name) { |
| 40 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_location_name={}", *out_location_name); }); | 40 | SCOPE_EXIT { |
| 41 | LOG_DEBUG(Service_Time, "called. out_location_name={}", *out_location_name); | ||
| 42 | }; | ||
| 41 | 43 | ||
| 42 | R_RETURN(m_time_zone.GetLocationName(*out_location_name)); | 44 | R_RETURN(m_time_zone.GetLocationName(*out_location_name)); |
| 43 | } | 45 | } |
| @@ -50,7 +52,9 @@ Result TimeZoneService::SetDeviceLocationName(const LocationName& location_name) | |||
| 50 | } | 52 | } |
| 51 | 53 | ||
| 52 | Result TimeZoneService::GetTotalLocationNameCount(Out<u32> out_count) { | 54 | Result TimeZoneService::GetTotalLocationNameCount(Out<u32> out_count) { |
| 53 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_count={}", *out_count); }); | 55 | SCOPE_EXIT { |
| 56 | LOG_DEBUG(Service_Time, "called. out_count={}", *out_count); | ||
| 57 | }; | ||
| 54 | 58 | ||
| 55 | R_RETURN(m_time_zone.GetTotalLocationCount(*out_count)); | 59 | R_RETURN(m_time_zone.GetTotalLocationCount(*out_count)); |
| 56 | } | 60 | } |
| @@ -69,17 +73,19 @@ Result TimeZoneService::LoadTimeZoneRule(OutRule out_rule, const LocationName& l | |||
| 69 | } | 73 | } |
| 70 | 74 | ||
| 71 | Result TimeZoneService::GetTimeZoneRuleVersion(Out<RuleVersion> out_rule_version) { | 75 | Result TimeZoneService::GetTimeZoneRuleVersion(Out<RuleVersion> out_rule_version) { |
| 72 | SCOPE_EXIT({ LOG_DEBUG(Service_Time, "called. out_rule_version={}", *out_rule_version); }); | 76 | SCOPE_EXIT { |
| 77 | LOG_DEBUG(Service_Time, "called. out_rule_version={}", *out_rule_version); | ||
| 78 | }; | ||
| 73 | 79 | ||
| 74 | R_RETURN(m_time_zone.GetRuleVersion(*out_rule_version)); | 80 | R_RETURN(m_time_zone.GetRuleVersion(*out_rule_version)); |
| 75 | } | 81 | } |
| 76 | 82 | ||
| 77 | Result TimeZoneService::GetDeviceLocationNameAndUpdatedTime( | 83 | Result TimeZoneService::GetDeviceLocationNameAndUpdatedTime( |
| 78 | Out<LocationName> out_location_name, Out<SteadyClockTimePoint> out_time_point) { | 84 | Out<LocationName> out_location_name, Out<SteadyClockTimePoint> out_time_point) { |
| 79 | SCOPE_EXIT({ | 85 | SCOPE_EXIT { |
| 80 | LOG_DEBUG(Service_Time, "called. out_location_name={} out_time_point={}", | 86 | LOG_DEBUG(Service_Time, "called. out_location_name={} out_time_point={}", |
| 81 | *out_location_name, *out_time_point); | 87 | *out_location_name, *out_time_point); |
| 82 | }); | 88 | }; |
| 83 | 89 | ||
| 84 | R_TRY(m_time_zone.GetLocationName(*out_location_name)); | 90 | R_TRY(m_time_zone.GetLocationName(*out_location_name)); |
| 85 | R_RETURN(m_time_zone.GetTimePoint(*out_time_point)); | 91 | R_RETURN(m_time_zone.GetTimePoint(*out_time_point)); |
| @@ -116,10 +122,10 @@ Result TimeZoneService::GetDeviceLocationNameOperationEventReadableHandle( | |||
| 116 | Result TimeZoneService::ToCalendarTime(Out<CalendarTime> out_calendar_time, | 122 | Result TimeZoneService::ToCalendarTime(Out<CalendarTime> out_calendar_time, |
| 117 | Out<CalendarAdditionalInfo> out_additional_info, s64 time, | 123 | Out<CalendarAdditionalInfo> out_additional_info, s64 time, |
| 118 | InRule rule) { | 124 | InRule rule) { |
| 119 | SCOPE_EXIT({ | 125 | SCOPE_EXIT { |
| 120 | LOG_DEBUG(Service_Time, "called. time={} out_calendar_time={} out_additional_info={}", time, | 126 | LOG_DEBUG(Service_Time, "called. time={} out_calendar_time={} out_additional_info={}", time, |
| 121 | *out_calendar_time, *out_additional_info); | 127 | *out_calendar_time, *out_additional_info); |
| 122 | }); | 128 | }; |
| 123 | 129 | ||
| 124 | R_RETURN( | 130 | R_RETURN( |
| 125 | m_time_zone.ToCalendarTime(*out_calendar_time, *out_additional_info, time, *rule.Get())); | 131 | m_time_zone.ToCalendarTime(*out_calendar_time, *out_additional_info, time, *rule.Get())); |
| @@ -128,10 +134,10 @@ Result TimeZoneService::ToCalendarTime(Out<CalendarTime> out_calendar_time, | |||
| 128 | Result TimeZoneService::ToCalendarTimeWithMyRule(Out<CalendarTime> out_calendar_time, | 134 | Result TimeZoneService::ToCalendarTimeWithMyRule(Out<CalendarTime> out_calendar_time, |
| 129 | Out<CalendarAdditionalInfo> out_additional_info, | 135 | Out<CalendarAdditionalInfo> out_additional_info, |
| 130 | s64 time) { | 136 | s64 time) { |
| 131 | SCOPE_EXIT({ | 137 | SCOPE_EXIT { |
| 132 | LOG_DEBUG(Service_Time, "called. time={} out_calendar_time={} out_additional_info={}", time, | 138 | LOG_DEBUG(Service_Time, "called. time={} out_calendar_time={} out_additional_info={}", time, |
| 133 | *out_calendar_time, *out_additional_info); | 139 | *out_calendar_time, *out_additional_info); |
| 134 | }); | 140 | }; |
| 135 | 141 | ||
| 136 | R_RETURN(m_time_zone.ToCalendarTimeWithMyRule(*out_calendar_time, *out_additional_info, time)); | 142 | R_RETURN(m_time_zone.ToCalendarTimeWithMyRule(*out_calendar_time, *out_additional_info, time)); |
| 137 | } | 143 | } |
| @@ -139,11 +145,11 @@ Result TimeZoneService::ToCalendarTimeWithMyRule(Out<CalendarTime> out_calendar_ | |||
| 139 | Result TimeZoneService::ToPosixTime(Out<u32> out_count, | 145 | Result TimeZoneService::ToPosixTime(Out<u32> out_count, |
| 140 | OutArray<s64, BufferAttr_HipcPointer> out_times, | 146 | OutArray<s64, BufferAttr_HipcPointer> out_times, |
| 141 | const CalendarTime& calendar_time, InRule rule) { | 147 | const CalendarTime& calendar_time, InRule rule) { |
| 142 | SCOPE_EXIT({ | 148 | SCOPE_EXIT { |
| 143 | LOG_DEBUG(Service_Time, | 149 | LOG_DEBUG(Service_Time, |
| 144 | "called. calendar_time={} out_count={} out_times[0]={} out_times[1]={} ", | 150 | "called. calendar_time={} out_count={} out_times[0]={} out_times[1]={} ", |
| 145 | calendar_time, *out_count, out_times[0], out_times[1]); | 151 | calendar_time, *out_count, out_times[0], out_times[1]); |
| 146 | }); | 152 | }; |
| 147 | 153 | ||
| 148 | R_RETURN( | 154 | R_RETURN( |
| 149 | m_time_zone.ToPosixTime(*out_count, out_times, out_times.size(), calendar_time, *rule)); | 155 | m_time_zone.ToPosixTime(*out_count, out_times, out_times.size(), calendar_time, *rule)); |
| @@ -152,11 +158,11 @@ Result TimeZoneService::ToPosixTime(Out<u32> out_count, | |||
| 152 | Result TimeZoneService::ToPosixTimeWithMyRule(Out<u32> out_count, | 158 | Result TimeZoneService::ToPosixTimeWithMyRule(Out<u32> out_count, |
| 153 | OutArray<s64, BufferAttr_HipcPointer> out_times, | 159 | OutArray<s64, BufferAttr_HipcPointer> out_times, |
| 154 | const CalendarTime& calendar_time) { | 160 | const CalendarTime& calendar_time) { |
| 155 | SCOPE_EXIT({ | 161 | SCOPE_EXIT { |
| 156 | LOG_DEBUG(Service_Time, | 162 | LOG_DEBUG(Service_Time, |
| 157 | "called. calendar_time={} out_count={} out_times[0]={} out_times[1]={} ", | 163 | "called. calendar_time={} out_count={} out_times[0]={} out_times[1]={} ", |
| 158 | calendar_time, *out_count, out_times[0], out_times[1]); | 164 | calendar_time, *out_count, out_times[0], out_times[1]); |
| 159 | }); | 165 | }; |
| 160 | 166 | ||
| 161 | R_RETURN( | 167 | R_RETURN( |
| 162 | m_time_zone.ToPosixTimeWithMyRule(*out_count, out_times, out_times.size(), calendar_time)); | 168 | m_time_zone.ToPosixTimeWithMyRule(*out_count, out_times, out_times.size(), calendar_time)); |
diff --git a/src/core/hle/service/server_manager.cpp b/src/core/hle/service/server_manager.cpp index 8c7f94c8c..0b41bbcb9 100644 --- a/src/core/hle/service/server_manager.cpp +++ b/src/core/hle/service/server_manager.cpp | |||
| @@ -177,10 +177,10 @@ Result ServerManager::ManageNamedPort(const std::string& service_name, | |||
| 177 | Kernel::KPort::Register(m_system.Kernel(), port); | 177 | Kernel::KPort::Register(m_system.Kernel(), port); |
| 178 | 178 | ||
| 179 | // Ensure that our reference to the port is closed if we fail to register it. | 179 | // Ensure that our reference to the port is closed if we fail to register it. |
| 180 | SCOPE_EXIT({ | 180 | SCOPE_EXIT { |
| 181 | port->GetClientPort().Close(); | 181 | port->GetClientPort().Close(); |
| 182 | port->GetServerPort().Close(); | 182 | port->GetServerPort().Close(); |
| 183 | }); | 183 | }; |
| 184 | 184 | ||
| 185 | // Register the object name with the kernel. | 185 | // Register the object name with the kernel. |
| 186 | R_TRY(Kernel::KObjectName::NewFromName(m_system.Kernel(), std::addressof(port->GetClientPort()), | 186 | R_TRY(Kernel::KObjectName::NewFromName(m_system.Kernel(), std::addressof(port->GetClientPort()), |
| @@ -237,7 +237,9 @@ void ServerManager::StartAdditionalHostThreads(const char* name, size_t num_thre | |||
| 237 | } | 237 | } |
| 238 | 238 | ||
| 239 | Result ServerManager::LoopProcess() { | 239 | Result ServerManager::LoopProcess() { |
| 240 | SCOPE_EXIT({ m_stopped.Set(); }); | 240 | SCOPE_EXIT { |
| 241 | m_stopped.Set(); | ||
| 242 | }; | ||
| 241 | 243 | ||
| 242 | R_RETURN(this->LoopProcessImpl()); | 244 | R_RETURN(this->LoopProcessImpl()); |
| 243 | } | 245 | } |
diff --git a/src/core/loader/nca.cpp b/src/core/loader/nca.cpp index 2a32b1276..de27ec49e 100644 --- a/src/core/loader/nca.cpp +++ b/src/core/loader/nca.cpp | |||
| @@ -118,7 +118,9 @@ ResultStatus AppLoader_NCA::VerifyIntegrity(std::function<bool(size_t, size_t)> | |||
| 118 | mbedtls_sha256_starts_ret(&ctx, 0); | 118 | mbedtls_sha256_starts_ret(&ctx, 0); |
| 119 | 119 | ||
| 120 | // Ensure we maintain a clean state on exit. | 120 | // Ensure we maintain a clean state on exit. |
| 121 | SCOPE_EXIT({ mbedtls_sha256_free(&ctx); }); | 121 | SCOPE_EXIT { |
| 122 | mbedtls_sha256_free(&ctx); | ||
| 123 | }; | ||
| 122 | 124 | ||
| 123 | // Declare counters. | 125 | // Declare counters. |
| 124 | const size_t total_size = file->GetSize(); | 126 | const size_t total_size = file->GetSize(); |
diff --git a/src/core/memory.cpp b/src/core/memory.cpp index e10a4601e..8775369a4 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp | |||
| @@ -831,11 +831,11 @@ struct Memory::Impl { | |||
| 831 | if (core == sys_core) [[unlikely]] { | 831 | if (core == sys_core) [[unlikely]] { |
| 832 | sys_core_guard.lock(); | 832 | sys_core_guard.lock(); |
| 833 | } | 833 | } |
| 834 | SCOPE_EXIT({ | 834 | SCOPE_EXIT { |
| 835 | if (core == sys_core) [[unlikely]] { | 835 | if (core == sys_core) [[unlikely]] { |
| 836 | sys_core_guard.unlock(); | 836 | sys_core_guard.unlock(); |
| 837 | } | 837 | } |
| 838 | }); | 838 | }; |
| 839 | gpu_device_memory->ApplyOpOnPointer(p, scratch_buffers[core], [&](DAddr address) { | 839 | gpu_device_memory->ApplyOpOnPointer(p, scratch_buffers[core], [&](DAddr address) { |
| 840 | auto& current_area = rasterizer_write_areas[core]; | 840 | auto& current_area = rasterizer_write_areas[core]; |
| 841 | PAddr subaddress = address >> YUZU_PAGEBITS; | 841 | PAddr subaddress = address >> YUZU_PAGEBITS; |
| @@ -866,11 +866,11 @@ struct Memory::Impl { | |||
| 866 | if (core == sys_core) [[unlikely]] { | 866 | if (core == sys_core) [[unlikely]] { |
| 867 | sys_core_guard.lock(); | 867 | sys_core_guard.lock(); |
| 868 | } | 868 | } |
| 869 | SCOPE_EXIT({ | 869 | SCOPE_EXIT { |
| 870 | if (core == sys_core) [[unlikely]] { | 870 | if (core == sys_core) [[unlikely]] { |
| 871 | sys_core_guard.unlock(); | 871 | sys_core_guard.unlock(); |
| 872 | } | 872 | } |
| 873 | }); | 873 | }; |
| 874 | auto& gpu = system.GPU(); | 874 | auto& gpu = system.GPU(); |
| 875 | gpu_device_memory->ApplyOpOnPointer( | 875 | gpu_device_memory->ApplyOpOnPointer( |
| 876 | p, scratch_buffers[core], [&](DAddr address) { gpu.InvalidateRegion(address, size); }); | 876 | p, scratch_buffers[core], [&](DAddr address) { gpu.InvalidateRegion(address, size); }); |
diff --git a/src/core/memory/dmnt_cheat_vm.cpp b/src/core/memory/dmnt_cheat_vm.cpp index f7097d01d..caceeec4f 100644 --- a/src/core/memory/dmnt_cheat_vm.cpp +++ b/src/core/memory/dmnt_cheat_vm.cpp | |||
| @@ -224,12 +224,12 @@ bool DmntCheatVm::DecodeNextOpcode(CheatVmOpcode& out) { | |||
| 224 | // If we've ever seen a decode failure, return false. | 224 | // If we've ever seen a decode failure, return false. |
| 225 | bool valid = decode_success; | 225 | bool valid = decode_success; |
| 226 | CheatVmOpcode opcode = {}; | 226 | CheatVmOpcode opcode = {}; |
| 227 | SCOPE_EXIT({ | 227 | SCOPE_EXIT { |
| 228 | decode_success &= valid; | 228 | decode_success &= valid; |
| 229 | if (valid) { | 229 | if (valid) { |
| 230 | out = opcode; | 230 | out = opcode; |
| 231 | } | 231 | } |
| 232 | }); | 232 | }; |
| 233 | 233 | ||
| 234 | // Helper function for getting instruction dwords. | 234 | // Helper function for getting instruction dwords. |
| 235 | const auto GetNextDword = [&] { | 235 | const auto GetNextDword = [&] { |
diff --git a/src/hid_core/frontend/emulated_controller.cpp b/src/hid_core/frontend/emulated_controller.cpp index d9d278fa3..5cd26819c 100644 --- a/src/hid_core/frontend/emulated_controller.cpp +++ b/src/hid_core/frontend/emulated_controller.cpp | |||
| @@ -933,8 +933,9 @@ void EmulatedController::SetStick(const Common::Input::CallbackStatus& callback, | |||
| 933 | if (index >= controller.stick_values.size()) { | 933 | if (index >= controller.stick_values.size()) { |
| 934 | return; | 934 | return; |
| 935 | } | 935 | } |
| 936 | auto trigger_guard = | 936 | auto trigger_guard = SCOPE_GUARD { |
| 937 | SCOPE_GUARD({ TriggerOnChange(ControllerTriggerType::Stick, !is_configuring); }); | 937 | TriggerOnChange(ControllerTriggerType::Stick, !is_configuring); |
| 938 | }; | ||
| 938 | std::scoped_lock lock{mutex}; | 939 | std::scoped_lock lock{mutex}; |
| 939 | const auto stick_value = TransformToStick(callback); | 940 | const auto stick_value = TransformToStick(callback); |
| 940 | 941 | ||
| @@ -989,8 +990,9 @@ void EmulatedController::SetTrigger(const Common::Input::CallbackStatus& callbac | |||
| 989 | if (index >= controller.trigger_values.size()) { | 990 | if (index >= controller.trigger_values.size()) { |
| 990 | return; | 991 | return; |
| 991 | } | 992 | } |
| 992 | auto trigger_guard = | 993 | auto trigger_guard = SCOPE_GUARD { |
| 993 | SCOPE_GUARD({ TriggerOnChange(ControllerTriggerType::Trigger, !is_configuring); }); | 994 | TriggerOnChange(ControllerTriggerType::Trigger, !is_configuring); |
| 995 | }; | ||
| 994 | std::scoped_lock lock{mutex}; | 996 | std::scoped_lock lock{mutex}; |
| 995 | const auto trigger_value = TransformToTrigger(callback); | 997 | const auto trigger_value = TransformToTrigger(callback); |
| 996 | 998 | ||
| @@ -1036,7 +1038,9 @@ void EmulatedController::SetMotion(const Common::Input::CallbackStatus& callback | |||
| 1036 | if (index >= controller.motion_values.size()) { | 1038 | if (index >= controller.motion_values.size()) { |
| 1037 | return; | 1039 | return; |
| 1038 | } | 1040 | } |
| 1039 | SCOPE_EXIT({ TriggerOnChange(ControllerTriggerType::Motion, !is_configuring); }); | 1041 | SCOPE_EXIT { |
| 1042 | TriggerOnChange(ControllerTriggerType::Motion, !is_configuring); | ||
| 1043 | }; | ||
| 1040 | std::scoped_lock lock{mutex}; | 1044 | std::scoped_lock lock{mutex}; |
| 1041 | auto& raw_status = controller.motion_values[index].raw_status; | 1045 | auto& raw_status = controller.motion_values[index].raw_status; |
| 1042 | auto& emulated = controller.motion_values[index].emulated; | 1046 | auto& emulated = controller.motion_values[index].emulated; |
| @@ -1070,8 +1074,9 @@ void EmulatedController::SetColors(const Common::Input::CallbackStatus& callback | |||
| 1070 | if (index >= controller.color_values.size()) { | 1074 | if (index >= controller.color_values.size()) { |
| 1071 | return; | 1075 | return; |
| 1072 | } | 1076 | } |
| 1073 | auto trigger_guard = | 1077 | auto trigger_guard = SCOPE_GUARD { |
| 1074 | SCOPE_GUARD({ TriggerOnChange(ControllerTriggerType::Color, !is_configuring); }); | 1078 | TriggerOnChange(ControllerTriggerType::Color, !is_configuring); |
| 1079 | }; | ||
| 1075 | std::scoped_lock lock{mutex}; | 1080 | std::scoped_lock lock{mutex}; |
| 1076 | controller.color_values[index] = TransformToColor(callback); | 1081 | controller.color_values[index] = TransformToColor(callback); |
| 1077 | 1082 | ||
| @@ -1120,7 +1125,9 @@ void EmulatedController::SetBattery(const Common::Input::CallbackStatus& callbac | |||
| 1120 | if (index >= controller.battery_values.size()) { | 1125 | if (index >= controller.battery_values.size()) { |
| 1121 | return; | 1126 | return; |
| 1122 | } | 1127 | } |
| 1123 | SCOPE_EXIT({ TriggerOnChange(ControllerTriggerType::Battery, !is_configuring); }); | 1128 | SCOPE_EXIT { |
| 1129 | TriggerOnChange(ControllerTriggerType::Battery, !is_configuring); | ||
| 1130 | }; | ||
| 1124 | std::scoped_lock lock{mutex}; | 1131 | std::scoped_lock lock{mutex}; |
| 1125 | controller.battery_values[index] = TransformToBattery(callback); | 1132 | controller.battery_values[index] = TransformToBattery(callback); |
| 1126 | 1133 | ||
| @@ -1183,7 +1190,9 @@ void EmulatedController::SetBattery(const Common::Input::CallbackStatus& callbac | |||
| 1183 | } | 1190 | } |
| 1184 | 1191 | ||
| 1185 | void EmulatedController::SetCamera(const Common::Input::CallbackStatus& callback) { | 1192 | void EmulatedController::SetCamera(const Common::Input::CallbackStatus& callback) { |
| 1186 | SCOPE_EXIT({ TriggerOnChange(ControllerTriggerType::IrSensor, !is_configuring); }); | 1193 | SCOPE_EXIT { |
| 1194 | TriggerOnChange(ControllerTriggerType::IrSensor, !is_configuring); | ||
| 1195 | }; | ||
| 1187 | std::scoped_lock lock{mutex}; | 1196 | std::scoped_lock lock{mutex}; |
| 1188 | controller.camera_values = TransformToCamera(callback); | 1197 | controller.camera_values = TransformToCamera(callback); |
| 1189 | 1198 | ||
| @@ -1198,7 +1207,9 @@ void EmulatedController::SetCamera(const Common::Input::CallbackStatus& callback | |||
| 1198 | } | 1207 | } |
| 1199 | 1208 | ||
| 1200 | void EmulatedController::SetRingAnalog(const Common::Input::CallbackStatus& callback) { | 1209 | void EmulatedController::SetRingAnalog(const Common::Input::CallbackStatus& callback) { |
| 1201 | SCOPE_EXIT({ TriggerOnChange(ControllerTriggerType::RingController, !is_configuring); }); | 1210 | SCOPE_EXIT { |
| 1211 | TriggerOnChange(ControllerTriggerType::RingController, !is_configuring); | ||
| 1212 | }; | ||
| 1202 | std::scoped_lock lock{mutex}; | 1213 | std::scoped_lock lock{mutex}; |
| 1203 | const auto force_value = TransformToStick(callback); | 1214 | const auto force_value = TransformToStick(callback); |
| 1204 | 1215 | ||
| @@ -1212,7 +1223,9 @@ void EmulatedController::SetRingAnalog(const Common::Input::CallbackStatus& call | |||
| 1212 | } | 1223 | } |
| 1213 | 1224 | ||
| 1214 | void EmulatedController::SetNfc(const Common::Input::CallbackStatus& callback) { | 1225 | void EmulatedController::SetNfc(const Common::Input::CallbackStatus& callback) { |
| 1215 | SCOPE_EXIT({ TriggerOnChange(ControllerTriggerType::Nfc, !is_configuring); }); | 1226 | SCOPE_EXIT { |
| 1227 | TriggerOnChange(ControllerTriggerType::Nfc, !is_configuring); | ||
| 1228 | }; | ||
| 1216 | std::scoped_lock lock{mutex}; | 1229 | std::scoped_lock lock{mutex}; |
| 1217 | controller.nfc_values = TransformToNfc(callback); | 1230 | controller.nfc_values = TransformToNfc(callback); |
| 1218 | 1231 | ||
| @@ -1685,8 +1698,9 @@ void EmulatedController::Connect(bool use_temporary_value) { | |||
| 1685 | return; | 1698 | return; |
| 1686 | } | 1699 | } |
| 1687 | 1700 | ||
| 1688 | auto trigger_guard = | 1701 | auto trigger_guard = SCOPE_GUARD { |
| 1689 | SCOPE_GUARD({ TriggerOnChange(ControllerTriggerType::Connected, !is_configuring); }); | 1702 | TriggerOnChange(ControllerTriggerType::Connected, !is_configuring); |
| 1703 | }; | ||
| 1690 | std::scoped_lock lock{connect_mutex, mutex}; | 1704 | std::scoped_lock lock{connect_mutex, mutex}; |
| 1691 | if (is_configuring) { | 1705 | if (is_configuring) { |
| 1692 | tmp_is_connected = true; | 1706 | tmp_is_connected = true; |
| @@ -1701,8 +1715,9 @@ void EmulatedController::Connect(bool use_temporary_value) { | |||
| 1701 | } | 1715 | } |
| 1702 | 1716 | ||
| 1703 | void EmulatedController::Disconnect() { | 1717 | void EmulatedController::Disconnect() { |
| 1704 | auto trigger_guard = | 1718 | auto trigger_guard = SCOPE_GUARD { |
| 1705 | SCOPE_GUARD({ TriggerOnChange(ControllerTriggerType::Disconnected, !is_configuring); }); | 1719 | TriggerOnChange(ControllerTriggerType::Disconnected, !is_configuring); |
| 1720 | }; | ||
| 1706 | std::scoped_lock lock{connect_mutex, mutex}; | 1721 | std::scoped_lock lock{connect_mutex, mutex}; |
| 1707 | if (is_configuring) { | 1722 | if (is_configuring) { |
| 1708 | tmp_is_connected = false; | 1723 | tmp_is_connected = false; |
| @@ -1738,8 +1753,9 @@ NpadStyleIndex EmulatedController::GetNpadStyleIndex(bool get_temporary_value) c | |||
| 1738 | } | 1753 | } |
| 1739 | 1754 | ||
| 1740 | void EmulatedController::SetNpadStyleIndex(NpadStyleIndex npad_type_) { | 1755 | void EmulatedController::SetNpadStyleIndex(NpadStyleIndex npad_type_) { |
| 1741 | auto trigger_guard = | 1756 | auto trigger_guard = SCOPE_GUARD { |
| 1742 | SCOPE_GUARD({ TriggerOnChange(ControllerTriggerType::Type, !is_configuring); }); | 1757 | TriggerOnChange(ControllerTriggerType::Type, !is_configuring); |
| 1758 | }; | ||
| 1743 | std::scoped_lock lock{mutex, npad_mutex}; | 1759 | std::scoped_lock lock{mutex, npad_mutex}; |
| 1744 | 1760 | ||
| 1745 | if (is_configuring) { | 1761 | if (is_configuring) { |
diff --git a/src/input_common/helpers/joycon_driver.cpp b/src/input_common/helpers/joycon_driver.cpp index c9f903213..0dd1c958a 100644 --- a/src/input_common/helpers/joycon_driver.cpp +++ b/src/input_common/helpers/joycon_driver.cpp | |||
| @@ -268,7 +268,9 @@ void JoyconDriver::OnNewData(std::span<u8> buffer) { | |||
| 268 | } | 268 | } |
| 269 | 269 | ||
| 270 | Common::Input::DriverResult JoyconDriver::SetPollingMode() { | 270 | Common::Input::DriverResult JoyconDriver::SetPollingMode() { |
| 271 | SCOPE_EXIT({ disable_input_thread = false; }); | 271 | SCOPE_EXIT { |
| 272 | disable_input_thread = false; | ||
| 273 | }; | ||
| 272 | disable_input_thread = true; | 274 | disable_input_thread = true; |
| 273 | 275 | ||
| 274 | rumble_protocol->EnableRumble(vibration_enabled && supported_features.vibration); | 276 | rumble_protocol->EnableRumble(vibration_enabled && supported_features.vibration); |
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index a94e1f043..0d47b032c 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp | |||
| @@ -291,7 +291,9 @@ u32 Maxwell3D::ProcessShadowRam(u32 method, u32 argument) { | |||
| 291 | } | 291 | } |
| 292 | 292 | ||
| 293 | void Maxwell3D::ConsumeSinkImpl() { | 293 | void Maxwell3D::ConsumeSinkImpl() { |
| 294 | SCOPE_EXIT({ method_sink.clear(); }); | 294 | SCOPE_EXIT { |
| 295 | method_sink.clear(); | ||
| 296 | }; | ||
| 295 | const auto control = shadow_state.shadow_ram_control; | 297 | const auto control = shadow_state.shadow_ram_control; |
| 296 | if (control == Regs::ShadowRamControl::Track || | 298 | if (control == Regs::ShadowRamControl::Track || |
| 297 | control == Regs::ShadowRamControl::TrackWithFilter) { | 299 | control == Regs::ShadowRamControl::TrackWithFilter) { |
diff --git a/src/video_core/fence_manager.h b/src/video_core/fence_manager.h index c3eda6893..2135f1f2d 100644 --- a/src/video_core/fence_manager.h +++ b/src/video_core/fence_manager.h | |||
| @@ -197,7 +197,9 @@ private: | |||
| 197 | MicroProfileOnThreadCreate(name.c_str()); | 197 | MicroProfileOnThreadCreate(name.c_str()); |
| 198 | 198 | ||
| 199 | // Cleanup | 199 | // Cleanup |
| 200 | SCOPE_EXIT({ MicroProfileOnThreadExit(); }); | 200 | SCOPE_EXIT { |
| 201 | MicroProfileOnThreadExit(); | ||
| 202 | }; | ||
| 201 | 203 | ||
| 202 | Common::SetCurrentThreadName(name.c_str()); | 204 | Common::SetCurrentThreadName(name.c_str()); |
| 203 | Common::SetCurrentThreadPriority(Common::ThreadPriority::High); | 205 | Common::SetCurrentThreadPriority(Common::ThreadPriority::High); |
diff --git a/src/video_core/gpu_thread.cpp b/src/video_core/gpu_thread.cpp index 58d8110b8..477e11457 100644 --- a/src/video_core/gpu_thread.cpp +++ b/src/video_core/gpu_thread.cpp | |||
| @@ -22,7 +22,9 @@ static void RunThread(std::stop_token stop_token, Core::System& system, | |||
| 22 | Tegra::Control::Scheduler& scheduler, SynchState& state) { | 22 | Tegra::Control::Scheduler& scheduler, SynchState& state) { |
| 23 | std::string name = "GPU"; | 23 | std::string name = "GPU"; |
| 24 | MicroProfileOnThreadCreate(name.c_str()); | 24 | MicroProfileOnThreadCreate(name.c_str()); |
| 25 | SCOPE_EXIT({ MicroProfileOnThreadExit(); }); | 25 | SCOPE_EXIT { |
| 26 | MicroProfileOnThreadExit(); | ||
| 27 | }; | ||
| 26 | 28 | ||
| 27 | Common::SetCurrentThreadName(name.c_str()); | 29 | Common::SetCurrentThreadName(name.c_str()); |
| 28 | Common::SetCurrentThreadPriority(Common::ThreadPriority::Critical); | 30 | Common::SetCurrentThreadPriority(Common::ThreadPriority::Critical); |
diff --git a/src/video_core/host1x/ffmpeg/ffmpeg.cpp b/src/video_core/host1x/ffmpeg/ffmpeg.cpp index 96686da59..1003cd38d 100644 --- a/src/video_core/host1x/ffmpeg/ffmpeg.cpp +++ b/src/video_core/host1x/ffmpeg/ffmpeg.cpp | |||
| @@ -273,10 +273,10 @@ DeinterlaceFilter::DeinterlaceFilter(const Frame& frame) { | |||
| 273 | const AVFilter* buffer_sink = avfilter_get_by_name("buffersink"); | 273 | const AVFilter* buffer_sink = avfilter_get_by_name("buffersink"); |
| 274 | AVFilterInOut* inputs = avfilter_inout_alloc(); | 274 | AVFilterInOut* inputs = avfilter_inout_alloc(); |
| 275 | AVFilterInOut* outputs = avfilter_inout_alloc(); | 275 | AVFilterInOut* outputs = avfilter_inout_alloc(); |
| 276 | SCOPE_EXIT({ | 276 | SCOPE_EXIT { |
| 277 | avfilter_inout_free(&inputs); | 277 | avfilter_inout_free(&inputs); |
| 278 | avfilter_inout_free(&outputs); | 278 | avfilter_inout_free(&outputs); |
| 279 | }); | 279 | }; |
| 280 | 280 | ||
| 281 | // Don't know how to get the accurate time_base but it doesn't matter for yadif filter | 281 | // Don't know how to get the accurate time_base but it doesn't matter for yadif filter |
| 282 | // so just use 1/1 to make buffer filter happy | 282 | // so just use 1/1 to make buffer filter happy |
diff --git a/src/video_core/macro/macro_hle.cpp b/src/video_core/macro/macro_hle.cpp index 46e853e04..fb529f88b 100644 --- a/src/video_core/macro/macro_hle.cpp +++ b/src/video_core/macro/macro_hle.cpp | |||
| @@ -92,12 +92,12 @@ public: | |||
| 92 | 92 | ||
| 93 | private: | 93 | private: |
| 94 | void Fallback(const std::vector<u32>& parameters) { | 94 | void Fallback(const std::vector<u32>& parameters) { |
| 95 | SCOPE_EXIT({ | 95 | SCOPE_EXIT { |
| 96 | if (extended) { | 96 | if (extended) { |
| 97 | maxwell3d.engine_state = Maxwell3D::EngineHint::None; | 97 | maxwell3d.engine_state = Maxwell3D::EngineHint::None; |
| 98 | maxwell3d.replace_table.clear(); | 98 | maxwell3d.replace_table.clear(); |
| 99 | } | 99 | } |
| 100 | }); | 100 | }; |
| 101 | maxwell3d.RefreshParameters(); | 101 | maxwell3d.RefreshParameters(); |
| 102 | const u32 instance_count = (maxwell3d.GetRegisterValue(0xD1B) & parameters[2]); | 102 | const u32 instance_count = (maxwell3d.GetRegisterValue(0xD1B) & parameters[2]); |
| 103 | 103 | ||
| @@ -281,12 +281,12 @@ public: | |||
| 281 | 281 | ||
| 282 | private: | 282 | private: |
| 283 | void Fallback(const std::vector<u32>& parameters) { | 283 | void Fallback(const std::vector<u32>& parameters) { |
| 284 | SCOPE_EXIT({ | 284 | SCOPE_EXIT { |
| 285 | // Clean everything. | 285 | // Clean everything. |
| 286 | maxwell3d.regs.vertex_id_base = 0x0; | 286 | maxwell3d.regs.vertex_id_base = 0x0; |
| 287 | maxwell3d.engine_state = Maxwell3D::EngineHint::None; | 287 | maxwell3d.engine_state = Maxwell3D::EngineHint::None; |
| 288 | maxwell3d.replace_table.clear(); | 288 | maxwell3d.replace_table.clear(); |
| 289 | }); | 289 | }; |
| 290 | maxwell3d.RefreshParameters(); | 290 | maxwell3d.RefreshParameters(); |
| 291 | const u32 start_indirect = parameters[0]; | 291 | const u32 start_indirect = parameters[0]; |
| 292 | const u32 end_indirect = parameters[1]; | 292 | const u32 end_indirect = parameters[1]; |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index b42fb110c..16af8e6bd 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -230,7 +230,9 @@ template <typename Func> | |||
| 230 | void RasterizerOpenGL::PrepareDraw(bool is_indexed, Func&& draw_func) { | 230 | void RasterizerOpenGL::PrepareDraw(bool is_indexed, Func&& draw_func) { |
| 231 | MICROPROFILE_SCOPE(OpenGL_Drawing); | 231 | MICROPROFILE_SCOPE(OpenGL_Drawing); |
| 232 | 232 | ||
| 233 | SCOPE_EXIT({ gpu.TickWork(); }); | 233 | SCOPE_EXIT { |
| 234 | gpu.TickWork(); | ||
| 235 | }; | ||
| 234 | gpu_memory->FlushCaching(); | 236 | gpu_memory->FlushCaching(); |
| 235 | 237 | ||
| 236 | GraphicsPipeline* const pipeline{shader_cache.CurrentGraphicsPipeline()}; | 238 | GraphicsPipeline* const pipeline{shader_cache.CurrentGraphicsPipeline()}; |
| @@ -355,7 +357,9 @@ void RasterizerOpenGL::DrawIndirect() { | |||
| 355 | void RasterizerOpenGL::DrawTexture() { | 357 | void RasterizerOpenGL::DrawTexture() { |
| 356 | MICROPROFILE_SCOPE(OpenGL_Drawing); | 358 | MICROPROFILE_SCOPE(OpenGL_Drawing); |
| 357 | 359 | ||
| 358 | SCOPE_EXIT({ gpu.TickWork(); }); | 360 | SCOPE_EXIT { |
| 361 | gpu.TickWork(); | ||
| 362 | }; | ||
| 359 | 363 | ||
| 360 | texture_cache.SynchronizeGraphicsDescriptors(); | 364 | texture_cache.SynchronizeGraphicsDescriptors(); |
| 361 | texture_cache.UpdateRenderTargets(false); | 365 | texture_cache.UpdateRenderTargets(false); |
diff --git a/src/video_core/renderer_vulkan/present/layer.cpp b/src/video_core/renderer_vulkan/present/layer.cpp index 3847a9a13..4e41afe5b 100644 --- a/src/video_core/renderer_vulkan/present/layer.cpp +++ b/src/video_core/renderer_vulkan/present/layer.cpp | |||
| @@ -82,7 +82,9 @@ void Layer::ConfigureDraw(PresentPushConstants* out_push_constants, | |||
| 82 | // Finish any pending renderpass | 82 | // Finish any pending renderpass |
| 83 | scheduler.RequestOutsideRenderPassOperationContext(); | 83 | scheduler.RequestOutsideRenderPassOperationContext(); |
| 84 | scheduler.Wait(resource_ticks[image_index]); | 84 | scheduler.Wait(resource_ticks[image_index]); |
| 85 | SCOPE_EXIT({ resource_ticks[image_index] = scheduler.CurrentTick(); }); | 85 | SCOPE_EXIT { |
| 86 | resource_ticks[image_index] = scheduler.CurrentTick(); | ||
| 87 | }; | ||
| 86 | 88 | ||
| 87 | if (!use_accelerated) { | 89 | if (!use_accelerated) { |
| 88 | UpdateRawImage(framebuffer, image_index); | 90 | UpdateRawImage(framebuffer, image_index); |
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index d50417116..c553f5b3d 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp | |||
| @@ -144,7 +144,9 @@ void RendererVulkan::Composite(std::span<const Tegra::FramebufferConfig> framebu | |||
| 144 | return; | 144 | return; |
| 145 | } | 145 | } |
| 146 | 146 | ||
| 147 | SCOPE_EXIT({ render_window.OnFrameDisplayed(); }); | 147 | SCOPE_EXIT { |
| 148 | render_window.OnFrameDisplayed(); | ||
| 149 | }; | ||
| 148 | 150 | ||
| 149 | RenderAppletCaptureLayer(framebuffers); | 151 | RenderAppletCaptureLayer(framebuffers); |
| 150 | 152 | ||
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index aa0a027bb..74f9f099e 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp | |||
| @@ -196,7 +196,9 @@ template <typename Func> | |||
| 196 | void RasterizerVulkan::PrepareDraw(bool is_indexed, Func&& draw_func) { | 196 | void RasterizerVulkan::PrepareDraw(bool is_indexed, Func&& draw_func) { |
| 197 | MICROPROFILE_SCOPE(Vulkan_Drawing); | 197 | MICROPROFILE_SCOPE(Vulkan_Drawing); |
| 198 | 198 | ||
| 199 | SCOPE_EXIT({ gpu.TickWork(); }); | 199 | SCOPE_EXIT { |
| 200 | gpu.TickWork(); | ||
| 201 | }; | ||
| 200 | FlushWork(); | 202 | FlushWork(); |
| 201 | gpu_memory->FlushCaching(); | 203 | gpu_memory->FlushCaching(); |
| 202 | 204 | ||
| @@ -288,7 +290,9 @@ void RasterizerVulkan::DrawIndirect() { | |||
| 288 | void RasterizerVulkan::DrawTexture() { | 290 | void RasterizerVulkan::DrawTexture() { |
| 289 | MICROPROFILE_SCOPE(Vulkan_Drawing); | 291 | MICROPROFILE_SCOPE(Vulkan_Drawing); |
| 290 | 292 | ||
| 291 | SCOPE_EXIT({ gpu.TickWork(); }); | 293 | SCOPE_EXIT { |
| 294 | gpu.TickWork(); | ||
| 295 | }; | ||
| 292 | FlushWork(); | 296 | FlushWork(); |
| 293 | 297 | ||
| 294 | query_cache.NotifySegment(true); | 298 | query_cache.NotifySegment(true); |
diff --git a/src/video_core/vulkan_common/nsight_aftermath_tracker.cpp b/src/video_core/vulkan_common/nsight_aftermath_tracker.cpp index 5fa0d9620..f41c3e506 100644 --- a/src/video_core/vulkan_common/nsight_aftermath_tracker.cpp +++ b/src/video_core/vulkan_common/nsight_aftermath_tracker.cpp | |||
| @@ -116,7 +116,9 @@ void NsightAftermathTracker::OnGpuCrashDumpCallback(const void* gpu_crash_dump, | |||
| 116 | LOG_ERROR(Render_Vulkan, "Failed to create decoder"); | 116 | LOG_ERROR(Render_Vulkan, "Failed to create decoder"); |
| 117 | return; | 117 | return; |
| 118 | } | 118 | } |
| 119 | SCOPE_EXIT({ GFSDK_Aftermath_GpuCrashDump_DestroyDecoder(decoder); }); | 119 | SCOPE_EXIT { |
| 120 | GFSDK_Aftermath_GpuCrashDump_DestroyDecoder(decoder); | ||
| 121 | }; | ||
| 120 | 122 | ||
| 121 | u32 json_size = 0; | 123 | u32 json_size = 0; |
| 122 | if (!GFSDK_Aftermath_SUCCEED(GFSDK_Aftermath_GpuCrashDump_GenerateJSON( | 124 | if (!GFSDK_Aftermath_SUCCEED(GFSDK_Aftermath_GpuCrashDump_GenerateJSON( |
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 0d16bfd65..236642fb9 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp | |||
| @@ -646,10 +646,10 @@ void GMainWindow::AmiiboSettingsShowDialog(const Core::Frontend::CabinetParamete | |||
| 646 | std::shared_ptr<Service::NFC::NfcDevice> nfp_device) { | 646 | std::shared_ptr<Service::NFC::NfcDevice> nfp_device) { |
| 647 | cabinet_applet = | 647 | cabinet_applet = |
| 648 | new QtAmiiboSettingsDialog(this, parameters, input_subsystem.get(), nfp_device); | 648 | new QtAmiiboSettingsDialog(this, parameters, input_subsystem.get(), nfp_device); |
| 649 | SCOPE_EXIT({ | 649 | SCOPE_EXIT { |
| 650 | cabinet_applet->deleteLater(); | 650 | cabinet_applet->deleteLater(); |
| 651 | cabinet_applet = nullptr; | 651 | cabinet_applet = nullptr; |
| 652 | }); | 652 | }; |
| 653 | 653 | ||
| 654 | cabinet_applet->setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint | | 654 | cabinet_applet->setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint | |
| 655 | Qt::WindowTitleHint | Qt::WindowSystemMenuHint); | 655 | Qt::WindowTitleHint | Qt::WindowSystemMenuHint); |
| @@ -673,10 +673,10 @@ void GMainWindow::ControllerSelectorReconfigureControllers( | |||
| 673 | const Core::Frontend::ControllerParameters& parameters) { | 673 | const Core::Frontend::ControllerParameters& parameters) { |
| 674 | controller_applet = | 674 | controller_applet = |
| 675 | new QtControllerSelectorDialog(this, parameters, input_subsystem.get(), *system); | 675 | new QtControllerSelectorDialog(this, parameters, input_subsystem.get(), *system); |
| 676 | SCOPE_EXIT({ | 676 | SCOPE_EXIT { |
| 677 | controller_applet->deleteLater(); | 677 | controller_applet->deleteLater(); |
| 678 | controller_applet = nullptr; | 678 | controller_applet = nullptr; |
| 679 | }); | 679 | }; |
| 680 | 680 | ||
| 681 | controller_applet->setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | | 681 | controller_applet->setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | |
| 682 | Qt::WindowStaysOnTopHint | Qt::WindowTitleHint | | 682 | Qt::WindowStaysOnTopHint | Qt::WindowTitleHint | |
| @@ -703,10 +703,10 @@ void GMainWindow::ControllerSelectorRequestExit() { | |||
| 703 | void GMainWindow::ProfileSelectorSelectProfile( | 703 | void GMainWindow::ProfileSelectorSelectProfile( |
| 704 | const Core::Frontend::ProfileSelectParameters& parameters) { | 704 | const Core::Frontend::ProfileSelectParameters& parameters) { |
| 705 | profile_select_applet = new QtProfileSelectionDialog(*system, this, parameters); | 705 | profile_select_applet = new QtProfileSelectionDialog(*system, this, parameters); |
| 706 | SCOPE_EXIT({ | 706 | SCOPE_EXIT { |
| 707 | profile_select_applet->deleteLater(); | 707 | profile_select_applet->deleteLater(); |
| 708 | profile_select_applet = nullptr; | 708 | profile_select_applet = nullptr; |
| 709 | }); | 709 | }; |
| 710 | 710 | ||
| 711 | profile_select_applet->setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | | 711 | profile_select_applet->setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | |
| 712 | Qt::WindowStaysOnTopHint | Qt::WindowTitleHint | | 712 | Qt::WindowStaysOnTopHint | Qt::WindowTitleHint | |
| @@ -2885,17 +2885,19 @@ bool GMainWindow::CreateShortcutLink(const std::filesystem::path& shortcut_path, | |||
| 2885 | LOG_ERROR(Frontend, "CoInitialize failed"); | 2885 | LOG_ERROR(Frontend, "CoInitialize failed"); |
| 2886 | return false; | 2886 | return false; |
| 2887 | } | 2887 | } |
| 2888 | SCOPE_EXIT({ CoUninitialize(); }); | 2888 | SCOPE_EXIT { |
| 2889 | CoUninitialize(); | ||
| 2890 | }; | ||
| 2889 | IShellLinkW* ps1 = nullptr; | 2891 | IShellLinkW* ps1 = nullptr; |
| 2890 | IPersistFile* persist_file = nullptr; | 2892 | IPersistFile* persist_file = nullptr; |
| 2891 | SCOPE_EXIT({ | 2893 | SCOPE_EXIT { |
| 2892 | if (persist_file != nullptr) { | 2894 | if (persist_file != nullptr) { |
| 2893 | persist_file->Release(); | 2895 | persist_file->Release(); |
| 2894 | } | 2896 | } |
| 2895 | if (ps1 != nullptr) { | 2897 | if (ps1 != nullptr) { |
| 2896 | ps1->Release(); | 2898 | ps1->Release(); |
| 2897 | } | 2899 | } |
| 2898 | }); | 2900 | }; |
| 2899 | HRESULT hres = CoCreateInstance(CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER, IID_IShellLinkW, | 2901 | HRESULT hres = CoCreateInstance(CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER, IID_IShellLinkW, |
| 2900 | reinterpret_cast<void**>(&ps1)); | 2902 | reinterpret_cast<void**>(&ps1)); |
| 2901 | if (FAILED(hres)) { | 2903 | if (FAILED(hres)) { |
| @@ -3520,10 +3522,10 @@ void GMainWindow::OnSaveConfig() { | |||
| 3520 | void GMainWindow::ErrorDisplayDisplayError(QString error_code, QString error_text) { | 3522 | void GMainWindow::ErrorDisplayDisplayError(QString error_code, QString error_text) { |
| 3521 | error_applet = new OverlayDialog(render_window, *system, error_code, error_text, QString{}, | 3523 | error_applet = new OverlayDialog(render_window, *system, error_code, error_text, QString{}, |
| 3522 | tr("OK"), Qt::AlignLeft | Qt::AlignVCenter); | 3524 | tr("OK"), Qt::AlignLeft | Qt::AlignVCenter); |
| 3523 | SCOPE_EXIT({ | 3525 | SCOPE_EXIT { |
| 3524 | error_applet->deleteLater(); | 3526 | error_applet->deleteLater(); |
| 3525 | error_applet = nullptr; | 3527 | error_applet = nullptr; |
| 3526 | }); | 3528 | }; |
| 3527 | error_applet->exec(); | 3529 | error_applet->exec(); |
| 3528 | 3530 | ||
| 3529 | emit ErrorDisplayFinished(); | 3531 | emit ErrorDisplayFinished(); |
| @@ -5192,7 +5194,9 @@ int main(int argc, char* argv[]) { | |||
| 5192 | 5194 | ||
| 5193 | Common::DetachedTasks detached_tasks; | 5195 | Common::DetachedTasks detached_tasks; |
| 5194 | MicroProfileOnThreadCreate("Frontend"); | 5196 | MicroProfileOnThreadCreate("Frontend"); |
| 5195 | SCOPE_EXIT({ MicroProfileShutdown(); }); | 5197 | SCOPE_EXIT { |
| 5198 | MicroProfileShutdown(); | ||
| 5199 | }; | ||
| 5196 | 5200 | ||
| 5197 | Common::ConfigureNvidiaEnvironmentFlags(); | 5201 | Common::ConfigureNvidiaEnvironmentFlags(); |
| 5198 | 5202 | ||
diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp index 3b321dad1..8a8cdbc44 100644 --- a/src/yuzu_cmd/yuzu.cpp +++ b/src/yuzu_cmd/yuzu.cpp | |||
| @@ -327,7 +327,9 @@ int main(int argc, char** argv) { | |||
| 327 | #endif | 327 | #endif |
| 328 | 328 | ||
| 329 | MicroProfileOnThreadCreate("EmuThread"); | 329 | MicroProfileOnThreadCreate("EmuThread"); |
| 330 | SCOPE_EXIT({ MicroProfileShutdown(); }); | 330 | SCOPE_EXIT { |
| 331 | MicroProfileShutdown(); | ||
| 332 | }; | ||
| 331 | 333 | ||
| 332 | Common::ConfigureNvidiaEnvironmentFlags(); | 334 | Common::ConfigureNvidiaEnvironmentFlags(); |
| 333 | 335 | ||