[AppControl] Remove using Marshal.GetIUnknownForObject API
authorHwankyu Jhun <h.jhun@samsung.com>
Wed, 26 Oct 2016 05:47:41 +0000 (14:47 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Tue, 1 Nov 2016 05:44:37 +0000 (14:44 +0900)
Change-Id: I2f439001b9c138a23a9d50636a05295552101baa
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
Tizen.Applications/Interop/Interop.AppControl.cs
Tizen.Applications/Tizen.Applications/AppControl.cs

index 6e2d955..de0aee4 100755 (executable)
@@ -25,8 +25,8 @@ internal static partial class Interop
     {
         internal const int AppStartedStatus = 1;
 
-        internal delegate bool ExtraDataCallback(SafeAppControlHandle handle, string key, IntPtr userData);
-        internal delegate bool AppMatchedCallback(SafeAppControlHandle handle, string applicationId, IntPtr userData);
+        internal delegate bool ExtraDataCallback(IntPtr handle, string key, IntPtr userData);
+        internal delegate bool AppMatchedCallback(IntPtr handle, string applicationId, IntPtr userData);
         internal delegate void ReplyCallback(IntPtr request, IntPtr reply, int result, IntPtr userData);
 
         internal enum ErrorCode
index f48fa1e..c9d3239 100755 (executable)
@@ -417,30 +417,21 @@ namespace Tizen.Applications
             }
 
             List<string> ids = new List<string>();
-            Interop.AppControl.AppMatchedCallback callback = new Interop.AppControl.AppMatchedCallback(
-                (handle, applicationId, userData) =>
+            Interop.AppControl.AppMatchedCallback callback = (handle, applicationId, userData) =>
+            {
+                if (applicationId == null)
                 {
-                    List<string> idsList = Marshal.GetObjectForIUnknown(userData) as List<string>;
-                    if (idsList != null)
-                    {
-                        idsList.Add(applicationId);
-                        return true;
-                    }
-                    else
-                    {
                         return false;
-                    }
-                });
+                }
 
-            IntPtr pointerToApplicationIds = Marshal.GetIUnknownForObject(ids);
-            if (pointerToApplicationIds != IntPtr.Zero)
+                ids.Add(applicationId);
+                return true;
+            };
+
+            Interop.AppControl.ErrorCode err = Interop.AppControl.ForeachAppMatched(control._handle, callback, IntPtr.Zero);
+            if (err != Interop.AppControl.ErrorCode.None)
             {
-                Interop.AppControl.ErrorCode err = Interop.AppControl.ForeachAppMatched(control._handle, callback, pointerToApplicationIds);
-                if (err != Interop.AppControl.ErrorCode.None)
-                {
                     throw new InvalidOperationException("Failed to get matched application ids. err = " + err);
-                }
-                return ids;
             }
 
             return ids;
@@ -727,30 +718,21 @@ namespace Tizen.Applications
             public IEnumerable<string> GetKeys()
             {
                 List<string> keys = new List<string>();
-                Interop.AppControl.ExtraDataCallback callback = new Interop.AppControl.ExtraDataCallback(
-                    (handle, key, userData) =>
-                    {
-                        List<string> keysList = Marshal.GetObjectForIUnknown(userData) as List<string>;
-                        if (keysList != null)
-                        {
-                            keysList.Add(key);
-                            return true;
-                        }
-                        else
-                        {
-                            return false;
-                        }
-                    });
-
-                IntPtr pointerToKeys = Marshal.GetIUnknownForObject(keys);
-                if (pointerToKeys != IntPtr.Zero)
+                Interop.AppControl.ExtraDataCallback callback = (handle, key, userData) =>
                 {
-                    Interop.AppControl.ErrorCode err = Interop.AppControl.ForeachExtraData(_handle, callback, pointerToKeys);
-                    if (err != Interop.AppControl.ErrorCode.None)
+                    if (key == null)
                     {
-                        throw new InvalidOperationException("Failed to get keys. err = " + err);
+                        return false;
                     }
-                    return keys;
+
+                    keys.Add(key);
+                    return true;
+                };
+
+                Interop.AppControl.ErrorCode err = Interop.AppControl.ForeachExtraData(_handle, callback, IntPtr.Zero);
+                if (err != Interop.AppControl.ErrorCode.None)
+                {
+                    throw new InvalidOperationException("Failed to get keys. err = " + err);
                 }
 
                 return keys;