From 33cd74884ae93d86365e16a8f23ab35f126808e5 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Wed, 26 Oct 2016 14:47:41 +0900 Subject: [PATCH] [AppControl] Remove using Marshal.GetIUnknownForObject API Change-Id: I2f439001b9c138a23a9d50636a05295552101baa Signed-off-by: Hwankyu Jhun --- Tizen.Applications/Interop/Interop.AppControl.cs | 4 +- .../Tizen.Applications/AppControl.cs | 62 ++++++++-------------- 2 files changed, 24 insertions(+), 42 deletions(-) diff --git a/Tizen.Applications/Interop/Interop.AppControl.cs b/Tizen.Applications/Interop/Interop.AppControl.cs index 6e2d955..de0aee4 100755 --- a/Tizen.Applications/Interop/Interop.AppControl.cs +++ b/Tizen.Applications/Interop/Interop.AppControl.cs @@ -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 diff --git a/Tizen.Applications/Tizen.Applications/AppControl.cs b/Tizen.Applications/Tizen.Applications/AppControl.cs index f48fa1e..c9d3239 100755 --- a/Tizen.Applications/Tizen.Applications/AppControl.cs +++ b/Tizen.Applications/Tizen.Applications/AppControl.cs @@ -417,30 +417,21 @@ namespace Tizen.Applications } List ids = new List(); - Interop.AppControl.AppMatchedCallback callback = new Interop.AppControl.AppMatchedCallback( - (handle, applicationId, userData) => + Interop.AppControl.AppMatchedCallback callback = (handle, applicationId, userData) => + { + if (applicationId == null) { - List idsList = Marshal.GetObjectForIUnknown(userData) as List; - 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 GetKeys() { List keys = new List(); - Interop.AppControl.ExtraDataCallback callback = new Interop.AppControl.ExtraDataCallback( - (handle, key, userData) => - { - List keysList = Marshal.GetObjectForIUnknown(userData) as List; - 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; -- 2.7.4