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);
        }