- Updated to major release 2.5.0
- more dynamic lists (no more fixed limits) - libgphoto2 api adjustments to make it more sane, binary incompatible - new .so version 6 OBS-URL: https://build.opensuse.org/package/show/graphics/libgphoto2?expand=0&rev=77
This commit is contained in:
parent
0f688358b6
commit
8f4344343c
@ -1,428 +0,0 @@
|
|||||||
Index: camlibs/canon/canon.c
|
|
||||||
===================================================================
|
|
||||||
--- camlibs/canon/canon.c.orig
|
|
||||||
+++ camlibs/canon/canon.c
|
|
||||||
@@ -1333,8 +1333,7 @@ void canon_int_find_new_image ( Camera *
|
|
||||||
if ( is_image ( new_name ) ) {
|
|
||||||
/* Yup, we'll assume that this is the new image. */
|
|
||||||
GP_DEBUG ( " Found our new image file" );
|
|
||||||
- strncpy ( path->name, new_name,
|
|
||||||
- strlen ( new_name ) );
|
|
||||||
+ strcpy ( path->name, new_name );
|
|
||||||
strcpy ( path->folder, canon2gphotopath ( camera, path->folder ) );
|
|
||||||
|
|
||||||
/* FIXME: Marcus: make it less large effort... */
|
|
||||||
Index: camlibs/ptp2/library.c
|
|
||||||
===================================================================
|
|
||||||
--- camlibs/ptp2/library.c.orig
|
|
||||||
+++ camlibs/ptp2/library.c
|
|
||||||
@@ -715,7 +715,7 @@ static struct {
|
|
||||||
{"Nikon:Coolpix L110 (PTP mode)", 0x04b0, 0x017e, PTP_CAP},
|
|
||||||
|
|
||||||
/* miguel@rozsas.eng.br */
|
|
||||||
- {"Nikon:Coolpix P500 (PTP mode)", 0x04b0, 0x0184, 0},
|
|
||||||
+ {"Nikon:Coolpix P500 (PTP mode)", 0x04b0, 0x0184, PTP_CAP},
|
|
||||||
/* Graeme Wyatt <graeme.wyatt@nookawarra.com> */
|
|
||||||
{"Nikon:Coolpix L120 (PTP mode)", 0x04b0, 0x0185, PTP_CAP},
|
|
||||||
/* Kévin Ottens <ervin@ipsquad.net> */
|
|
||||||
@@ -740,6 +740,8 @@ static struct {
|
|
||||||
{"Nikon:Coolpix S8000 (PTP mode)",0x04b0, 0x021f, 0},
|
|
||||||
/* Aleksej Serdjukov <deletesoftware@yandex.ru> */
|
|
||||||
{"Nikon:Coolpix S5100 (PTP mode)",0x04b0, 0x0220, 0},
|
|
||||||
+ /* wlady.cs@gmail.com */
|
|
||||||
+ {"Nikon:Coolpix P300 (PTP mode)", 0x04b0, 0x0221, 0},
|
|
||||||
/* Nikon Coolpix 2000 */
|
|
||||||
{"Nikon:Coolpix 2000 (PTP mode)", 0x04b0, 0x0302, 0},
|
|
||||||
/* From IRC reporter. */
|
|
||||||
@@ -810,6 +812,11 @@ static struct {
|
|
||||||
/* IRC Reporter popolon */
|
|
||||||
{"Nikon:DSC D5100 (PTP mode)", 0x04b0, 0x0429, PTP_CAP|PTP_CAP_PREVIEW},
|
|
||||||
|
|
||||||
+
|
|
||||||
+ /* http://sourceforge.net/tracker/?func=detail&aid=3536904&group_id=8874&atid=108874 */
|
|
||||||
+ {"Nikon:V1", 0x04b0, 0x0601, PTP_CAP},
|
|
||||||
+
|
|
||||||
+
|
|
||||||
#if 0
|
|
||||||
/* Thomas Luzat <thomas.luzat@gmx.net> */
|
|
||||||
/* this was reported as not working, mass storage only:
|
|
||||||
@@ -1058,6 +1065,8 @@ static struct {
|
|
||||||
|
|
||||||
/* Martin Lasarsch at SUSE. MTP_PROPLIST returns just 0 entries */
|
|
||||||
{"Canon:Digital IXUS 90 IS", 0x04a9, 0x3174, PTPBUG_DELETE_SENDS_EVENT},
|
|
||||||
+ /* Daniel Moyne <daniel.moyne@free.fr> */
|
|
||||||
+ {"Canon:Powershot SD790 IS", 0x04a9, 0x3174, PTPBUG_DELETE_SENDS_EVENT},
|
|
||||||
|
|
||||||
/* https://sourceforge.net/tracker/?func=detail&aid=2722422&group_id=8874&atid=358874 */
|
|
||||||
{"Canon:Digital IXUS 85 IS", 0x04a9, 0x3174, PTPBUG_DELETE_SENDS_EVENT},
|
|
||||||
@@ -1289,6 +1298,9 @@ static struct {
|
|
||||||
{"Apple:iPod Touch 3rd Gen (PTP mode)", 0x05ac, 0x1299, 0},
|
|
||||||
{"Apple:iPad (PTP mode)", 0x05ac, 0x129a, 0},
|
|
||||||
|
|
||||||
+ /* Don Cohen <don-sourceforge-xxzw@isis.cs3-inc.com> */
|
|
||||||
+ {"Apple:iPhone 4S (PTP mode)", 0x05ac, 0x12a0, 0},
|
|
||||||
+
|
|
||||||
/* https://sourceforge.net/tracker/index.php?func=detail&aid=1869653&group_id=158745&atid=809061 */
|
|
||||||
{"Pioneer:DVR-LX60D", 0x08e4, 0x0142, 0},
|
|
||||||
|
|
||||||
@@ -4555,12 +4567,14 @@ get_file_func (CameraFilesystem *fs, con
|
|
||||||
unsigned char *ximage = NULL;
|
|
||||||
unsigned int xlen = 0;
|
|
||||||
|
|
||||||
- /* If thumb size is 0 then there is no thumbnail at all... */
|
|
||||||
- if((size=oi->ThumbCompressedSize)==0) return (GP_ERROR_NOT_SUPPORTED);
|
|
||||||
+ size=oi->ThumbCompressedSize;
|
|
||||||
+ /* If thumb size is 0 and the OFC is not a image type (0x3800 / 0xb800)... */
|
|
||||||
+ if ((size==0) && ((oi->ObjectFormat & 0x7800) != 0x3800))
|
|
||||||
+ return GP_ERROR_NOT_SUPPORTED;
|
|
||||||
CPR (context, ptp_getthumb(params,
|
|
||||||
params->handles.Handler[object_id],
|
|
||||||
&ximage, &xlen));
|
|
||||||
- if (xlen != size)
|
|
||||||
+ if (size && (xlen != size))
|
|
||||||
gp_log (GP_LOG_ERROR, "get_file_func/GP_FILE_TYPE_PREVIEW", "size mismatch %d vs %d", size, xlen);
|
|
||||||
set_mimetype (camera, file, params->deviceinfo.VendorExtensionID, oi->ThumbFormat);
|
|
||||||
CR (gp_file_set_data_and_size (file, (char*)ximage, xlen));
|
|
||||||
Index: libgphoto2_port/libusb1/libusb1.c
|
|
||||||
===================================================================
|
|
||||||
--- libgphoto2_port/libusb1/libusb1.c.orig
|
|
||||||
+++ libgphoto2_port/libusb1/libusb1.c
|
|
||||||
@@ -71,6 +71,10 @@ struct _GPPortPrivateLibrary {
|
|
||||||
|
|
||||||
int detached;
|
|
||||||
|
|
||||||
+ time_t devslastchecked;
|
|
||||||
+ int nrofdevs;
|
|
||||||
+ struct libusb_device_descriptor *descs;
|
|
||||||
+ libusb_device **devs;
|
|
||||||
};
|
|
||||||
|
|
||||||
GPPortType
|
|
||||||
@@ -79,38 +83,34 @@ gp_port_library_type (void)
|
|
||||||
return (GP_PORT_USB);
|
|
||||||
}
|
|
||||||
|
|
||||||
-static time_t gp_devslastchecked = 0;
|
|
||||||
-static int gp_nrofdevs = 0;
|
|
||||||
-static struct libusb_device_descriptor *gp_descs;
|
|
||||||
-static libusb_device **gp_devs;
|
|
||||||
|
|
||||||
static ssize_t
|
|
||||||
-load_devicelist (libusb_context *ctx) {
|
|
||||||
+load_devicelist (GPPortPrivateLibrary *pl) {
|
|
||||||
time_t xtime;
|
|
||||||
|
|
||||||
time(&xtime);
|
|
||||||
- if (xtime != gp_devslastchecked) {
|
|
||||||
- if (gp_nrofdevs)
|
|
||||||
- libusb_free_device_list (gp_devs, 1);
|
|
||||||
- free (gp_descs);
|
|
||||||
- gp_nrofdevs = 0;
|
|
||||||
- gp_devs = NULL;
|
|
||||||
- gp_descs = NULL;
|
|
||||||
+ if (xtime != pl->devslastchecked) {
|
|
||||||
+ if (pl->nrofdevs)
|
|
||||||
+ libusb_free_device_list (pl->devs, 1);
|
|
||||||
+ free (pl->descs);
|
|
||||||
+ pl->nrofdevs = 0;
|
|
||||||
+ pl->devs = NULL;
|
|
||||||
+ pl->descs = NULL;
|
|
||||||
}
|
|
||||||
- if (!gp_nrofdevs) {
|
|
||||||
+ if (!pl->nrofdevs) {
|
|
||||||
int i;
|
|
||||||
|
|
||||||
- gp_nrofdevs = libusb_get_device_list (ctx, &gp_devs);
|
|
||||||
- gp_descs = malloc (sizeof(gp_descs[0])*gp_nrofdevs);
|
|
||||||
- for (i=0;i<gp_nrofdevs;i++) {
|
|
||||||
+ pl->nrofdevs = libusb_get_device_list (pl->ctx, &pl->devs);
|
|
||||||
+ pl->descs = malloc (sizeof(pl->descs[0])*pl->nrofdevs);
|
|
||||||
+ for (i=0;i<pl->nrofdevs;i++) {
|
|
||||||
int ret;
|
|
||||||
- ret = libusb_get_device_descriptor(gp_devs[i], &gp_descs[i]);
|
|
||||||
+ ret = libusb_get_device_descriptor(pl->devs[i], &pl->descs[i]);
|
|
||||||
if (ret)
|
|
||||||
gp_log (GP_LOG_ERROR, "libusb1", "libusb_get_device_descriptor(%d) returned %d", i, ret);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
- time (&gp_devslastchecked);
|
|
||||||
- return gp_nrofdevs;
|
|
||||||
+ time (&pl->devslastchecked);
|
|
||||||
+ return pl->nrofdevs;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
@@ -119,6 +119,10 @@ gp_port_library_list (GPPortInfoList *li
|
|
||||||
GPPortInfo info;
|
|
||||||
int nrofdevices = 0;
|
|
||||||
int d, i, i1, i2, unknownint;
|
|
||||||
+ libusb_context *ctx;
|
|
||||||
+ libusb_device **devs = NULL;
|
|
||||||
+ int nrofdevs = 0;
|
|
||||||
+ struct libusb_device_descriptor *descs;
|
|
||||||
|
|
||||||
/* generic matcher. This will catch passed XXX,YYY entries for instance. */
|
|
||||||
info.type = GP_PORT_USB;
|
|
||||||
@@ -126,26 +130,33 @@ gp_port_library_list (GPPortInfoList *li
|
|
||||||
strcpy (info.path, "^usb:");
|
|
||||||
CHECK (gp_port_info_list_append (list, info));
|
|
||||||
|
|
||||||
- libusb_init (NULL);
|
|
||||||
- gp_nrofdevs = load_devicelist (NULL);
|
|
||||||
+ libusb_init (&ctx);
|
|
||||||
+ nrofdevs = libusb_get_device_list (ctx, &devs);
|
|
||||||
+ descs = malloc (sizeof(descs[0])*nrofdevs);
|
|
||||||
+ for (i=0;i<nrofdevs;i++) {
|
|
||||||
+ int ret;
|
|
||||||
+ ret = libusb_get_device_descriptor(devs[i], &descs[i]);
|
|
||||||
+ if (ret)
|
|
||||||
+ gp_log (GP_LOG_ERROR, "libusb1", "libusb_get_device_descriptor(%d) returned %d", i, ret);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- for (d = 0; d < gp_nrofdevs; d++) {
|
|
||||||
+ for (d = 0; d < nrofdevs; d++) {
|
|
||||||
/* Devices which are definitely not cameras. */
|
|
||||||
- if ( (gp_descs[d].bDeviceClass == LIBUSB_CLASS_HUB) ||
|
|
||||||
- (gp_descs[d].bDeviceClass == LIBUSB_CLASS_HID) ||
|
|
||||||
- (gp_descs[d].bDeviceClass == LIBUSB_CLASS_PRINTER) ||
|
|
||||||
- (gp_descs[d].bDeviceClass == LIBUSB_CLASS_COMM) ||
|
|
||||||
- (gp_descs[d].bDeviceClass == 0xe0) /* wireless / bluetooth */
|
|
||||||
+ if ( (descs[d].bDeviceClass == LIBUSB_CLASS_HUB) ||
|
|
||||||
+ (descs[d].bDeviceClass == LIBUSB_CLASS_HID) ||
|
|
||||||
+ (descs[d].bDeviceClass == LIBUSB_CLASS_PRINTER) ||
|
|
||||||
+ (descs[d].bDeviceClass == LIBUSB_CLASS_COMM) ||
|
|
||||||
+ (descs[d].bDeviceClass == 0xe0) /* wireless / bluetooth */
|
|
||||||
)
|
|
||||||
continue;
|
|
||||||
/* excepts HUBs, usually the interfaces have the classes, not
|
|
||||||
* the device */
|
|
||||||
unknownint = 0;
|
|
||||||
- for (i = 0; i < gp_descs[d].bNumConfigurations; i++) {
|
|
||||||
+ for (i = 0; i < descs[d].bNumConfigurations; i++) {
|
|
||||||
struct libusb_config_descriptor *config;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
- ret = libusb_get_config_descriptor (gp_devs[d], i, &config);
|
|
||||||
+ ret = libusb_get_config_descriptor (devs[d], i, &config);
|
|
||||||
if (ret) {
|
|
||||||
unknownint++;
|
|
||||||
continue;
|
|
||||||
@@ -185,22 +196,22 @@ gp_port_library_list (GPPortInfoList *li
|
|
||||||
/* Redo the same bus/device walk, but now add the ports with usb:x,y notation,
|
|
||||||
* so we can address all USB devices.
|
|
||||||
*/
|
|
||||||
- for (d = 0; d < gp_nrofdevs; d++) {
|
|
||||||
+ for (d = 0; d < nrofdevs; d++) {
|
|
||||||
/* Devices which are definitely not cameras. */
|
|
||||||
- if ( (gp_descs[d].bDeviceClass == LIBUSB_CLASS_HUB) ||
|
|
||||||
- (gp_descs[d].bDeviceClass == LIBUSB_CLASS_HID) ||
|
|
||||||
- (gp_descs[d].bDeviceClass == LIBUSB_CLASS_PRINTER) ||
|
|
||||||
- (gp_descs[d].bDeviceClass == LIBUSB_CLASS_COMM)
|
|
||||||
+ if ( (descs[d].bDeviceClass == LIBUSB_CLASS_HUB) ||
|
|
||||||
+ (descs[d].bDeviceClass == LIBUSB_CLASS_HID) ||
|
|
||||||
+ (descs[d].bDeviceClass == LIBUSB_CLASS_PRINTER) ||
|
|
||||||
+ (descs[d].bDeviceClass == LIBUSB_CLASS_COMM)
|
|
||||||
)
|
|
||||||
continue;
|
|
||||||
/* excepts HUBs, usually the interfaces have the classes, not
|
|
||||||
* the device */
|
|
||||||
unknownint = 0;
|
|
||||||
- for (i = 0; i < gp_descs[d].bNumConfigurations; i++) {
|
|
||||||
+ for (i = 0; i < descs[d].bNumConfigurations; i++) {
|
|
||||||
struct libusb_config_descriptor *config;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
- ret = libusb_get_config_descriptor (gp_devs[d], i, &config);
|
|
||||||
+ ret = libusb_get_config_descriptor (devs[d], i, &config);
|
|
||||||
if (ret) {
|
|
||||||
gp_log (GP_LOG_ERROR, "libusb1", "libusb_get_config_descriptor(%d) returned %d", d, ret);
|
|
||||||
unknownint++;
|
|
||||||
@@ -226,8 +237,8 @@ gp_port_library_list (GPPortInfoList *li
|
|
||||||
info.type = GP_PORT_USB;
|
|
||||||
strcpy (info.name, "Universal Serial Bus");
|
|
||||||
snprintf (info.path,sizeof(info.path), "usb:%03d,%03d",
|
|
||||||
- libusb_get_bus_number (gp_devs[d]),
|
|
||||||
- libusb_get_device_address (gp_devs[d])
|
|
||||||
+ libusb_get_bus_number (devs[d]),
|
|
||||||
+ libusb_get_device_address (devs[d])
|
|
||||||
);
|
|
||||||
CHECK (gp_port_info_list_append (list, info));
|
|
||||||
}
|
|
||||||
@@ -239,7 +250,7 @@ gp_port_library_list (GPPortInfoList *li
|
|
||||||
strcpy (info.path, "usb:");
|
|
||||||
CHECK (gp_port_info_list_append (list, info));
|
|
||||||
}
|
|
||||||
- libusb_exit (NULL);
|
|
||||||
+ libusb_exit (ctx); /* should free all stuff above */
|
|
||||||
return (GP_OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -269,11 +280,10 @@ gp_port_usb_exit (GPPort *port)
|
|
||||||
{
|
|
||||||
if (port->pl) {
|
|
||||||
libusb_exit (port->pl->ctx);
|
|
||||||
+ free (port->pl->descs);
|
|
||||||
free (port->pl);
|
|
||||||
port->pl = NULL;
|
|
||||||
}
|
|
||||||
- if (gp_devs) libusb_free_device_list (gp_devs, 1);
|
|
||||||
- free (gp_descs);
|
|
||||||
return (GP_OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -744,6 +754,7 @@ gp_port_usb_find_device_lib(GPPort *port
|
|
||||||
{
|
|
||||||
char *s;
|
|
||||||
int d, busnr = 0, devnr = 0;
|
|
||||||
+ GPPortPrivateLibrary *pl = port->pl;
|
|
||||||
|
|
||||||
if (!port)
|
|
||||||
return (GP_ERROR_BAD_PARAMETERS);
|
|
||||||
@@ -767,23 +778,23 @@ gp_port_usb_find_device_lib(GPPort *port
|
|
||||||
return GP_ERROR_BAD_PARAMETERS;
|
|
||||||
}
|
|
||||||
|
|
||||||
- gp_nrofdevs = load_devicelist (port->pl->ctx);
|
|
||||||
+ pl->nrofdevs = load_devicelist (port->pl);
|
|
||||||
|
|
||||||
- for (d = 0; d < gp_nrofdevs; d++) {
|
|
||||||
+ for (d = 0; d < pl->nrofdevs; d++) {
|
|
||||||
struct libusb_config_descriptor *confdesc;
|
|
||||||
int ret;
|
|
||||||
int config = -1, interface = -1, altsetting = -1;
|
|
||||||
|
|
||||||
- if ((gp_descs[d].idVendor != idvendor) ||
|
|
||||||
- (gp_descs[d].idProduct != idproduct))
|
|
||||||
+ if ((pl->descs[d].idVendor != idvendor) ||
|
|
||||||
+ (pl->descs[d].idProduct != idproduct))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
- if (busnr && (busnr != libusb_get_bus_number (gp_devs[d])))
|
|
||||||
+ if (busnr && (busnr != libusb_get_bus_number (pl->devs[d])))
|
|
||||||
continue;
|
|
||||||
- if (devnr && (devnr != libusb_get_device_address (gp_devs[d])))
|
|
||||||
+ if (devnr && (devnr != libusb_get_device_address (pl->devs[d])))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
- port->pl->d = gp_devs[d];
|
|
||||||
+ port->pl->d = pl->devs[d];
|
|
||||||
|
|
||||||
gp_log (GP_LOG_VERBOSE, "libusb1",
|
|
||||||
"Looking for USB device "
|
|
||||||
@@ -791,9 +802,9 @@ gp_port_usb_find_device_lib(GPPort *port
|
|
||||||
idvendor, idproduct);
|
|
||||||
|
|
||||||
/* Use the first config, interface and altsetting we find */
|
|
||||||
- gp_port_usb_find_first_altsetting(gp_devs[d], &config, &interface, &altsetting);
|
|
||||||
+ gp_port_usb_find_first_altsetting(pl->devs[d], &config, &interface, &altsetting);
|
|
||||||
|
|
||||||
- ret = libusb_get_config_descriptor (gp_devs[d], config, &confdesc);
|
|
||||||
+ ret = libusb_get_config_descriptor (pl->devs[d], config, &confdesc);
|
|
||||||
if (ret)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
@@ -810,11 +821,11 @@ gp_port_usb_find_device_lib(GPPort *port
|
|
||||||
port->settings.usb.interface = confdesc->interface[interface].altsetting[altsetting].bInterfaceNumber;
|
|
||||||
port->settings.usb.altsetting = confdesc->interface[interface].altsetting[altsetting].bAlternateSetting;
|
|
||||||
|
|
||||||
- port->settings.usb.inep = gp_port_usb_find_ep(gp_devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_IN, LIBUSB_TRANSFER_TYPE_BULK);
|
|
||||||
- port->settings.usb.outep = gp_port_usb_find_ep(gp_devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_OUT, LIBUSB_TRANSFER_TYPE_BULK);
|
|
||||||
- port->settings.usb.intep = gp_port_usb_find_ep(gp_devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_IN, LIBUSB_TRANSFER_TYPE_INTERRUPT);
|
|
||||||
+ port->settings.usb.inep = gp_port_usb_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_IN, LIBUSB_TRANSFER_TYPE_BULK);
|
|
||||||
+ port->settings.usb.outep = gp_port_usb_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_OUT, LIBUSB_TRANSFER_TYPE_BULK);
|
|
||||||
+ port->settings.usb.intep = gp_port_usb_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_IN, LIBUSB_TRANSFER_TYPE_INTERRUPT);
|
|
||||||
|
|
||||||
- port->settings.usb.maxpacketsize = libusb_get_max_packet_size (gp_devs[d], port->settings.usb.inep);
|
|
||||||
+ port->settings.usb.maxpacketsize = libusb_get_max_packet_size (pl->devs[d], port->settings.usb.inep);
|
|
||||||
gp_log (GP_LOG_VERBOSE, "libusb1",
|
|
||||||
"Detected defaults: config %d, "
|
|
||||||
"interface %d, altsetting %d, "
|
|
||||||
@@ -998,6 +1009,8 @@ gp_port_usb_match_device_by_class(struct
|
|
||||||
if (class == 666) /* Special hack for MTP devices with MS OS descriptors. */
|
|
||||||
return gp_port_usb_match_mtp_device (dev, configno, interfaceno, altsettingno);
|
|
||||||
|
|
||||||
+ ret = libusb_get_device_descriptor(dev, &desc);
|
|
||||||
+
|
|
||||||
if (desc.bDeviceClass == class &&
|
|
||||||
(subclass == -1 ||
|
|
||||||
desc.bDeviceSubClass == subclass) &&
|
|
||||||
@@ -1005,7 +1018,6 @@ gp_port_usb_match_device_by_class(struct
|
|
||||||
desc.bDeviceProtocol == protocol))
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
- ret = libusb_get_device_descriptor(dev, &desc);
|
|
||||||
|
|
||||||
for (i = 0; i < desc.bNumConfigurations; i++) {
|
|
||||||
struct libusb_config_descriptor *config;
|
|
||||||
@@ -1045,6 +1057,7 @@ gp_port_usb_find_device_by_class_lib(GPP
|
|
||||||
{
|
|
||||||
char *s;
|
|
||||||
int d, busnr = 0, devnr = 0;
|
|
||||||
+ GPPortPrivateLibrary *pl = port->pl;
|
|
||||||
|
|
||||||
if (!port)
|
|
||||||
return (GP_ERROR_BAD_PARAMETERS);
|
|
||||||
@@ -1065,14 +1078,14 @@ gp_port_usb_find_device_by_class_lib(GPP
|
|
||||||
if (!class)
|
|
||||||
return GP_ERROR_BAD_PARAMETERS;
|
|
||||||
|
|
||||||
- gp_nrofdevs = load_devicelist (port->pl->ctx);
|
|
||||||
- for (d = 0; d < gp_nrofdevs; d++) {
|
|
||||||
+ pl->nrofdevs = load_devicelist (port->pl);
|
|
||||||
+ for (d = 0; d < pl->nrofdevs; d++) {
|
|
||||||
struct libusb_config_descriptor *confdesc;
|
|
||||||
int i, ret, config = -1, interface = -1, altsetting = -1;
|
|
||||||
|
|
||||||
- if (busnr && (busnr != libusb_get_bus_number (gp_devs[d])))
|
|
||||||
+ if (busnr && (busnr != libusb_get_bus_number (pl->devs[d])))
|
|
||||||
continue;
|
|
||||||
- if (devnr && (devnr != libusb_get_device_address (gp_devs[d])))
|
|
||||||
+ if (devnr && (devnr != libusb_get_device_address (pl->devs[d])))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
gp_log (GP_LOG_VERBOSE, "gphoto2-port-usb",
|
|
||||||
@@ -1080,17 +1093,17 @@ gp_port_usb_find_device_by_class_lib(GPP
|
|
||||||
"(class 0x%x, subclass, 0x%x, protocol 0x%x)...",
|
|
||||||
class, subclass, protocol);
|
|
||||||
|
|
||||||
- ret = gp_port_usb_match_device_by_class(gp_devs[d], class, subclass, protocol, &config, &interface, &altsetting);
|
|
||||||
+ ret = gp_port_usb_match_device_by_class(pl->devs[d], class, subclass, protocol, &config, &interface, &altsetting);
|
|
||||||
if (!ret)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
- port->pl->d = gp_devs[d];
|
|
||||||
+ port->pl->d = pl->devs[d];
|
|
||||||
gp_log (GP_LOG_VERBOSE, "libusb1",
|
|
||||||
"Found USB class device "
|
|
||||||
"(class 0x%x, subclass, 0x%x, protocol 0x%x)",
|
|
||||||
class, subclass, protocol);
|
|
||||||
|
|
||||||
- ret = libusb_get_config_descriptor (gp_devs[d], config, &confdesc);
|
|
||||||
+ ret = libusb_get_config_descriptor (pl->devs[d], config, &confdesc);
|
|
||||||
if (ret) continue;
|
|
||||||
|
|
||||||
/* Set the defaults */
|
|
||||||
@@ -1098,9 +1111,9 @@ gp_port_usb_find_device_by_class_lib(GPP
|
|
||||||
port->settings.usb.interface = confdesc->interface[interface].altsetting[altsetting].bInterfaceNumber;
|
|
||||||
port->settings.usb.altsetting = confdesc->interface[interface].altsetting[altsetting].bAlternateSetting;
|
|
||||||
|
|
||||||
- port->settings.usb.inep = gp_port_usb_find_ep(gp_devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_IN, LIBUSB_TRANSFER_TYPE_BULK);
|
|
||||||
- port->settings.usb.outep = gp_port_usb_find_ep(gp_devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_OUT, LIBUSB_TRANSFER_TYPE_BULK);
|
|
||||||
- port->settings.usb.intep = gp_port_usb_find_ep(gp_devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_IN, LIBUSB_TRANSFER_TYPE_INTERRUPT);
|
|
||||||
+ port->settings.usb.inep = gp_port_usb_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_IN, LIBUSB_TRANSFER_TYPE_BULK);
|
|
||||||
+ port->settings.usb.outep = gp_port_usb_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_OUT, LIBUSB_TRANSFER_TYPE_BULK);
|
|
||||||
+ port->settings.usb.intep = gp_port_usb_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_IN, LIBUSB_TRANSFER_TYPE_INTERRUPT);
|
|
||||||
port->settings.usb.maxpacketsize = 0;
|
|
||||||
gp_log (GP_LOG_DEBUG, "libusb1", "inep to look for is %02x", port->settings.usb.inep);
|
|
||||||
for (i=0;i<confdesc->interface[interface].altsetting[altsetting].bNumEndpoints;i++) {
|
|
||||||
@@ -1117,8 +1130,8 @@ gp_port_usb_find_device_by_class_lib(GPP
|
|
||||||
port->settings.usb.config,
|
|
||||||
port->settings.usb.interface,
|
|
||||||
port->settings.usb.altsetting,
|
|
||||||
- gp_descs[d].idVendor,
|
|
||||||
- gp_descs[d].idProduct,
|
|
||||||
+ pl->descs[d].idVendor,
|
|
||||||
+ pl->descs[d].idProduct,
|
|
||||||
port->settings.usb.inep,
|
|
||||||
port->settings.usb.outep,
|
|
||||||
port->settings.usb.intep
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:59b32d45252f67d066cc3bda7a59f8078e0cf4e7f23590a4b621633e81060292
|
|
||||||
size 4481384
|
|
3
libgphoto2-2.5.0.tar.bz2
Normal file
3
libgphoto2-2.5.0.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:e7df389f1b034be021066227c0908b8f21d3be0cd0c6ed56979c04c3a9f75b31
|
||||||
|
size 4635612
|
@ -1,13 +0,0 @@
|
|||||||
Index: libgphoto2-2.4.9/libgphoto2/gphoto2-list.c
|
|
||||||
===================================================================
|
|
||||||
--- libgphoto2-2.4.9.orig/libgphoto2/gphoto2-list.c
|
|
||||||
+++ libgphoto2-2.4.9/libgphoto2/gphoto2-list.c
|
|
||||||
@@ -72,7 +72,7 @@
|
|
||||||
|
|
||||||
#ifdef CAMERALIST_STRUCT_COMPATIBILITY
|
|
||||||
|
|
||||||
-#define MAX_ENTRIES 1024
|
|
||||||
+#define MAX_ENTRIES 4096
|
|
||||||
#define MAX_LIST_STRING_LENGTH 128
|
|
||||||
struct _CameraList {
|
|
||||||
int count;
|
|
@ -1,3 +1,12 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Sep 13 08:45:14 UTC 2012 - meissner@suse.com
|
||||||
|
|
||||||
|
- Updated to major release 2.5.0
|
||||||
|
- more dynamic lists (no more fixed limits)
|
||||||
|
- libgphoto2 api adjustments to make it more sane,
|
||||||
|
binary incompatible
|
||||||
|
- new .so version 6
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Aug 1 12:31:43 UTC 2012 - meissner@suse.com
|
Wed Aug 1 12:31:43 UTC 2012 - meissner@suse.com
|
||||||
|
|
||||||
|
@ -38,12 +38,10 @@ Obsoletes: libgphoto2-64bit
|
|||||||
Summary: A Digital Camera Library
|
Summary: A Digital Camera Library
|
||||||
License: LGPL-2.1+
|
License: LGPL-2.1+
|
||||||
Group: Hardware/Camera
|
Group: Hardware/Camera
|
||||||
Version: 2.4.14
|
Version: 2.5.0
|
||||||
Release: 0
|
Release: 0
|
||||||
Source0: libgphoto2-%{version}.tar.bz2
|
Source0: libgphoto2-%{version}.tar.bz2
|
||||||
Source1: baselibs.conf
|
Source1: baselibs.conf
|
||||||
Patch0: lg-24-branch.patch
|
|
||||||
Patch1: libgphoto2-4096files.patch
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
Recommends: %{name}-lang = %{version}
|
Recommends: %{name}-lang = %{version}
|
||||||
|
|
||||||
@ -78,8 +76,6 @@ These are its development libraries and headers.
|
|||||||
%lang_package
|
%lang_package
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch0 -p0
|
|
||||||
%patch1 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
#AUTOPOINT=true autoreconf -fi
|
#AUTOPOINT=true autoreconf -fi
|
||||||
@ -97,7 +93,7 @@ make check
|
|||||||
# skip-check-libtool-deps
|
# skip-check-libtool-deps
|
||||||
export LIBRARY_PATH=$RPM_BUILD_ROOT%{_libdir}
|
export LIBRARY_PATH=$RPM_BUILD_ROOT%{_libdir}
|
||||||
%makeinstall
|
%makeinstall
|
||||||
%{find_lang} libgphoto2-2
|
%{find_lang} libgphoto2-6
|
||||||
%{find_lang} libgphoto2_port-0
|
%{find_lang} libgphoto2_port-0
|
||||||
cat libgphoto2-2.lang libgphoto2_port-0.lang > libgphoto2-all.lang
|
cat libgphoto2-2.lang libgphoto2_port-0.lang > libgphoto2-all.lang
|
||||||
pushd packaging/generic
|
pushd packaging/generic
|
||||||
@ -138,7 +134,6 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{_mandir}/man3/libgphoto2.3*
|
%{_mandir}/man3/libgphoto2.3*
|
||||||
%{_mandir}/man3/libgphoto2_port.3*
|
%{_mandir}/man3/libgphoto2_port.3*
|
||||||
/lib/udev/rules.d/40-libgphoto2.rules
|
/lib/udev/rules.d/40-libgphoto2.rules
|
||||||
# /usr/share/hal/fdi/information/20thirdparty/10-camera-libgphoto2-device.fdi
|
|
||||||
|
|
||||||
%files lang -f libgphoto2-all.lang
|
%files lang -f libgphoto2-all.lang
|
||||||
|
|
||||||
@ -153,10 +148,8 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{_libdir}/pkgconfig/libgphoto2.pc
|
%{_libdir}/pkgconfig/libgphoto2.pc
|
||||||
%{_libdir}/pkgconfig/libgphoto2_port.pc
|
%{_libdir}/pkgconfig/libgphoto2_port.pc
|
||||||
|
|
||||||
%post
|
%post -p /sbin/ldconfig
|
||||||
/sbin/ldconfig
|
|
||||||
|
|
||||||
%postun
|
%postun -p /sbin/ldconfig
|
||||||
/sbin/ldconfig
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
Loading…
x
Reference in New Issue
Block a user