| Index: src/libmtp.c |
| =================================================================== |
| --- src/libmtp.c (revision 148597) |
| +++ src/libmtp.c (working copy) |
| @@ -1144,6 +1144,9 @@ |
| int supported = 0; |
| uint16_t ptp_prop = map_libmtp_property_to_ptp_property(property); |
| |
| + if (!ptp_operation_issupported(device->params, PTP_OC_MTP_GetObjectPropsSupported)) |
| + return 0; |
| + |
| ret = ptp_mtp_getobjectpropssupported(device->params, map_libmtp_type_to_ptp_type(filetype), &propcnt, &props); |
| if (ret != PTP_RC_OK) { |
| add_ptp_error_to_errorstack(device, ret, "LIBMTP_Is_Property_Supported(): could not get properties supported."); |
| @@ -1974,40 +1977,42 @@ |
| } |
| |
| /* Determine if the object size supported is 32 or 64 bit wide */ |
| - for (i=0;i<current_params->deviceinfo.ImageFormats_len;i++) { |
| - PTPObjectPropDesc opd; |
| + if (ptp_operation_issupported(current_params,PTP_OC_MTP_GetObjectPropsSupported)) { |
| + for (i=0;i<current_params->deviceinfo.ImageFormats_len;i++) { |
| + PTPObjectPropDesc opd; |
| |
| - if (ptp_mtp_getobjectpropdesc(current_params, |
| - PTP_OPC_ObjectSize, |
| - current_params->deviceinfo.ImageFormats[i], |
| - &opd) != PTP_RC_OK) { |
| - LIBMTP_ERROR("LIBMTP PANIC: " |
| - "could not inspect object property descriptions!\n"); |
| - } else { |
| - if (opd.DataType == PTP_DTC_UINT32) { |
| - if (bs == 0) { |
| - bs = 32; |
| - } else if (bs != 32) { |
| - LIBMTP_ERROR("LIBMTP PANIC: " |
| - "different objects support different object sizes!\n"); |
| - bs = 0; |
| - break; |
| - } |
| - } else if (opd.DataType == PTP_DTC_UINT64) { |
| - if (bs == 0) { |
| - bs = 64; |
| - } else if (bs != 64) { |
| - LIBMTP_ERROR("LIBMTP PANIC: " |
| - "different objects support different object sizes!\n"); |
| - bs = 0; |
| - break; |
| - } |
| + if (ptp_mtp_getobjectpropdesc(current_params, |
| + PTP_OPC_ObjectSize, |
| + current_params->deviceinfo.ImageFormats[i], |
| + &opd) != PTP_RC_OK) { |
| + LIBMTP_ERROR("LIBMTP PANIC: " |
| + "could not inspect object property descriptions!\n"); |
| } else { |
| - // Ignore if other size. |
| - LIBMTP_ERROR("LIBMTP PANIC: " |
| - "awkward object size data type: %04x\n", opd.DataType); |
| - bs = 0; |
| - break; |
| + if (opd.DataType == PTP_DTC_UINT32) { |
| + if (bs == 0) { |
| + bs = 32; |
| + } else if (bs != 32) { |
| + LIBMTP_ERROR("LIBMTP PANIC: " |
| + "different objects support different object sizes!\n"); |
| + bs = 0; |
| + break; |
| + } |
| + } else if (opd.DataType == PTP_DTC_UINT64) { |
| + if (bs == 0) { |
| + bs = 64; |
| + } else if (bs != 64) { |
| + LIBMTP_ERROR("LIBMTP PANIC: " |
| + "different objects support different object sizes!\n"); |
| + bs = 0; |
| + break; |
| + } |
| + } else { |
| + // Ignore if other size. |
| + LIBMTP_ERROR("LIBMTP PANIC: " |
| + "awkward object size data type: %04x\n", opd.DataType); |
| + bs = 0; |
| + break; |
| + } |
| } |
| } |
| } |
| @@ -4107,7 +4112,7 @@ |
| break; |
| } |
| } |
| - } else { |
| + } else if (ptp_operation_issupported(params,PTP_OC_MTP_GetObjectPropsSupported)) { |
| uint16_t *props = NULL; |
| uint32_t propcnt = 0; |
| int ret; |