diff options
author | Marcus Meissner <marcus@jet.franken.de> | 2022-10-10 17:01:30 +0200 |
---|---|---|
committer | Marcus Meissner <marcus@jet.franken.de> | 2022-10-10 17:02:34 +0200 |
commit | 540762d91f62019d05cbb29fd60adae17fbf9c9f (patch) | |
tree | b64c73edb496044cb233f5b8786b495df9ccc8c4 /camlibs/ptp2/ptp.c | |
parent | e0e4da2d5c87d7406c644f419a5ca58be0a90d4d (diff) | |
download | libgphoto2-540762d91f62019d05cbb29fd60adae17fbf9c9f.tar.gz |
use a local PTP event queue in nikon capture to avoid checking interrupts on any event,
which causes delays.
https://github.com/gphoto/libgphoto2/issues/846
Diffstat (limited to 'camlibs/ptp2/ptp.c')
-rw-r--r-- | camlibs/ptp2/ptp.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/camlibs/ptp2/ptp.c b/camlibs/ptp2/ptp.c index 9e5df52e3..5bdce1c97 100644 --- a/camlibs/ptp2/ptp.c +++ b/camlibs/ptp2/ptp.c @@ -3228,11 +3228,39 @@ ptp_canon_checkevent (PTPParams* params, PTPContainer* event, int* isevent) } uint16_t +ptp_add_event_queue (PTPContainer **events, unsigned int *nrevents, PTPContainer *evt) +{ + PTPContainer *levents; + + levents = realloc(*events, sizeof(PTPContainer)*((*nrevents)+1)); + if (!levents) + return PTP_RC_GeneralError; + *events = levents; + memcpy (&events[*nrevents],evt,1*sizeof(PTPContainer)); + (*nrevents)++; + return PTP_RC_OK; +} +uint16_t ptp_add_event (PTPParams *params, PTPContainer *evt) { + return ptp_add_event_queue (¶ms->events, ¶ms->nrofevents, evt); +/* params->events = realloc(params->events, sizeof(PTPContainer)*(params->nrofevents+1)); memcpy (¶ms->events[params->nrofevents],evt,1*sizeof(PTPContainer)); params->nrofevents += 1; + + return PTP_RC_OK; +*/ +} + +uint16_t +ptp_add_events (PTPParams *params, PTPContainer **evt, unsigned int nrevents) +{ + unsigned int i; + + for (i=0;i<nrevents;i++) { + CHECK_PTP_RC (ptp_add_event_queue (¶ms->events, ¶ms->nrofevents, evt[i])); + } return PTP_RC_OK; } |