summaryrefslogtreecommitdiff
path: root/src/core/hle/svc.cpp
diff options
context:
space:
mode:
authorGravatar Yuri Kunde Schlesner2015-02-01 00:14:40 -0200
committerGravatar Yuri Kunde Schlesner2015-02-02 15:37:09 -0200
commit88a4a808c688eeabb136e9b45223a0e9c95896bc (patch)
treec4181a69ff882e1af1b7d65bf3596a6cb3dd88b9 /src/core/hle/svc.cpp
parentKernel: Make WaitObjects share ownership of Threads waiting on them (diff)
downloadyuzu-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.cpp18
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
261static ResultCode CreateAddressArbiter(Handle* out_handle) { 261static 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) {
366static ResultCode CreateMutex(Handle* out_handle, u32 initial_locked) { 366static 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
436static ResultCode CreateEvent(Handle* out_handle, u32 reset_type) { 436static 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
453static ResultCode SignalEvent(Handle handle) { 455static 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
466static ResultCode ClearEvent(Handle handle) { 469static 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) {
478static ResultCode CreateTimer(Handle* out_handle, u32 reset_type) { 482static 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);