Просмотр исходного кода

SVC: Enable CloseHandle, clean up DuplicateHandle

Yuri Kunde Schlesner 11 лет назад
Родитель
Сommit
c4208c1171
1 измененных файлов с 5 добавлено и 9 удалено
  1. 5 9
      src/core/hle/svc.cpp

+ 5 - 9
src/core/hle/svc.cpp

@@ -131,9 +131,8 @@ static ResultCode SendSyncRequest(Handle handle) {
 
 
 /// Close a handle
 /// Close a handle
 static ResultCode CloseHandle(Handle handle) {
 static ResultCode CloseHandle(Handle handle) {
-    // ImplementMe
-    LOG_ERROR(Kernel_SVC, "(UNIMPLEMENTED) called handle=0x%08X", handle);
-    return RESULT_SUCCESS;
+    LOG_TRACE(Kernel_SVC, "Closing handle 0x%08X", handle);
+    return Kernel::g_handle_table.Close(handle);
 }
 }
 
 
 /// Wait for a handle to synchronize, timeout after the specified nanoseconds
 /// Wait for a handle to synchronize, timeout after the specified nanoseconds
@@ -445,12 +444,9 @@ static ResultCode CreateEvent(Handle* out_handle, u32 reset_type) {
 
 
 /// Duplicates a kernel handle
 /// Duplicates a kernel handle
 static ResultCode DuplicateHandle(Handle* out, Handle handle) {
 static ResultCode DuplicateHandle(Handle* out, Handle handle) {
-    ResultVal<Handle> out_h = Kernel::g_handle_table.Duplicate(handle);
-    if (out_h.Succeeded()) {
-        *out = *out_h;
-        LOG_TRACE(Kernel_SVC, "duplicated 0x%08X to 0x%08X", handle, *out);
-    }
-    return out_h.Code();
+    CASCADE_RESULT(*out, Kernel::g_handle_table.Duplicate(handle));
+    LOG_TRACE(Kernel_SVC, "duplicated 0x%08X to 0x%08X", handle, *out);
+    return RESULT_SUCCESS;
 }
 }
 
 
 /// Signals an event
 /// Signals an event