Merge remote-tracking branch 'origin/master' into tizen
authorDotnetBuild <dotnetbuild.tizen@gmail.com>
Wed, 27 Dec 2017 15:00:10 +0000 (00:00 +0900)
committerDotnetBuild <dotnetbuild.tizen@gmail.com>
Wed, 27 Dec 2017 15:00:10 +0000 (00:00 +0900)
src/ElmSharp/ElmSharp/Calendar.cs
src/ElmSharp/Interop/Interop.Elementary.CalendarView.cs [changed mode: 0644->0755]
src/Tizen.Applications.DataControl/Interop/Interop.DataControl.cs
src/Tizen.Applications.DataControl/Tizen.Applications.DataControl/Consumer.cs

index 5f3f18b..3d4a429 100755 (executable)
@@ -19,6 +19,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Runtime.InteropServices;
 
+
 namespace ElmSharp
 {
     /// <summary>
@@ -191,7 +192,7 @@ namespace ElmSharp
                 _cacheDisplayedMonth = currentDisplayedMonth;
             };
 
-            _calendarFormat = (t) => { return _dateFormatDelegate(t); };
+            _calendarFormat = (ref Interop.Libc.SystemTime t) => { return _dateFormatDelegate(t); };
         }
 
         /// <summary>
old mode 100644 (file)
new mode 100755 (executable)
index 6885035..a0a3690
@@ -100,7 +100,7 @@ internal static partial class Interop
         internal static extern void elm_calendar_marks_clear(IntPtr obj);
 
         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-        internal delegate string Elm_Calendar_Format_Cb(Libc.SystemTime date);
+        internal delegate string Elm_Calendar_Format_Cb(ref Libc.SystemTime date);
 
         [DllImport(Libraries.Elementary)]
         internal static extern void elm_calendar_format_function_set(IntPtr obj, Elm_Calendar_Format_Cb format_function);
index b19f6ee..e598ef4 100755 (executable)
@@ -154,7 +154,7 @@ internal static partial class Interop
         internal static extern ResultType DataControlGetDataId(SafeDataControlHandle handle, out string dataId);
 
         internal delegate void MapGetResponseCallback(int requestID,
-            IntPtr provider, string[] resultValueList, int resultValueCount, bool providerResult, string error, IntPtr userData);
+            IntPtr provider, IntPtr resultValueList, int resultValueCount, bool providerResult, string error, IntPtr userData);
         internal delegate void MapSetResponseCallback(int requestID,
             IntPtr provider, bool providerResult, string error, IntPtr userData);
         internal delegate void MapAddResponseCallback(int requestID,
index 27a85ac..9619d44 100755 (executable)
@@ -17,6 +17,7 @@ using System;
 using System.Collections.Generic;
 using Tizen.Applications.DataControl.Core;
 using System.Threading;
+using System.Runtime.InteropServices;
 
 namespace Tizen.Applications.DataControl
 {
@@ -166,7 +167,18 @@ namespace Tizen.Applications.DataControl
                 _reqConsumerDictionary.Remove(reqId);
             }
 
-            private static void MapGetResponse(int reqId, IntPtr provider, string[] valueList, int valueCount, bool providerResult, string error, IntPtr userData)
+            static void IntPtrToStringArray(IntPtr unmanagedArray, int size, out string[] managedArray)
+            {
+                managedArray = new string[size];
+                IntPtr[] IntPtrArray = new IntPtr[size];
+                Marshal.Copy(unmanagedArray, IntPtrArray, 0, size);
+                for (int iterator = 0; iterator < size; iterator++)
+                {
+                    managedArray[iterator] = Marshal.PtrToStringAnsi(IntPtrArray[iterator]);
+                }
+            }
+
+            private static void MapGetResponse(int reqId, IntPtr provider, IntPtr valueList, int valueCount, bool providerResult, string error, IntPtr userData)
             {
                 MapGetResult mgr;
                 Log.Debug(LogTag, $"MapGetResponse {reqId.ToString()}");
@@ -183,7 +195,9 @@ namespace Tizen.Applications.DataControl
 
                 if (valueList !=null)
                 {
-                    mgr = new MapGetResult(valueList, providerResult);
+                    string[] stringArray;
+                    IntPtrToStringArray(valueList, valueCount, out stringArray);
+                    mgr = new MapGetResult(stringArray, providerResult);
                 }
                 else
                 {