public void GetData()
            {
                LockData();
                try
                {
                    NewSampleReceivedDataPtr dataPtr = dllGetData();

                    if (dataPtr.timeOfCapture != prev.timeOfCapture || dataPtr.timeOfArrival != prev.timeOfArrival)
                    {
                        AllocAndCopy(dataPtr.confidenceMap, ref data.confidenceMap, dataPtr.nconfidenceMap);
                        AllocAndCopy(dataPtr.phaseMap, ref data.phaseMap, dataPtr.nphaseMap);
                        AllocAndCopy(dataPtr.depthMap, ref data.depthMap, dataPtr.ndepthMap);
                        AllocAndCopy(dataPtr.depthMapFloatingPoint, ref data.depthMapFloatingPoint, dataPtr.ndepthMapFloatingPoint);
                        AllocAndCopy(dataPtr.vertices, ref data.vertices, dataPtr.nvertices);
                        AllocAndCopy(dataPtr.verticesFloatingPoint, ref data.verticesFloatingPoint, dataPtr.nverticesFloatingPoint);
                        AllocAndCopy(dataPtr.uvMap, ref data.uvMap, dataPtr.nuvMap);
                        data.timeOfCapture                = dataPtr.timeOfCapture;
                        data.timeOfArrival                = dataPtr.timeOfArrival;
                        data.droppedSampleCount           = dataPtr.droppedSampleCount;
                        data.cumulativeDroppedSampleCount = dataPtr.cumulativeDroppedSampleCount;
                    }
                    prev = dataPtr;
                }
                finally
                {
                    UnlockData();
                }
            }
            public void GetData()
            {
                LockData();
                try
                {
                    NewSampleReceivedDataPtr dataPtr = dllGetData();

                    if (dataPtr.timeOfCapture != prev.timeOfCapture || dataPtr.timeOfArrival != prev.timeOfArrival)
                    {
                        AllocAndCopy(dataPtr.colorMap, ref data.colorMap, dataPtr.ncolorMap);
                        AllocAndCopy(dataPtr.compressedData, ref data.compressedData, dataPtr.ncompressedData);
                        data.timeOfCapture                = dataPtr.timeOfCapture;
                        data.timeOfArrival                = dataPtr.timeOfArrival;
                        data.droppedSampleCount           = dataPtr.droppedSampleCount;
                        data.cumulativeDroppedSampleCount = dataPtr.cumulativeDroppedSampleCount;
                    }
                    prev = dataPtr;
                }
                finally
                {
                    UnlockData();
                }
            }