diff options
| author | 2015-02-01 00:14:40 -0200 | |
|---|---|---|
| committer | 2015-02-02 15:37:09 -0200 | |
| commit | 88a4a808c688eeabb136e9b45223a0e9c95896bc (patch) | |
| tree | c4181a69ff882e1af1b7d65bf3596a6cb3dd88b9 /src/core/hle/svc.cpp | |
| parent | Kernel: Make WaitObjects share ownership of Threads waiting on them (diff) | |
| download | yuzu-88a4a808c688eeabb136e9b45223a0e9c95896bc.tar.gz yuzu-88a4a808c688eeabb136e9b45223a0e9c95896bc.tar.xz yuzu-88a4a808c688eeabb136e9b45223a0e9c95896bc.zip | |
Kernel: Stop creating useless Handles during object creation
They're finally unnecessary, and will stop cluttering the application's
handle table.
Diffstat (limited to 'src/core/hle/svc.cpp')
| -rw-r--r-- | src/core/hle/svc.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 8bfa1428e..34a27917f 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp | |||
| @@ -261,7 +261,7 @@ static ResultCode WaitSynchronizationN(s32* out, Handle* handles, s32 handle_cou | |||
| 261 | static ResultCode CreateAddressArbiter(Handle* out_handle) { | 261 | static ResultCode CreateAddressArbiter(Handle* out_handle) { |
| 262 | using Kernel::AddressArbiter; | 262 | using Kernel::AddressArbiter; |
| 263 | 263 | ||
| 264 | CASCADE_RESULT(SharedPtr<AddressArbiter> arbiter, AddressArbiter::Create()); | 264 | SharedPtr<AddressArbiter> arbiter = AddressArbiter::Create(); |
| 265 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(arbiter))); | 265 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(arbiter))); |
| 266 | LOG_TRACE(Kernel_SVC, "returned handle=0x%08X", *out_handle); | 266 | LOG_TRACE(Kernel_SVC, "returned handle=0x%08X", *out_handle); |
| 267 | return RESULT_SUCCESS; | 267 | return RESULT_SUCCESS; |
| @@ -366,7 +366,7 @@ static ResultCode SetThreadPriority(Handle handle, s32 priority) { | |||
| 366 | static ResultCode CreateMutex(Handle* out_handle, u32 initial_locked) { | 366 | static ResultCode CreateMutex(Handle* out_handle, u32 initial_locked) { |
| 367 | using Kernel::Mutex; | 367 | using Kernel::Mutex; |
| 368 | 368 | ||
| 369 | CASCADE_RESULT(SharedPtr<Mutex> mutex, Mutex::Create(initial_locked != 0)); | 369 | SharedPtr<Mutex> mutex = Mutex::Create(initial_locked != 0); |
| 370 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(mutex))); | 370 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(mutex))); |
| 371 | 371 | ||
| 372 | LOG_TRACE(Kernel_SVC, "called initial_locked=%s : created handle=0x%08X", | 372 | LOG_TRACE(Kernel_SVC, "called initial_locked=%s : created handle=0x%08X", |
| @@ -434,7 +434,9 @@ static ResultCode QueryMemory(void* info, void* out, u32 addr) { | |||
| 434 | 434 | ||
| 435 | /// Create an event | 435 | /// Create an event |
| 436 | static ResultCode CreateEvent(Handle* out_handle, u32 reset_type) { | 436 | static ResultCode CreateEvent(Handle* out_handle, u32 reset_type) { |
| 437 | CASCADE_RESULT(auto evt, Kernel::Event::Create(static_cast<ResetType>(reset_type))); | 437 | using Kernel::Event; |
| 438 | |||
| 439 | SharedPtr<Event> evt = Kernel::Event::Create(static_cast<ResetType>(reset_type)); | ||
| 438 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(evt))); | 440 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(evt))); |
| 439 | 441 | ||
| 440 | LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", | 442 | LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", |
| @@ -451,9 +453,10 @@ static ResultCode DuplicateHandle(Handle* out, Handle handle) { | |||
| 451 | 453 | ||
| 452 | /// Signals an event | 454 | /// Signals an event |
| 453 | static ResultCode SignalEvent(Handle handle) { | 455 | static ResultCode SignalEvent(Handle handle) { |
| 456 | using Kernel::Event; | ||
| 454 | LOG_TRACE(Kernel_SVC, "called event=0x%08X", handle); | 457 | LOG_TRACE(Kernel_SVC, "called event=0x%08X", handle); |
| 455 | 458 | ||
| 456 | auto evt = Kernel::g_handle_table.Get<Kernel::Event>(handle); | 459 | SharedPtr<Event> evt = Kernel::g_handle_table.Get<Kernel::Event>(handle); |
| 457 | if (evt == nullptr) | 460 | if (evt == nullptr) |
| 458 | return ERR_INVALID_HANDLE; | 461 | return ERR_INVALID_HANDLE; |
| 459 | 462 | ||
| @@ -464,9 +467,10 @@ static ResultCode SignalEvent(Handle handle) { | |||
| 464 | 467 | ||
| 465 | /// Clears an event | 468 | /// Clears an event |
| 466 | static ResultCode ClearEvent(Handle handle) { | 469 | static ResultCode ClearEvent(Handle handle) { |
| 470 | using Kernel::Event; | ||
| 467 | LOG_TRACE(Kernel_SVC, "called event=0x%08X", handle); | 471 | LOG_TRACE(Kernel_SVC, "called event=0x%08X", handle); |
| 468 | 472 | ||
| 469 | auto evt = Kernel::g_handle_table.Get<Kernel::Event>(handle); | 473 | SharedPtr<Event> evt = Kernel::g_handle_table.Get<Kernel::Event>(handle); |
| 470 | if (evt == nullptr) | 474 | if (evt == nullptr) |
| 471 | return ERR_INVALID_HANDLE; | 475 | return ERR_INVALID_HANDLE; |
| 472 | 476 | ||
| @@ -478,7 +482,7 @@ static ResultCode ClearEvent(Handle handle) { | |||
| 478 | static ResultCode CreateTimer(Handle* out_handle, u32 reset_type) { | 482 | static ResultCode CreateTimer(Handle* out_handle, u32 reset_type) { |
| 479 | using Kernel::Timer; | 483 | using Kernel::Timer; |
| 480 | 484 | ||
| 481 | CASCADE_RESULT(auto timer, Timer::Create(static_cast<ResetType>(reset_type))); | 485 | SharedPtr<Timer> timer = Timer::Create(static_cast<ResetType>(reset_type)); |
| 482 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(timer))); | 486 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(timer))); |
| 483 | 487 | ||
| 484 | LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", | 488 | LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", |
| @@ -552,7 +556,7 @@ static ResultCode CreateMemoryBlock(Handle* out_handle, u32 addr, u32 size, u32 | |||
| 552 | using Kernel::SharedMemory; | 556 | using Kernel::SharedMemory; |
| 553 | // TODO(Subv): Implement this function | 557 | // TODO(Subv): Implement this function |
| 554 | 558 | ||
| 555 | CASCADE_RESULT(auto shared_memory, SharedMemory::Create()); | 559 | SharedPtr<SharedMemory> shared_memory = SharedMemory::Create(); |
| 556 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(shared_memory))); | 560 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(shared_memory))); |
| 557 | 561 | ||
| 558 | LOG_WARNING(Kernel_SVC, "(STUBBED) called addr=0x%08X", addr); | 562 | LOG_WARNING(Kernel_SVC, "(STUBBED) called addr=0x%08X", addr); |