From f886ce920c7d7f05df255a553144f8428289aed7f47b74503504bcd1932af5e0 Mon Sep 17 00:00:00 2001 From: OBS User autobuild Date: Mon, 23 Aug 2010 13:29:19 +0000 Subject: [PATCH] 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); + }