public void LoadLinphoneCallEvents() { if (manager.LinphoneService.LinphoneCore == IntPtr.Zero) { return; } AllCallsEvents.Clear(); isLoadingCalls = true; IntPtr callsListPtr = LinphoneAPI.linphone_core_get_call_logs(manager.LinphoneService.LinphoneCore); if (callsListPtr != IntPtr.Zero) { MSList curStruct; do { curStruct.next = IntPtr.Zero; curStruct.prev = IntPtr.Zero; curStruct.data = IntPtr.Zero; curStruct = (MSList)Marshal.PtrToStructure(callsListPtr, typeof(MSList)); if (curStruct.data != IntPtr.Zero) { var callevent = ParseLinphoneCallLog(curStruct.data); AllCallsEvents.Add(callevent); } callsListPtr = curStruct.next; } while (curStruct.next != IntPtr.Zero); } isLoadingCalls = false; if (OnCallHistoryEvent != null) { var eargs = new VATRPCallEventArgs(HistoryEventTypes.Load); OnCallHistoryEvent(null, eargs); } }