Esempio n. 1
0
 void onImageRequestFailed(object sender, ImageRequestFailedEventArgs e)
 {
     if (e.reason == Leap.Image.RequestFailureReason.Insufficient_Buffer)
     {
         imagedata = new byte[e.requiredBufferSize];
     }
     Console.WriteLine("Image request failed: " + e.message);
 }
Esempio n. 2
0
 void onImageRequestFailed(object sender, ImageRequestFailedEventArgs e)
 {
     if (e.reason == Leap.Image.RequestFailureReason.Insufficient_Buffer)
     {
         imagedata = new byte[e.requiredBufferSize];
     }
     // debugText.AppendText("Image request failed: " + e.message + "\n");
 }
Esempio n. 3
0
        private void handleFailedImageRequest(ref LEAP_IMAGE_FRAME_REQUEST_ERROR_EVENT failed_image_evt)
        {
            if (_leapConnection == IntPtr.Zero)
            {
                return;
            }

            ImageFuture pendingImage = _pendingImageRequestList.FindAndRemove(failed_image_evt.token);

            if (pendingImage != null)
            {
                pendingImage.imageData.CheckIn();

                ImageRequestFailedEventArgs errorEventArgs = new ImageRequestFailedEventArgs(failed_image_evt.description.frame_id, pendingImage.imageObject.Type);
                switch (failed_image_evt.error)
                {
                case eLeapImageRequestError.eLeapImageRequestError_InsufficientBuffer:
                    errorEventArgs.message = "The buffer specified for the request was too small.";
                    errorEventArgs.reason  = Image.RequestFailureReason.Insufficient_Buffer;
                    if (failed_image_evt.description.type == eLeapImageType.eLeapImageType_Default && _standardImageBufferSize < failed_image_evt.required_buffer_len)
                    {
                        _standardImageBufferSize = failed_image_evt.required_buffer_len;
                    }
                    else if (failed_image_evt.description.type == eLeapImageType.eLeapImageType_Raw && _standardRawBufferSize < failed_image_evt.required_buffer_len)
                    {
                        _standardRawBufferSize = failed_image_evt.required_buffer_len;
                    }
                    break;

                case eLeapImageRequestError.eLeapImageRequestError_Unavailable:
                    errorEventArgs.message = "The image was request too late and is no longer available.";
                    errorEventArgs.reason  = Image.RequestFailureReason.Image_Unavailable;
                    break;

                case eLeapImageRequestError.eLeapImageRequestError_ImagesDisabled:
                    errorEventArgs.message = "Images are disabled by the current configuration settings.";
                    errorEventArgs.reason  = Image.RequestFailureReason.Images_Disabled;
                    break;

                default:
                    errorEventArgs.message = "The image request failed for an undetermined reason.";
                    errorEventArgs.reason  = Image.RequestFailureReason.Unknown_Error;
                    break;
                }
                errorEventArgs.requiredBufferSize = (long)failed_image_evt.required_buffer_len;

                this.LeapImageRequestFailed.Dispatch <ImageRequestFailedEventArgs> (this, errorEventArgs);
            }
            _pendingImageRequestList.purgeOld(_leapConnection);
        }
Esempio n. 4
0
        private void handleFailedImageRequest(ref LEAP_IMAGE_FRAME_REQUEST_ERROR_EVENT failed_image_evt)
        {
            ImageReference pendingImage = null;

            lock (lockPendingImageList)
            {
                _pendingImageRequests.TryGetValue(failed_image_evt.token.requestID, out pendingImage);
            }

            if (pendingImage != null)
            {
                pendingImage.imageData.CheckIn();
                lock (_pendingImageRequests)
                {
                    _pendingImageRequests.Remove(failed_image_evt.token.requestID);
                }

                ImageRequestFailedEventArgs errorEventArgs = new ImageRequestFailedEventArgs(failed_image_evt.description.frame_id, pendingImage.imageObject.Type);
                switch (failed_image_evt.error)
                {
                case eLeapImageRequestError.eLeapImageRequestError_InsufficientBuffer:
                    errorEventArgs.message = "The buffer specified for the request was too small.";
                    errorEventArgs.reason  = Image.RequestFailureReason.Insufficient_Buffer;
                    if (failed_image_evt.description.type == eLeapImageType.eLeapImageType_Default && _standardImageBufferSize < failed_image_evt.required_buffer_len)
                    {
                        _standardImageBufferSize = failed_image_evt.required_buffer_len;
                    }
                    else if (failed_image_evt.description.type == eLeapImageType.eLeapImageType_Raw && _standardRawBufferSize < failed_image_evt.required_buffer_len)
                    {
                        _standardRawBufferSize = failed_image_evt.required_buffer_len;
                    }
                    break;

                case eLeapImageRequestError.eLeapImageRequestError_Unavailable:
                    errorEventArgs.message = "The image was request too late and is no longer available.";
                    errorEventArgs.reason  = Image.RequestFailureReason.Image_Unavailable;
                    break;

                case eLeapImageRequestError.eLeapImageRequestError_ImagesDisabled:
                    errorEventArgs.message = "Images are disabled by the current configuration settings.";
                    errorEventArgs.reason  = Image.RequestFailureReason.Images_Disabled;
                    break;

                default:
                    errorEventArgs.message = "The image request failed for an undetermined reason.";
                    errorEventArgs.reason  = Image.RequestFailureReason.Unknown_Error;
                    break;
                }
                errorEventArgs.requiredBufferSize = (long)failed_image_evt.required_buffer_len;

                this.LeapImageRequestFailed.Dispatch <ImageRequestFailedEventArgs>(this, errorEventArgs);
            }
            //Purge old requests
            List <UInt32>  keys = new List <UInt32>(_pendingImageRequests.Keys);
            ImageReference request;
            long           now = LeapC.GetNow();

            for (int k = 0; k < keys.Count; k++)
            {
                request = _pendingImageRequests[keys[k]];
                if ((now - request.Timestamp) > 90000)
                {
                    lock (_pendingImageRequests)
                    {
                        _pendingImageRequests.Remove(keys[k]);
                    }
                    request.imageData.CheckIn();
                }
            }
        }