From 56dbb82d2efc02b02b7aa055eaff2af6a468df0e Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Thu, 28 Jan 2010 09:41:53 +0000 Subject: [PATCH] make eos preview capture more robust git-svn-id: https://svn.code.sf.net/p/gphoto/code/trunk/libgphoto2@12663 67ed7778-7388-44ab-90cf-0a291f65f57c --- camlibs/ptp2/library.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/camlibs/ptp2/library.c b/camlibs/ptp2/library.c index 7ff37c40d..c8fc99345 100644 --- a/camlibs/ptp2/library.c +++ b/camlibs/ptp2/library.c @@ -1474,6 +1474,22 @@ camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) } while (tries--) { + PTPCanon_changes_entry *entries = NULL; + int nrofentries = 0; + + /* Poll for camera events */ + while (1) { + ret = ptp_canon_eos_getevent (params, &entries, &nrofentries); + if (ret != PTP_RC_OK) { + gp_log (GP_LOG_ERROR,"ptp2_capture_eos_preview", "getevent failed!"); + return GP_ERROR; + } + if (nrofentries == 0) + break; + free (entries); + nrofentries = 0; + entries = NULL; + } ret = ptp_canon_eos_get_viewfinder_image (params , &data, &size); if (ret == PTP_RC_OK) { uint32_t len = dtoh32a(data); @@ -1492,24 +1508,8 @@ camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) return GP_OK; } else { if (ret == 0xa102) { /* means "not there yet" ... so wait */ - PTPCanon_changes_entry *entries = NULL; - int nrofentries = 0; - gp_context_idle (context); usleep (50*1000); - /* Poll for camera events */ - while (1) { - ret = ptp_canon_eos_getevent (params, &entries, &nrofentries); - if (ret != PTP_RC_OK) { - gp_log (GP_LOG_ERROR,"ptp2_capture_eos_preview", "getevent failed!"); - return GP_ERROR; - } - if (nrofentries == 0) - break; - free (entries); - nrofentries = 0; - entries = NULL; - } continue; } gp_log (GP_LOG_ERROR,"ptp2_capture_eos_preview", "get_viewfinder_image failed: 0x%x", ret);