public void GetInterpolatedFrame(Frame toFill, Int64 time) { UInt64 size = GetInterpolatedFrameSize(time); IntPtr trackingBuffer = Marshal.AllocHGlobal((Int32)size); eLeapRS result = LeapC.InterpolateFrame(_leapConnection, time, trackingBuffer, size); reportAbnormalResults("LeapC get interpolated frame call was ", result); if (result == eLeapRS.eLeapRS_Success) { LEAP_TRACKING_EVENT tracking_evt; StructMarshal<LEAP_TRACKING_EVENT>.PtrToStruct(trackingBuffer, out tracking_evt); toFill.CopyFrom(ref tracking_evt); } Marshal.FreeHGlobal(trackingBuffer); }
public Frame GetInterpolatedFrame(Int64 time) { UInt64 size = GetInterpolatedFrameSize(time); IntPtr trackingBuffer = Marshal.AllocHGlobal((Int32)size); eLeapRS result = LeapC.InterpolateFrame(_leapConnection, time, trackingBuffer, size); reportAbnormalResults("LeapC get interpolated frame call was ", result); Frame frame = null; if (result == eLeapRS.eLeapRS_Success) { LEAP_TRACKING_EVENT tracking_evt = StructMarshal <LEAP_TRACKING_EVENT> .PtrToStruct(trackingBuffer); frame = frameFactory.makeFrame(ref tracking_evt); } Marshal.FreeHGlobal(trackingBuffer); return(frame); }