From 18766b9e69bf822764eba98237325d07b3c4ef0f Mon Sep 17 00:00:00 2001
From: bunnei <ericbunnie@gmail.com>
Date: Sun, 13 Apr 2014 22:59:16 -0400
Subject: [PATCH] added a stub for GetLockHandle

---
 src/core/hle/service/apt.cpp     | 35 +++++++++++++++++++++++++++-----
 src/core/hle/service/apt.h       |  8 +++++++-
 src/core/hle/service/service.cpp | 10 ++++++---
 3 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/src/core/hle/service/apt.cpp b/src/core/hle/service/apt.cpp
index 9ab5a361c6..5e37b838ac 100644
--- a/src/core/hle/service/apt.cpp
+++ b/src/core/hle/service/apt.cpp
@@ -4,17 +4,42 @@
 
 
 #include "common/log.h"
+
+#include "core/hle/hle.h"
 #include "core/hle/service/apt.h"
 
-
-
-
 namespace Service {
 
+// Returns handle to APT Mutex. Not imlemented.
+Syscall::Result APT::GetLockHandle() {
+    return 0x00000000;
+}
 
+/**
+ * Called when svcSendSyncRequest is called, loads command buffer and executes comand
+ * @return Return result of svcSendSyncRequest passed back to user app
+ */
 Syscall::Result APT::Sync() {
-    NOTICE_LOG(HLE, "APT::Sync - Initialize");
-    return 0;
+    Syscall::Result res = 0;
+    u32* cmd_buff = (u32*)HLE::GetPointer(HLE::CMD_BUFFER_ADDR + CMD_OFFSET);
+
+    switch(cmd_buff[0]) {
+    case CMD_HEADER_INIT:
+        NOTICE_LOG(OSHLE, "APT::Sync - Initialize");
+        break;
+
+    case CMD_HEADER_GET_LOCK_HANDLE:
+        NOTICE_LOG(OSHLE, "APT::Sync - GetLockHandle");
+        cmd_buff[5] = GetLockHandle();
+        break;
+
+    default:
+        ERROR_LOG(OSHLE, "APT::Sync - Unknown command 0x%08X", cmd_buff[0]);
+        res = -1;
+        break;
+    }
+
+    return res;
 }
 
 
diff --git a/src/core/hle/service/apt.h b/src/core/hle/service/apt.h
index 05c544378e..3730bc30e2 100644
--- a/src/core/hle/service/apt.h
+++ b/src/core/hle/service/apt.h
@@ -64,7 +64,13 @@ public:
      * Called when svcSendSyncRequest is called, loads command buffer and executes comand
      * @return Return result of svcSendSyncRequest passed back to user app
      */
-    virtual Syscall::Result Sync();
+    Syscall::Result Sync();
+
+private:
+
+
+    Syscall::Result GetLockHandle();
+
 
 };
 
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index b2470d814c..44c7c8627c 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -104,9 +104,7 @@ public:
      * @return Return result of svcSendSyncRequest passed back to user app
      */
     Syscall::Result Sync() {
-        u32 header = 0;
         Syscall::Result res = 0;
-        
         u32* cmd_buff = (u32*)HLE::GetPointer(HLE::CMD_BUFFER_ADDR + CMD_OFFSET);
 
         switch (cmd_buff[0]) {
@@ -116,6 +114,7 @@ public:
             break;
 
         case CMD_HEADER_GET_HANDLE:
+        {
             const char* port_name = (const char*)&cmd_buff[1];
             Interface* service = g_manager->FetchFromPortName(port_name);
 
@@ -128,7 +127,12 @@ public:
                 ERROR_LOG(OSHLE, "Service %s does not exist", port_name);
                 res = -1;
             }
-            
+            break;
+        }
+
+        default:
+            ERROR_LOG(OSHLE, "SRV::Sync - Unknown command 0x%08X", cmd_buff[0]);
+            res = -1;
             break;
         }