From 4d9e9cdc7286d7c1d7c3012d2db138dda0887ba05607f4e470f0a32bf9a03746 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Sun, 15 Aug 2010 18:05:34 +0000 Subject: [PATCH 1/3] - Updated to 2.4.10 release - lots of PTP and EOS related fixes - shortcuts in UDEV rules - new jl2005c driver for small cameras - translation updates OBS-URL: https://build.opensuse.org/package/show/graphics/libgphoto2?expand=0&rev=38 --- libgphoto2-2.4.10.tar.bz2 | 3 + libgphoto2-2.4.9.tar.bz2 | 3 - libgphoto2.changes | 9 + libgphoto2.spec | 4 +- libgphoto24-branch.patch | 416 -------------------------------------- 5 files changed, 13 insertions(+), 422 deletions(-) create mode 100644 libgphoto2-2.4.10.tar.bz2 delete mode 100644 libgphoto2-2.4.9.tar.bz2 delete mode 100644 libgphoto24-branch.patch diff --git a/libgphoto2-2.4.10.tar.bz2 b/libgphoto2-2.4.10.tar.bz2 new file mode 100644 index 0000000..6fe038c --- /dev/null +++ b/libgphoto2-2.4.10.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bb28232c246c19465724dbca2f511dd56feaee3cdb018589e8370c46f1cf1cd +size 5699257 diff --git a/libgphoto2-2.4.9.tar.bz2 b/libgphoto2-2.4.9.tar.bz2 deleted file mode 100644 index 4c725d5..0000000 --- a/libgphoto2-2.4.9.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8bd80a70db64defcc9f50354326175eec1d070c2cc3dfbcd7ddd1ef9bb4f7af0 -size 5642063 diff --git a/libgphoto2.changes b/libgphoto2.changes index e7ece22..d7b14f7 100644 --- a/libgphoto2.changes +++ b/libgphoto2.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Sun Aug 15 20:04:51 CEST 2010 - meissner@suse.de + +- Updated to 2.4.10 release + - lots of PTP and EOS related fixes + - shortcuts in UDEV rules + - new jl2005c driver for small cameras + - translation updates + ------------------------------------------------------------------- Mon Jun 21 16:43:41 CEST 2010 - meissner@suse.de diff --git a/libgphoto2.spec b/libgphoto2.spec index 2ebb300..acd539c 100644 --- a/libgphoto2.spec +++ b/libgphoto2.spec @@ -30,11 +30,10 @@ Obsoletes: libgphoto2-64bit License: LGPLv2.1+ Group: Hardware/Camera Summary: A Digital Camera Library -Version: 2.4.9 +Version: 2.4.10 Release: 3 Source0: libgphoto2-%{version}.tar.bz2 Source1: baselibs.conf -Patch0: libgphoto24-branch.patch Patch1: libgphoto2-4096files.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires: %{name}-lang = %{version} @@ -70,7 +69,6 @@ These are its development libraries and headers. %lang_package %prep %setup -q -%patch0 -p1 %patch1 -p1 %build diff --git a/libgphoto24-branch.patch b/libgphoto24-branch.patch deleted file mode 100644 index 8f24185..0000000 --- a/libgphoto24-branch.patch +++ /dev/null @@ -1,416 +0,0 @@ -diff -ru libgphoto2-2.4.9/camlibs/ptp2/config.c libgphoto2//camlibs/ptp2/config.c ---- libgphoto2-2.4.9/camlibs/ptp2/config.c 2010-04-11 14:17:51.000000000 +0200 -+++ libgphoto2//camlibs/ptp2/config.c 2010-06-17 17:05:11.989020000 +0200 -@@ -510,6 +524,7 @@ - static int - _get_Generic16Table(CONFIG_GET_ARGS, struct deviceproptableu16* tbl, int tblsize) { - int i, j; -+ int isset = FALSE, isset2 = FALSE; - - if (!(dpd->FormFlag & (PTP_DPFF_Enumeration|PTP_DPFF_Range))) { - gp_log (GP_LOG_DEBUG, "ptp/get_generic16", "no enumeration/range in 16bit table code"); -@@ -537,16 +552,16 @@ - return GP_OK; - } - for (i = 0; iFORM.Enum.NumberOfValues; i++) { -- int isset = FALSE; -- - for (j=0;jFORM.Enum.SupportedValue[i].u16) && - ((tbl[j].vendor_id == 0) || - (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) - ) { - gp_widget_add_choice (*widget, _(tbl[j].label)); -- if (tbl[j].value == dpd->CurrentValue.u16) -+ if (tbl[j].value == dpd->CurrentValue.u16) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, _(tbl[j].label)); -+ } - isset = TRUE; - break; - } -@@ -555,8 +570,10 @@ - char buf[200]; - sprintf(buf, _("Unknown value %04x"), dpd->FORM.Enum.SupportedValue[i].u16); - gp_widget_add_choice (*widget, buf); -- if (dpd->FORM.Enum.SupportedValue[i].u16 == dpd->CurrentValue.u16) -+ if (dpd->FORM.Enum.SupportedValue[i].u16 == dpd->CurrentValue.u16) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, buf); -+ } - } - } - } -@@ -565,16 +582,16 @@ - i<=dpd->FORM.Range.MaximumValue.u16; - i+= dpd->FORM.Range.StepSize.u16 - ) { -- int isset = FALSE; -- - for (j=0;jpl->params.deviceinfo.VendorExtensionID)) - ) { - gp_widget_add_choice (*widget, _(tbl[j].label)); -- if (i == dpd->CurrentValue.u16) -+ if (i == dpd->CurrentValue.u16) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, _(tbl[j].label)); -+ } - isset = TRUE; - break; - } -@@ -583,11 +600,19 @@ - char buf[200]; - sprintf(buf, _("Unknown value %04d"), i); - gp_widget_add_choice (*widget, buf); -- if (i == dpd->CurrentValue.u16) -+ if (i == dpd->CurrentValue.u16) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, buf); -+ } - } - } - } -+ if (!isset2) { -+ char buf[200]; -+ sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.u16); -+ gp_widget_add_choice (*widget, buf); -+ gp_widget_set_value (*widget, buf); -+ } - return (GP_OK); - } - -@@ -634,6 +659,7 @@ - static int - _get_GenericI16Table(CONFIG_GET_ARGS, struct deviceproptablei16* tbl, int tblsize) { - int i, j; -+ int isset = FALSE, isset2 = FALSE; - - if (!(dpd->FormFlag & (PTP_DPFF_Range|PTP_DPFF_Enumeration))) { - gp_log (GP_LOG_DEBUG, "ptp/get_generici16", "no enumeration/range in 16bit table code"); -@@ -661,16 +687,16 @@ - return GP_OK; - } - for (i = 0; iFORM.Enum.NumberOfValues; i++) { -- int isset = FALSE; -- - for (j=0;jFORM.Enum.SupportedValue[i].i16) && - ((tbl[j].vendor_id == 0) || - (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) - ) { - gp_widget_add_choice (*widget, _(tbl[j].label)); -- if (tbl[j].value == dpd->CurrentValue.i16) -+ if (tbl[j].value == dpd->CurrentValue.i16) { - gp_widget_set_value (*widget, _(tbl[j].label)); -+ isset2 = TRUE; -+ } - isset = TRUE; - break; - } -@@ -694,8 +720,10 @@ - (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) - ) { - gp_widget_add_choice (*widget, _(tbl[j].label)); -- if (i == dpd->CurrentValue.i16) -+ if (i == dpd->CurrentValue.i16) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, _(tbl[j].label)); -+ } - isset = TRUE; - break; - } -@@ -704,11 +732,19 @@ - char buf[200]; - sprintf(buf, _("Unknown value %04d"), i); - gp_widget_add_choice (*widget, buf); -- if (i == dpd->CurrentValue.i16) -+ if (i == dpd->CurrentValue.i16) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, buf); -+ } - } - } - } -+ if (!isset2) { -+ char buf[200]; -+ sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.i16); -+ gp_widget_add_choice (*widget, buf); -+ gp_widget_set_value (*widget, buf); -+ } - return (GP_OK); - } - -@@ -755,6 +791,7 @@ - static int - _get_Generic8Table(CONFIG_GET_ARGS, struct deviceproptableu8* tbl, int tblsize) { - int i, j; -+ int isset = FALSE, isset2 = FALSE; - - if (dpd->FormFlag & PTP_DPFF_Enumeration) { - if (dpd->DataType != PTP_DTC_UINT8) -@@ -762,16 +799,16 @@ - gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); - gp_widget_set_name (*widget, menu->name); - for (i = 0; iFORM.Enum.NumberOfValues; i++) { -- int isset = FALSE; -- - for (j=0;jFORM.Enum.SupportedValue[i].u8) && - ((tbl[j].vendor_id == 0) || - (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) - ) { - gp_widget_add_choice (*widget, _(tbl[j].label)); -- if (tbl[j].value == dpd->CurrentValue.u8) -+ if (tbl[j].value == dpd->CurrentValue.u8) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, _(tbl[j].label)); -+ } - isset = TRUE; - break; - } -@@ -784,6 +821,12 @@ - gp_widget_set_value (*widget, buf); - } - } -+ if (!isset2) { -+ char buf[200]; -+ sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.u8); -+ gp_widget_add_choice (*widget, buf); -+ gp_widget_set_value (*widget, buf); -+ } - return (GP_OK); - } - if (dpd->FormFlag & PTP_DPFF_Range) { -@@ -795,16 +838,16 @@ - i <= dpd->FORM.Range.MaximumValue.u8; - i+= dpd->FORM.Range.StepSize.u8 - ) { -- int isset = FALSE; -- - for (j=0;jpl->params.deviceinfo.VendorExtensionID)) - ) { - gp_widget_add_choice (*widget, _(tbl[j].label)); -- if (tbl[j].value == dpd->CurrentValue.u8) -+ if (tbl[j].value == dpd->CurrentValue.u8) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, _(tbl[j].label)); -+ } - isset = TRUE; - break; - } -@@ -813,10 +856,18 @@ - char buf[200]; - sprintf(buf, _("Unknown value %04x"), i); - gp_widget_add_choice (*widget, buf); -- if (i == dpd->CurrentValue.u8) -+ if (i == dpd->CurrentValue.u8) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, buf); -+ } - } - } -+ if (!isset2) { -+ char buf[200]; -+ sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.u8); -+ gp_widget_add_choice (*widget, buf); -+ gp_widget_set_value (*widget, buf); -+ } - return (GP_OK); - } - return (GP_ERROR); -@@ -3367,7 +3418,12 @@ - return GP_ERROR; - } - /* Get the next set of event data */ -- return _ptp_check_eos_events (params); -+ ret = _ptp_check_eos_events (params); -+ if (ret != PTP_RC_OK) { -+ gp_log (GP_LOG_ERROR,"ptp2/canon_eos_afdrive", "getevent failed!"); -+ return translate_ptp_result (ret); -+ } -+ return GP_OK; - } - - static int -@@ -3450,7 +3506,92 @@ - return GP_ERROR; - } - /* Get the next set of event data */ -- return _ptp_check_eos_events (params); -+ ret = _ptp_check_eos_events (params); -+ if (ret != PTP_RC_OK) { -+ gp_log (GP_LOG_ERROR,"ptp2/canon_eos_mfdrive", "getevent failed!"); -+ return translate_ptp_result (ret); -+ } -+ return GP_OK; -+} -+ -+ -+static int -+_get_Canon_EOS_Zoom(CONFIG_GET_ARGS) { -+ gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); -+ gp_widget_set_name (*widget, menu->name); -+ -+ gp_widget_set_value (*widget, "0"); -+ return (GP_OK); -+} -+ -+/* Only 1 and 5 seem to work on the EOS 1000D */ -+static int -+_put_Canon_EOS_Zoom(CONFIG_PUT_ARGS) { -+ uint16_t ret; -+ const char* val; -+ unsigned int xval; -+ PTPParams *params = &(camera->pl->params); -+ -+ if (!ptp_operation_issupported(params, PTP_OC_CANON_EOS_Zoom)) -+ return (GP_ERROR_NOT_SUPPORTED); -+ -+ gp_widget_get_value(widget, &val); -+ if (!sscanf (val, "%d", &xval)) { -+ gp_log (GP_LOG_DEBUG, "ptp2/canon_eos_zoom", "Could not parse %s", val); -+ return GP_ERROR; -+ } -+ ret = ptp_canon_eos_zoom (params, xval); -+ if (ret != PTP_RC_OK) { -+ gp_log (GP_LOG_DEBUG, "ptp2/canon_eos_zoom", "Canon zoom 0x%x failed: 0x%x", xval, ret); -+ return GP_ERROR; -+ } -+ /* Get the next set of event data */ -+ ret = _ptp_check_eos_events (params); -+ if (ret != PTP_RC_OK) { -+ gp_log (GP_LOG_ERROR,"ptp2/canon_eos_zoom", "getevent failed!"); -+ return translate_ptp_result (ret); -+ } -+ return GP_OK; -+} -+ -+/* EOS Zoom. Works in approx 64 pixel steps on the EOS 1000D, but just accept -+ * all kind of pairs */ -+static int -+_get_Canon_EOS_ZoomPosition(CONFIG_GET_ARGS) { -+ gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); -+ gp_widget_set_name (*widget, menu->name); -+ -+ gp_widget_set_value (*widget, "0,0"); -+ return (GP_OK); -+} -+ -+static int -+_put_Canon_EOS_ZoomPosition(CONFIG_PUT_ARGS) { -+ uint16_t ret; -+ const char* val; -+ unsigned int x,y; -+ PTPParams *params = &(camera->pl->params); -+ -+ if (!ptp_operation_issupported(params, PTP_OC_CANON_EOS_ZoomPosition)) -+ return (GP_ERROR_NOT_SUPPORTED); -+ -+ gp_widget_get_value(widget, &val); -+ if (2!=sscanf (val, "%d,%d", &x,&y)) { -+ gp_log (GP_LOG_DEBUG, "ptp2/canon_eos_zoomposition", "Could not parse %s (expected 'x,y')", val); -+ return GP_ERROR; -+ } -+ ret = ptp_canon_eos_zoomposition (params, x,y); -+ if (ret != PTP_RC_OK) { -+ gp_log (GP_LOG_DEBUG, "ptp2/canon_eos_zoomposition", "Canon zoom position %d,%d failed: 0x%x", x, y, ret); -+ return GP_ERROR; -+ } -+ /* Get the next set of event data */ -+ ret = _ptp_check_eos_events (params); -+ if (ret != PTP_RC_OK) { -+ gp_log (GP_LOG_ERROR,"ptp2/canon_eos_zoomposition", "getevent failed!"); -+ return translate_ptp_result (ret); -+ } -+ return GP_OK; - } - - -@@ -4241,6 +4382,8 @@ - { N_("Drive Canon DSLR Autofocus"), "autofocusdrive", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_DoAf, _get_Canon_EOS_AFDrive, _put_Canon_EOS_AFDrive }, - { N_("Drive Nikon DSLR Manual focus"), "manualfocusdrive", 0, PTP_VENDOR_NIKON, PTP_OC_NIKON_MfDrive, _get_Nikon_MFDrive, _put_Nikon_MFDrive }, - { N_("Drive Canon DSLR Manual focus"), "manualfocusdrive", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_DriveLens, _get_Canon_EOS_MFDrive, _put_Canon_EOS_MFDrive }, -+ { N_("Canon EOS Zoom "), "eoszoom", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_Zoom, _get_Canon_EOS_Zoom, _put_Canon_EOS_Zoom}, -+ { N_("Canon EOS Zoom Position"), "eoszoomposition", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_ZoomPosition, _get_Canon_EOS_ZoomPosition, _put_Canon_EOS_ZoomPosition}, - { 0,0,0,0,0,0,0 }, - }; - -diff -ru libgphoto2-2.4.9/camlibs/ptp2/library.c libgphoto2//camlibs/ptp2/library.c ---- libgphoto2-2.4.9/camlibs/ptp2/library.c 2010-04-11 14:13:03.000000000 +0200 -+++ libgphoto2//camlibs/ptp2/library.c 2010-06-17 17:05:11.958020000 +0200 -@@ -2031,7 +2031,8 @@ - /* delete last / or we get confused later. */ - path->folder[ strlen(path->folder)-1 ] = '\0'; - gp_filesystem_append (camera->fs, path->folder, path->name, context); -- continue; /* for RAW+JPG mode capture, we just return the last image for now. */ -+ break;/* for RAW+JPG mode capture, we just return the first image for now, and -+ * let wait_for_event get the rest. */ - } - if (newobject) - break; -@@ -2466,6 +2467,8 @@ - - init_ptp_fs (camera, context); - -+ *eventtype = GP_EVENT_TIMEOUT; -+ *eventdata = NULL; - gettimeofday (&event_start,NULL); - if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && - ptp_operation_issupported(params, PTP_OC_CANON_EOS_RemoteRelease) -@@ -2474,7 +2477,6 @@ - - if (!params->eos_captureenabled) - camera_prepare_capture (camera, context); -- *eventtype = GP_EVENT_TIMEOUT; - while (1) { - PTPCanon_changes_entry entry; - -@@ -2589,10 +2591,8 @@ - int isevent; - - while (1) { -- if (_timeout_passed(&event_start, timeout)) { -- *eventtype = GP_EVENT_TIMEOUT; -+ if (_timeout_passed(&event_start, timeout)) - break; -- } - gp_context_idle (context); - ret = ptp_canon_checkevent (params,&event,&isevent); - if (ret!=PTP_RC_OK) -@@ -2609,7 +2609,6 @@ - ) { - uint32_t newobject, hasc101; - -- *eventtype = GP_EVENT_TIMEOUT; - while (1) { - int evtcnt; - PTPContainer *nevent = NULL; -diff -ru libgphoto2-2.4.9/camlibs/ptp2/usb.c libgphoto2//camlibs/ptp2/usb.c ---- libgphoto2-2.4.9/camlibs/ptp2/usb.c 2009-12-15 09:28:43.000000000 +0100 -+++ libgphoto2//camlibs/ptp2/usb.c 2010-06-17 17:05:12.019025000 +0200 -@@ -506,6 +506,7 @@ - gp_port_get_timeout (camera->port, &timeout); - gp_port_set_timeout (camera->port, PTP2_FAST_TIMEOUT); - result = gp_port_check_int (camera->port, (char*)&usbevent, sizeof(usbevent)); -+ if (result <= 0) result = gp_port_check_int (camera->port, (char*)&usbevent, sizeof(usbevent)); - gp_port_set_timeout (camera->port, timeout); - break; - default: -diff -ru libgphoto2-2.4.9/libgphoto2/gphoto2-camera.c libgphoto2//libgphoto2/gphoto2-camera.c ---- libgphoto2-2.4.9/libgphoto2/gphoto2-camera.c 2010-04-11 14:30:03.000000000 +0200 -+++ libgphoto2//libgphoto2/gphoto2-camera.c 2010-06-17 17:05:13.489925000 +0200 -@@ -1035,8 +1035,6 @@ - CHECK_INIT (camera, context); - - if (!camera->functions->wait_for_event) { -- gp_context_error (context, _("This camera does " -- "not support event handling.")); - CAMERA_UNUSED (camera, context); - return (GP_ERROR_NOT_SUPPORTED); - } From f886ce920c7d7f05df255a553144f8428289aed7f47b74503504bcd1932af5e0 Mon Sep 17 00:00:00 2001 From: OBS User autobuild Date: Mon, 23 Aug 2010 13:29:19 +0000 Subject: [PATCH 2/3] Accepting request 45617 from graphics checked in (request 45617) OBS-URL: https://build.opensuse.org/request/show/45617 OBS-URL: https://build.opensuse.org/package/show/graphics/libgphoto2?expand=0&rev=39 --- libgphoto2-2.4.10.tar.bz2 | 3 - libgphoto2-2.4.9.tar.bz2 | 3 + libgphoto2.changes | 9 - libgphoto2.spec | 4 +- libgphoto24-branch.patch | 416 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 422 insertions(+), 13 deletions(-) delete mode 100644 libgphoto2-2.4.10.tar.bz2 create mode 100644 libgphoto2-2.4.9.tar.bz2 create mode 100644 libgphoto24-branch.patch diff --git a/libgphoto2-2.4.10.tar.bz2 b/libgphoto2-2.4.10.tar.bz2 deleted file mode 100644 index 6fe038c..0000000 --- a/libgphoto2-2.4.10.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8bb28232c246c19465724dbca2f511dd56feaee3cdb018589e8370c46f1cf1cd -size 5699257 diff --git a/libgphoto2-2.4.9.tar.bz2 b/libgphoto2-2.4.9.tar.bz2 new file mode 100644 index 0000000..4c725d5 --- /dev/null +++ b/libgphoto2-2.4.9.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bd80a70db64defcc9f50354326175eec1d070c2cc3dfbcd7ddd1ef9bb4f7af0 +size 5642063 diff --git a/libgphoto2.changes b/libgphoto2.changes index d7b14f7..e7ece22 100644 --- a/libgphoto2.changes +++ b/libgphoto2.changes @@ -1,12 +1,3 @@ -------------------------------------------------------------------- -Sun Aug 15 20:04:51 CEST 2010 - meissner@suse.de - -- Updated to 2.4.10 release - - lots of PTP and EOS related fixes - - shortcuts in UDEV rules - - new jl2005c driver for small cameras - - translation updates - ------------------------------------------------------------------- Mon Jun 21 16:43:41 CEST 2010 - meissner@suse.de diff --git a/libgphoto2.spec b/libgphoto2.spec index acd539c..2ebb300 100644 --- a/libgphoto2.spec +++ b/libgphoto2.spec @@ -30,10 +30,11 @@ Obsoletes: libgphoto2-64bit License: LGPLv2.1+ Group: Hardware/Camera Summary: A Digital Camera Library -Version: 2.4.10 +Version: 2.4.9 Release: 3 Source0: libgphoto2-%{version}.tar.bz2 Source1: baselibs.conf +Patch0: libgphoto24-branch.patch Patch1: libgphoto2-4096files.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires: %{name}-lang = %{version} @@ -69,6 +70,7 @@ These are its development libraries and headers. %lang_package %prep %setup -q +%patch0 -p1 %patch1 -p1 %build diff --git a/libgphoto24-branch.patch b/libgphoto24-branch.patch new file mode 100644 index 0000000..8f24185 --- /dev/null +++ b/libgphoto24-branch.patch @@ -0,0 +1,416 @@ +diff -ru libgphoto2-2.4.9/camlibs/ptp2/config.c libgphoto2//camlibs/ptp2/config.c +--- libgphoto2-2.4.9/camlibs/ptp2/config.c 2010-04-11 14:17:51.000000000 +0200 ++++ libgphoto2//camlibs/ptp2/config.c 2010-06-17 17:05:11.989020000 +0200 +@@ -510,6 +524,7 @@ + static int + _get_Generic16Table(CONFIG_GET_ARGS, struct deviceproptableu16* tbl, int tblsize) { + int i, j; ++ int isset = FALSE, isset2 = FALSE; + + if (!(dpd->FormFlag & (PTP_DPFF_Enumeration|PTP_DPFF_Range))) { + gp_log (GP_LOG_DEBUG, "ptp/get_generic16", "no enumeration/range in 16bit table code"); +@@ -537,16 +552,16 @@ + return GP_OK; + } + for (i = 0; iFORM.Enum.NumberOfValues; i++) { +- int isset = FALSE; +- + for (j=0;jFORM.Enum.SupportedValue[i].u16) && + ((tbl[j].vendor_id == 0) || + (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) + ) { + gp_widget_add_choice (*widget, _(tbl[j].label)); +- if (tbl[j].value == dpd->CurrentValue.u16) ++ if (tbl[j].value == dpd->CurrentValue.u16) { ++ isset2 = TRUE; + gp_widget_set_value (*widget, _(tbl[j].label)); ++ } + isset = TRUE; + break; + } +@@ -555,8 +570,10 @@ + char buf[200]; + sprintf(buf, _("Unknown value %04x"), dpd->FORM.Enum.SupportedValue[i].u16); + gp_widget_add_choice (*widget, buf); +- if (dpd->FORM.Enum.SupportedValue[i].u16 == dpd->CurrentValue.u16) ++ if (dpd->FORM.Enum.SupportedValue[i].u16 == dpd->CurrentValue.u16) { ++ isset2 = TRUE; + gp_widget_set_value (*widget, buf); ++ } + } + } + } +@@ -565,16 +582,16 @@ + i<=dpd->FORM.Range.MaximumValue.u16; + i+= dpd->FORM.Range.StepSize.u16 + ) { +- int isset = FALSE; +- + for (j=0;jpl->params.deviceinfo.VendorExtensionID)) + ) { + gp_widget_add_choice (*widget, _(tbl[j].label)); +- if (i == dpd->CurrentValue.u16) ++ if (i == dpd->CurrentValue.u16) { ++ isset2 = TRUE; + gp_widget_set_value (*widget, _(tbl[j].label)); ++ } + isset = TRUE; + break; + } +@@ -583,11 +600,19 @@ + char buf[200]; + sprintf(buf, _("Unknown value %04d"), i); + gp_widget_add_choice (*widget, buf); +- if (i == dpd->CurrentValue.u16) ++ if (i == dpd->CurrentValue.u16) { ++ isset2 = TRUE; + gp_widget_set_value (*widget, buf); ++ } + } + } + } ++ if (!isset2) { ++ char buf[200]; ++ sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.u16); ++ gp_widget_add_choice (*widget, buf); ++ gp_widget_set_value (*widget, buf); ++ } + return (GP_OK); + } + +@@ -634,6 +659,7 @@ + static int + _get_GenericI16Table(CONFIG_GET_ARGS, struct deviceproptablei16* tbl, int tblsize) { + int i, j; ++ int isset = FALSE, isset2 = FALSE; + + if (!(dpd->FormFlag & (PTP_DPFF_Range|PTP_DPFF_Enumeration))) { + gp_log (GP_LOG_DEBUG, "ptp/get_generici16", "no enumeration/range in 16bit table code"); +@@ -661,16 +687,16 @@ + return GP_OK; + } + for (i = 0; iFORM.Enum.NumberOfValues; i++) { +- int isset = FALSE; +- + for (j=0;jFORM.Enum.SupportedValue[i].i16) && + ((tbl[j].vendor_id == 0) || + (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) + ) { + gp_widget_add_choice (*widget, _(tbl[j].label)); +- if (tbl[j].value == dpd->CurrentValue.i16) ++ if (tbl[j].value == dpd->CurrentValue.i16) { + gp_widget_set_value (*widget, _(tbl[j].label)); ++ isset2 = TRUE; ++ } + isset = TRUE; + break; + } +@@ -694,8 +720,10 @@ + (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) + ) { + gp_widget_add_choice (*widget, _(tbl[j].label)); +- if (i == dpd->CurrentValue.i16) ++ if (i == dpd->CurrentValue.i16) { ++ isset2 = TRUE; + gp_widget_set_value (*widget, _(tbl[j].label)); ++ } + isset = TRUE; + break; + } +@@ -704,11 +732,19 @@ + char buf[200]; + sprintf(buf, _("Unknown value %04d"), i); + gp_widget_add_choice (*widget, buf); +- if (i == dpd->CurrentValue.i16) ++ if (i == dpd->CurrentValue.i16) { ++ isset2 = TRUE; + gp_widget_set_value (*widget, buf); ++ } + } + } + } ++ if (!isset2) { ++ char buf[200]; ++ sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.i16); ++ gp_widget_add_choice (*widget, buf); ++ gp_widget_set_value (*widget, buf); ++ } + return (GP_OK); + } + +@@ -755,6 +791,7 @@ + static int + _get_Generic8Table(CONFIG_GET_ARGS, struct deviceproptableu8* tbl, int tblsize) { + int i, j; ++ int isset = FALSE, isset2 = FALSE; + + if (dpd->FormFlag & PTP_DPFF_Enumeration) { + if (dpd->DataType != PTP_DTC_UINT8) +@@ -762,16 +799,16 @@ + gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); + gp_widget_set_name (*widget, menu->name); + for (i = 0; iFORM.Enum.NumberOfValues; i++) { +- int isset = FALSE; +- + for (j=0;jFORM.Enum.SupportedValue[i].u8) && + ((tbl[j].vendor_id == 0) || + (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) + ) { + gp_widget_add_choice (*widget, _(tbl[j].label)); +- if (tbl[j].value == dpd->CurrentValue.u8) ++ if (tbl[j].value == dpd->CurrentValue.u8) { ++ isset2 = TRUE; + gp_widget_set_value (*widget, _(tbl[j].label)); ++ } + isset = TRUE; + break; + } +@@ -784,6 +821,12 @@ + gp_widget_set_value (*widget, buf); + } + } ++ if (!isset2) { ++ char buf[200]; ++ sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.u8); ++ gp_widget_add_choice (*widget, buf); ++ gp_widget_set_value (*widget, buf); ++ } + return (GP_OK); + } + if (dpd->FormFlag & PTP_DPFF_Range) { +@@ -795,16 +838,16 @@ + i <= dpd->FORM.Range.MaximumValue.u8; + i+= dpd->FORM.Range.StepSize.u8 + ) { +- int isset = FALSE; +- + for (j=0;jpl->params.deviceinfo.VendorExtensionID)) + ) { + gp_widget_add_choice (*widget, _(tbl[j].label)); +- if (tbl[j].value == dpd->CurrentValue.u8) ++ if (tbl[j].value == dpd->CurrentValue.u8) { ++ isset2 = TRUE; + gp_widget_set_value (*widget, _(tbl[j].label)); ++ } + isset = TRUE; + break; + } +@@ -813,10 +856,18 @@ + char buf[200]; + sprintf(buf, _("Unknown value %04x"), i); + gp_widget_add_choice (*widget, buf); +- if (i == dpd->CurrentValue.u8) ++ if (i == dpd->CurrentValue.u8) { ++ isset2 = TRUE; + gp_widget_set_value (*widget, buf); ++ } + } + } ++ if (!isset2) { ++ char buf[200]; ++ sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.u8); ++ gp_widget_add_choice (*widget, buf); ++ gp_widget_set_value (*widget, buf); ++ } + return (GP_OK); + } + return (GP_ERROR); +@@ -3367,7 +3418,12 @@ + return GP_ERROR; + } + /* Get the next set of event data */ +- return _ptp_check_eos_events (params); ++ ret = _ptp_check_eos_events (params); ++ if (ret != PTP_RC_OK) { ++ gp_log (GP_LOG_ERROR,"ptp2/canon_eos_afdrive", "getevent failed!"); ++ return translate_ptp_result (ret); ++ } ++ return GP_OK; + } + + static int +@@ -3450,7 +3506,92 @@ + return GP_ERROR; + } + /* Get the next set of event data */ +- return _ptp_check_eos_events (params); ++ ret = _ptp_check_eos_events (params); ++ if (ret != PTP_RC_OK) { ++ gp_log (GP_LOG_ERROR,"ptp2/canon_eos_mfdrive", "getevent failed!"); ++ return translate_ptp_result (ret); ++ } ++ return GP_OK; ++} ++ ++ ++static int ++_get_Canon_EOS_Zoom(CONFIG_GET_ARGS) { ++ gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); ++ gp_widget_set_name (*widget, menu->name); ++ ++ gp_widget_set_value (*widget, "0"); ++ return (GP_OK); ++} ++ ++/* Only 1 and 5 seem to work on the EOS 1000D */ ++static int ++_put_Canon_EOS_Zoom(CONFIG_PUT_ARGS) { ++ uint16_t ret; ++ const char* val; ++ unsigned int xval; ++ PTPParams *params = &(camera->pl->params); ++ ++ if (!ptp_operation_issupported(params, PTP_OC_CANON_EOS_Zoom)) ++ return (GP_ERROR_NOT_SUPPORTED); ++ ++ gp_widget_get_value(widget, &val); ++ if (!sscanf (val, "%d", &xval)) { ++ gp_log (GP_LOG_DEBUG, "ptp2/canon_eos_zoom", "Could not parse %s", val); ++ return GP_ERROR; ++ } ++ ret = ptp_canon_eos_zoom (params, xval); ++ if (ret != PTP_RC_OK) { ++ gp_log (GP_LOG_DEBUG, "ptp2/canon_eos_zoom", "Canon zoom 0x%x failed: 0x%x", xval, ret); ++ return GP_ERROR; ++ } ++ /* Get the next set of event data */ ++ ret = _ptp_check_eos_events (params); ++ if (ret != PTP_RC_OK) { ++ gp_log (GP_LOG_ERROR,"ptp2/canon_eos_zoom", "getevent failed!"); ++ return translate_ptp_result (ret); ++ } ++ return GP_OK; ++} ++ ++/* EOS Zoom. Works in approx 64 pixel steps on the EOS 1000D, but just accept ++ * all kind of pairs */ ++static int ++_get_Canon_EOS_ZoomPosition(CONFIG_GET_ARGS) { ++ gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); ++ gp_widget_set_name (*widget, menu->name); ++ ++ gp_widget_set_value (*widget, "0,0"); ++ return (GP_OK); ++} ++ ++static int ++_put_Canon_EOS_ZoomPosition(CONFIG_PUT_ARGS) { ++ uint16_t ret; ++ const char* val; ++ unsigned int x,y; ++ PTPParams *params = &(camera->pl->params); ++ ++ if (!ptp_operation_issupported(params, PTP_OC_CANON_EOS_ZoomPosition)) ++ return (GP_ERROR_NOT_SUPPORTED); ++ ++ gp_widget_get_value(widget, &val); ++ if (2!=sscanf (val, "%d,%d", &x,&y)) { ++ gp_log (GP_LOG_DEBUG, "ptp2/canon_eos_zoomposition", "Could not parse %s (expected 'x,y')", val); ++ return GP_ERROR; ++ } ++ ret = ptp_canon_eos_zoomposition (params, x,y); ++ if (ret != PTP_RC_OK) { ++ gp_log (GP_LOG_DEBUG, "ptp2/canon_eos_zoomposition", "Canon zoom position %d,%d failed: 0x%x", x, y, ret); ++ return GP_ERROR; ++ } ++ /* Get the next set of event data */ ++ ret = _ptp_check_eos_events (params); ++ if (ret != PTP_RC_OK) { ++ gp_log (GP_LOG_ERROR,"ptp2/canon_eos_zoomposition", "getevent failed!"); ++ return translate_ptp_result (ret); ++ } ++ return GP_OK; + } + + +@@ -4241,6 +4382,8 @@ + { N_("Drive Canon DSLR Autofocus"), "autofocusdrive", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_DoAf, _get_Canon_EOS_AFDrive, _put_Canon_EOS_AFDrive }, + { N_("Drive Nikon DSLR Manual focus"), "manualfocusdrive", 0, PTP_VENDOR_NIKON, PTP_OC_NIKON_MfDrive, _get_Nikon_MFDrive, _put_Nikon_MFDrive }, + { N_("Drive Canon DSLR Manual focus"), "manualfocusdrive", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_DriveLens, _get_Canon_EOS_MFDrive, _put_Canon_EOS_MFDrive }, ++ { N_("Canon EOS Zoom "), "eoszoom", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_Zoom, _get_Canon_EOS_Zoom, _put_Canon_EOS_Zoom}, ++ { N_("Canon EOS Zoom Position"), "eoszoomposition", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_ZoomPosition, _get_Canon_EOS_ZoomPosition, _put_Canon_EOS_ZoomPosition}, + { 0,0,0,0,0,0,0 }, + }; + +diff -ru libgphoto2-2.4.9/camlibs/ptp2/library.c libgphoto2//camlibs/ptp2/library.c +--- libgphoto2-2.4.9/camlibs/ptp2/library.c 2010-04-11 14:13:03.000000000 +0200 ++++ libgphoto2//camlibs/ptp2/library.c 2010-06-17 17:05:11.958020000 +0200 +@@ -2031,7 +2031,8 @@ + /* delete last / or we get confused later. */ + path->folder[ strlen(path->folder)-1 ] = '\0'; + gp_filesystem_append (camera->fs, path->folder, path->name, context); +- continue; /* for RAW+JPG mode capture, we just return the last image for now. */ ++ break;/* for RAW+JPG mode capture, we just return the first image for now, and ++ * let wait_for_event get the rest. */ + } + if (newobject) + break; +@@ -2466,6 +2467,8 @@ + + init_ptp_fs (camera, context); + ++ *eventtype = GP_EVENT_TIMEOUT; ++ *eventdata = NULL; + gettimeofday (&event_start,NULL); + if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && + ptp_operation_issupported(params, PTP_OC_CANON_EOS_RemoteRelease) +@@ -2474,7 +2477,6 @@ + + if (!params->eos_captureenabled) + camera_prepare_capture (camera, context); +- *eventtype = GP_EVENT_TIMEOUT; + while (1) { + PTPCanon_changes_entry entry; + +@@ -2589,10 +2591,8 @@ + int isevent; + + while (1) { +- if (_timeout_passed(&event_start, timeout)) { +- *eventtype = GP_EVENT_TIMEOUT; ++ if (_timeout_passed(&event_start, timeout)) + break; +- } + gp_context_idle (context); + ret = ptp_canon_checkevent (params,&event,&isevent); + if (ret!=PTP_RC_OK) +@@ -2609,7 +2609,6 @@ + ) { + uint32_t newobject, hasc101; + +- *eventtype = GP_EVENT_TIMEOUT; + while (1) { + int evtcnt; + PTPContainer *nevent = NULL; +diff -ru libgphoto2-2.4.9/camlibs/ptp2/usb.c libgphoto2//camlibs/ptp2/usb.c +--- libgphoto2-2.4.9/camlibs/ptp2/usb.c 2009-12-15 09:28:43.000000000 +0100 ++++ libgphoto2//camlibs/ptp2/usb.c 2010-06-17 17:05:12.019025000 +0200 +@@ -506,6 +506,7 @@ + gp_port_get_timeout (camera->port, &timeout); + gp_port_set_timeout (camera->port, PTP2_FAST_TIMEOUT); + result = gp_port_check_int (camera->port, (char*)&usbevent, sizeof(usbevent)); ++ if (result <= 0) result = gp_port_check_int (camera->port, (char*)&usbevent, sizeof(usbevent)); + gp_port_set_timeout (camera->port, timeout); + break; + default: +diff -ru libgphoto2-2.4.9/libgphoto2/gphoto2-camera.c libgphoto2//libgphoto2/gphoto2-camera.c +--- libgphoto2-2.4.9/libgphoto2/gphoto2-camera.c 2010-04-11 14:30:03.000000000 +0200 ++++ libgphoto2//libgphoto2/gphoto2-camera.c 2010-06-17 17:05:13.489925000 +0200 +@@ -1035,8 +1035,6 @@ + CHECK_INIT (camera, context); + + if (!camera->functions->wait_for_event) { +- gp_context_error (context, _("This camera does " +- "not support event handling.")); + CAMERA_UNUSED (camera, context); + return (GP_ERROR_NOT_SUPPORTED); + } From 383762d8109f903e4f2bffff60c25294065910fec04c137c403de3a37c1a51dd Mon Sep 17 00:00:00 2001 From: OBS User buildservice-autocommit Date: Mon, 23 Aug 2010 13:29:20 +0000 Subject: [PATCH 3/3] Updating link to change in openSUSE:Factory/libgphoto2 revision 55.0 OBS-URL: https://build.opensuse.org/package/show/graphics/libgphoto2?expand=0&rev=2982913cb9fb150b3b2269e1658658a9 --- libgphoto2-2.4.10.tar.bz2 | 3 + libgphoto2-2.4.9.tar.bz2 | 3 - libgphoto2.changes | 9 + libgphoto2.spec | 8 +- libgphoto24-branch.patch | 416 -------------------------------------- 5 files changed, 15 insertions(+), 424 deletions(-) create mode 100644 libgphoto2-2.4.10.tar.bz2 delete mode 100644 libgphoto2-2.4.9.tar.bz2 delete mode 100644 libgphoto24-branch.patch diff --git a/libgphoto2-2.4.10.tar.bz2 b/libgphoto2-2.4.10.tar.bz2 new file mode 100644 index 0000000..6fe038c --- /dev/null +++ b/libgphoto2-2.4.10.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bb28232c246c19465724dbca2f511dd56feaee3cdb018589e8370c46f1cf1cd +size 5699257 diff --git a/libgphoto2-2.4.9.tar.bz2 b/libgphoto2-2.4.9.tar.bz2 deleted file mode 100644 index 4c725d5..0000000 --- a/libgphoto2-2.4.9.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8bd80a70db64defcc9f50354326175eec1d070c2cc3dfbcd7ddd1ef9bb4f7af0 -size 5642063 diff --git a/libgphoto2.changes b/libgphoto2.changes index e7ece22..d7b14f7 100644 --- a/libgphoto2.changes +++ b/libgphoto2.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Sun Aug 15 20:04:51 CEST 2010 - meissner@suse.de + +- Updated to 2.4.10 release + - lots of PTP and EOS related fixes + - shortcuts in UDEV rules + - new jl2005c driver for small cameras + - translation updates + ------------------------------------------------------------------- Mon Jun 21 16:43:41 CEST 2010 - meissner@suse.de diff --git a/libgphoto2.spec b/libgphoto2.spec index 2ebb300..2c14ca5 100644 --- a/libgphoto2.spec +++ b/libgphoto2.spec @@ -1,5 +1,5 @@ # -# spec file for package libgphoto2 (Version 2.4.9) +# spec file for package libgphoto2 (Version 2.4.10) # # Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -30,11 +30,10 @@ Obsoletes: libgphoto2-64bit License: LGPLv2.1+ Group: Hardware/Camera Summary: A Digital Camera Library -Version: 2.4.9 -Release: 3 +Version: 2.4.10 +Release: 1 Source0: libgphoto2-%{version}.tar.bz2 Source1: baselibs.conf -Patch0: libgphoto24-branch.patch Patch1: libgphoto2-4096files.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires: %{name}-lang = %{version} @@ -70,7 +69,6 @@ These are its development libraries and headers. %lang_package %prep %setup -q -%patch0 -p1 %patch1 -p1 %build diff --git a/libgphoto24-branch.patch b/libgphoto24-branch.patch deleted file mode 100644 index 8f24185..0000000 --- a/libgphoto24-branch.patch +++ /dev/null @@ -1,416 +0,0 @@ -diff -ru libgphoto2-2.4.9/camlibs/ptp2/config.c libgphoto2//camlibs/ptp2/config.c ---- libgphoto2-2.4.9/camlibs/ptp2/config.c 2010-04-11 14:17:51.000000000 +0200 -+++ libgphoto2//camlibs/ptp2/config.c 2010-06-17 17:05:11.989020000 +0200 -@@ -510,6 +524,7 @@ - static int - _get_Generic16Table(CONFIG_GET_ARGS, struct deviceproptableu16* tbl, int tblsize) { - int i, j; -+ int isset = FALSE, isset2 = FALSE; - - if (!(dpd->FormFlag & (PTP_DPFF_Enumeration|PTP_DPFF_Range))) { - gp_log (GP_LOG_DEBUG, "ptp/get_generic16", "no enumeration/range in 16bit table code"); -@@ -537,16 +552,16 @@ - return GP_OK; - } - for (i = 0; iFORM.Enum.NumberOfValues; i++) { -- int isset = FALSE; -- - for (j=0;jFORM.Enum.SupportedValue[i].u16) && - ((tbl[j].vendor_id == 0) || - (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) - ) { - gp_widget_add_choice (*widget, _(tbl[j].label)); -- if (tbl[j].value == dpd->CurrentValue.u16) -+ if (tbl[j].value == dpd->CurrentValue.u16) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, _(tbl[j].label)); -+ } - isset = TRUE; - break; - } -@@ -555,8 +570,10 @@ - char buf[200]; - sprintf(buf, _("Unknown value %04x"), dpd->FORM.Enum.SupportedValue[i].u16); - gp_widget_add_choice (*widget, buf); -- if (dpd->FORM.Enum.SupportedValue[i].u16 == dpd->CurrentValue.u16) -+ if (dpd->FORM.Enum.SupportedValue[i].u16 == dpd->CurrentValue.u16) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, buf); -+ } - } - } - } -@@ -565,16 +582,16 @@ - i<=dpd->FORM.Range.MaximumValue.u16; - i+= dpd->FORM.Range.StepSize.u16 - ) { -- int isset = FALSE; -- - for (j=0;jpl->params.deviceinfo.VendorExtensionID)) - ) { - gp_widget_add_choice (*widget, _(tbl[j].label)); -- if (i == dpd->CurrentValue.u16) -+ if (i == dpd->CurrentValue.u16) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, _(tbl[j].label)); -+ } - isset = TRUE; - break; - } -@@ -583,11 +600,19 @@ - char buf[200]; - sprintf(buf, _("Unknown value %04d"), i); - gp_widget_add_choice (*widget, buf); -- if (i == dpd->CurrentValue.u16) -+ if (i == dpd->CurrentValue.u16) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, buf); -+ } - } - } - } -+ if (!isset2) { -+ char buf[200]; -+ sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.u16); -+ gp_widget_add_choice (*widget, buf); -+ gp_widget_set_value (*widget, buf); -+ } - return (GP_OK); - } - -@@ -634,6 +659,7 @@ - static int - _get_GenericI16Table(CONFIG_GET_ARGS, struct deviceproptablei16* tbl, int tblsize) { - int i, j; -+ int isset = FALSE, isset2 = FALSE; - - if (!(dpd->FormFlag & (PTP_DPFF_Range|PTP_DPFF_Enumeration))) { - gp_log (GP_LOG_DEBUG, "ptp/get_generici16", "no enumeration/range in 16bit table code"); -@@ -661,16 +687,16 @@ - return GP_OK; - } - for (i = 0; iFORM.Enum.NumberOfValues; i++) { -- int isset = FALSE; -- - for (j=0;jFORM.Enum.SupportedValue[i].i16) && - ((tbl[j].vendor_id == 0) || - (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) - ) { - gp_widget_add_choice (*widget, _(tbl[j].label)); -- if (tbl[j].value == dpd->CurrentValue.i16) -+ if (tbl[j].value == dpd->CurrentValue.i16) { - gp_widget_set_value (*widget, _(tbl[j].label)); -+ isset2 = TRUE; -+ } - isset = TRUE; - break; - } -@@ -694,8 +720,10 @@ - (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) - ) { - gp_widget_add_choice (*widget, _(tbl[j].label)); -- if (i == dpd->CurrentValue.i16) -+ if (i == dpd->CurrentValue.i16) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, _(tbl[j].label)); -+ } - isset = TRUE; - break; - } -@@ -704,11 +732,19 @@ - char buf[200]; - sprintf(buf, _("Unknown value %04d"), i); - gp_widget_add_choice (*widget, buf); -- if (i == dpd->CurrentValue.i16) -+ if (i == dpd->CurrentValue.i16) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, buf); -+ } - } - } - } -+ if (!isset2) { -+ char buf[200]; -+ sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.i16); -+ gp_widget_add_choice (*widget, buf); -+ gp_widget_set_value (*widget, buf); -+ } - return (GP_OK); - } - -@@ -755,6 +791,7 @@ - static int - _get_Generic8Table(CONFIG_GET_ARGS, struct deviceproptableu8* tbl, int tblsize) { - int i, j; -+ int isset = FALSE, isset2 = FALSE; - - if (dpd->FormFlag & PTP_DPFF_Enumeration) { - if (dpd->DataType != PTP_DTC_UINT8) -@@ -762,16 +799,16 @@ - gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); - gp_widget_set_name (*widget, menu->name); - for (i = 0; iFORM.Enum.NumberOfValues; i++) { -- int isset = FALSE; -- - for (j=0;jFORM.Enum.SupportedValue[i].u8) && - ((tbl[j].vendor_id == 0) || - (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) - ) { - gp_widget_add_choice (*widget, _(tbl[j].label)); -- if (tbl[j].value == dpd->CurrentValue.u8) -+ if (tbl[j].value == dpd->CurrentValue.u8) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, _(tbl[j].label)); -+ } - isset = TRUE; - break; - } -@@ -784,6 +821,12 @@ - gp_widget_set_value (*widget, buf); - } - } -+ if (!isset2) { -+ char buf[200]; -+ sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.u8); -+ gp_widget_add_choice (*widget, buf); -+ gp_widget_set_value (*widget, buf); -+ } - return (GP_OK); - } - if (dpd->FormFlag & PTP_DPFF_Range) { -@@ -795,16 +838,16 @@ - i <= dpd->FORM.Range.MaximumValue.u8; - i+= dpd->FORM.Range.StepSize.u8 - ) { -- int isset = FALSE; -- - for (j=0;jpl->params.deviceinfo.VendorExtensionID)) - ) { - gp_widget_add_choice (*widget, _(tbl[j].label)); -- if (tbl[j].value == dpd->CurrentValue.u8) -+ if (tbl[j].value == dpd->CurrentValue.u8) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, _(tbl[j].label)); -+ } - isset = TRUE; - break; - } -@@ -813,10 +856,18 @@ - char buf[200]; - sprintf(buf, _("Unknown value %04x"), i); - gp_widget_add_choice (*widget, buf); -- if (i == dpd->CurrentValue.u8) -+ if (i == dpd->CurrentValue.u8) { -+ isset2 = TRUE; - gp_widget_set_value (*widget, buf); -+ } - } - } -+ if (!isset2) { -+ char buf[200]; -+ sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.u8); -+ gp_widget_add_choice (*widget, buf); -+ gp_widget_set_value (*widget, buf); -+ } - return (GP_OK); - } - return (GP_ERROR); -@@ -3367,7 +3418,12 @@ - return GP_ERROR; - } - /* Get the next set of event data */ -- return _ptp_check_eos_events (params); -+ ret = _ptp_check_eos_events (params); -+ if (ret != PTP_RC_OK) { -+ gp_log (GP_LOG_ERROR,"ptp2/canon_eos_afdrive", "getevent failed!"); -+ return translate_ptp_result (ret); -+ } -+ return GP_OK; - } - - static int -@@ -3450,7 +3506,92 @@ - return GP_ERROR; - } - /* Get the next set of event data */ -- return _ptp_check_eos_events (params); -+ ret = _ptp_check_eos_events (params); -+ if (ret != PTP_RC_OK) { -+ gp_log (GP_LOG_ERROR,"ptp2/canon_eos_mfdrive", "getevent failed!"); -+ return translate_ptp_result (ret); -+ } -+ return GP_OK; -+} -+ -+ -+static int -+_get_Canon_EOS_Zoom(CONFIG_GET_ARGS) { -+ gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); -+ gp_widget_set_name (*widget, menu->name); -+ -+ gp_widget_set_value (*widget, "0"); -+ return (GP_OK); -+} -+ -+/* Only 1 and 5 seem to work on the EOS 1000D */ -+static int -+_put_Canon_EOS_Zoom(CONFIG_PUT_ARGS) { -+ uint16_t ret; -+ const char* val; -+ unsigned int xval; -+ PTPParams *params = &(camera->pl->params); -+ -+ if (!ptp_operation_issupported(params, PTP_OC_CANON_EOS_Zoom)) -+ return (GP_ERROR_NOT_SUPPORTED); -+ -+ gp_widget_get_value(widget, &val); -+ if (!sscanf (val, "%d", &xval)) { -+ gp_log (GP_LOG_DEBUG, "ptp2/canon_eos_zoom", "Could not parse %s", val); -+ return GP_ERROR; -+ } -+ ret = ptp_canon_eos_zoom (params, xval); -+ if (ret != PTP_RC_OK) { -+ gp_log (GP_LOG_DEBUG, "ptp2/canon_eos_zoom", "Canon zoom 0x%x failed: 0x%x", xval, ret); -+ return GP_ERROR; -+ } -+ /* Get the next set of event data */ -+ ret = _ptp_check_eos_events (params); -+ if (ret != PTP_RC_OK) { -+ gp_log (GP_LOG_ERROR,"ptp2/canon_eos_zoom", "getevent failed!"); -+ return translate_ptp_result (ret); -+ } -+ return GP_OK; -+} -+ -+/* EOS Zoom. Works in approx 64 pixel steps on the EOS 1000D, but just accept -+ * all kind of pairs */ -+static int -+_get_Canon_EOS_ZoomPosition(CONFIG_GET_ARGS) { -+ gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); -+ gp_widget_set_name (*widget, menu->name); -+ -+ gp_widget_set_value (*widget, "0,0"); -+ return (GP_OK); -+} -+ -+static int -+_put_Canon_EOS_ZoomPosition(CONFIG_PUT_ARGS) { -+ uint16_t ret; -+ const char* val; -+ unsigned int x,y; -+ PTPParams *params = &(camera->pl->params); -+ -+ if (!ptp_operation_issupported(params, PTP_OC_CANON_EOS_ZoomPosition)) -+ return (GP_ERROR_NOT_SUPPORTED); -+ -+ gp_widget_get_value(widget, &val); -+ if (2!=sscanf (val, "%d,%d", &x,&y)) { -+ gp_log (GP_LOG_DEBUG, "ptp2/canon_eos_zoomposition", "Could not parse %s (expected 'x,y')", val); -+ return GP_ERROR; -+ } -+ ret = ptp_canon_eos_zoomposition (params, x,y); -+ if (ret != PTP_RC_OK) { -+ gp_log (GP_LOG_DEBUG, "ptp2/canon_eos_zoomposition", "Canon zoom position %d,%d failed: 0x%x", x, y, ret); -+ return GP_ERROR; -+ } -+ /* Get the next set of event data */ -+ ret = _ptp_check_eos_events (params); -+ if (ret != PTP_RC_OK) { -+ gp_log (GP_LOG_ERROR,"ptp2/canon_eos_zoomposition", "getevent failed!"); -+ return translate_ptp_result (ret); -+ } -+ return GP_OK; - } - - -@@ -4241,6 +4382,8 @@ - { N_("Drive Canon DSLR Autofocus"), "autofocusdrive", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_DoAf, _get_Canon_EOS_AFDrive, _put_Canon_EOS_AFDrive }, - { N_("Drive Nikon DSLR Manual focus"), "manualfocusdrive", 0, PTP_VENDOR_NIKON, PTP_OC_NIKON_MfDrive, _get_Nikon_MFDrive, _put_Nikon_MFDrive }, - { N_("Drive Canon DSLR Manual focus"), "manualfocusdrive", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_DriveLens, _get_Canon_EOS_MFDrive, _put_Canon_EOS_MFDrive }, -+ { N_("Canon EOS Zoom "), "eoszoom", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_Zoom, _get_Canon_EOS_Zoom, _put_Canon_EOS_Zoom}, -+ { N_("Canon EOS Zoom Position"), "eoszoomposition", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_ZoomPosition, _get_Canon_EOS_ZoomPosition, _put_Canon_EOS_ZoomPosition}, - { 0,0,0,0,0,0,0 }, - }; - -diff -ru libgphoto2-2.4.9/camlibs/ptp2/library.c libgphoto2//camlibs/ptp2/library.c ---- libgphoto2-2.4.9/camlibs/ptp2/library.c 2010-04-11 14:13:03.000000000 +0200 -+++ libgphoto2//camlibs/ptp2/library.c 2010-06-17 17:05:11.958020000 +0200 -@@ -2031,7 +2031,8 @@ - /* delete last / or we get confused later. */ - path->folder[ strlen(path->folder)-1 ] = '\0'; - gp_filesystem_append (camera->fs, path->folder, path->name, context); -- continue; /* for RAW+JPG mode capture, we just return the last image for now. */ -+ break;/* for RAW+JPG mode capture, we just return the first image for now, and -+ * let wait_for_event get the rest. */ - } - if (newobject) - break; -@@ -2466,6 +2467,8 @@ - - init_ptp_fs (camera, context); - -+ *eventtype = GP_EVENT_TIMEOUT; -+ *eventdata = NULL; - gettimeofday (&event_start,NULL); - if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && - ptp_operation_issupported(params, PTP_OC_CANON_EOS_RemoteRelease) -@@ -2474,7 +2477,6 @@ - - if (!params->eos_captureenabled) - camera_prepare_capture (camera, context); -- *eventtype = GP_EVENT_TIMEOUT; - while (1) { - PTPCanon_changes_entry entry; - -@@ -2589,10 +2591,8 @@ - int isevent; - - while (1) { -- if (_timeout_passed(&event_start, timeout)) { -- *eventtype = GP_EVENT_TIMEOUT; -+ if (_timeout_passed(&event_start, timeout)) - break; -- } - gp_context_idle (context); - ret = ptp_canon_checkevent (params,&event,&isevent); - if (ret!=PTP_RC_OK) -@@ -2609,7 +2609,6 @@ - ) { - uint32_t newobject, hasc101; - -- *eventtype = GP_EVENT_TIMEOUT; - while (1) { - int evtcnt; - PTPContainer *nevent = NULL; -diff -ru libgphoto2-2.4.9/camlibs/ptp2/usb.c libgphoto2//camlibs/ptp2/usb.c ---- libgphoto2-2.4.9/camlibs/ptp2/usb.c 2009-12-15 09:28:43.000000000 +0100 -+++ libgphoto2//camlibs/ptp2/usb.c 2010-06-17 17:05:12.019025000 +0200 -@@ -506,6 +506,7 @@ - gp_port_get_timeout (camera->port, &timeout); - gp_port_set_timeout (camera->port, PTP2_FAST_TIMEOUT); - result = gp_port_check_int (camera->port, (char*)&usbevent, sizeof(usbevent)); -+ if (result <= 0) result = gp_port_check_int (camera->port, (char*)&usbevent, sizeof(usbevent)); - gp_port_set_timeout (camera->port, timeout); - break; - default: -diff -ru libgphoto2-2.4.9/libgphoto2/gphoto2-camera.c libgphoto2//libgphoto2/gphoto2-camera.c ---- libgphoto2-2.4.9/libgphoto2/gphoto2-camera.c 2010-04-11 14:30:03.000000000 +0200 -+++ libgphoto2//libgphoto2/gphoto2-camera.c 2010-06-17 17:05:13.489925000 +0200 -@@ -1035,8 +1035,6 @@ - CHECK_INIT (camera, context); - - if (!camera->functions->wait_for_event) { -- gp_context_error (context, _("This camera does " -- "not support event handling.")); - CAMERA_UNUSED (camera, context); - return (GP_ERROR_NOT_SUPPORTED); - }