summaryrefslogtreecommitdiff
path: root/camlibs/ptp2/ptp.c
diff options
context:
space:
mode:
authorMarcus Meissner <marcus@jet.franken.de>2022-10-10 17:01:30 +0200
committerMarcus Meissner <marcus@jet.franken.de>2022-10-10 17:02:34 +0200
commit540762d91f62019d05cbb29fd60adae17fbf9c9f (patch)
treeb64c73edb496044cb233f5b8786b495df9ccc8c4 /camlibs/ptp2/ptp.c
parente0e4da2d5c87d7406c644f419a5ca58be0a90d4d (diff)
downloadlibgphoto2-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.c28
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 (&params->events, &params->nrofevents, evt);
+/*
params->events = realloc(params->events, sizeof(PTPContainer)*(params->nrofevents+1));
memcpy (&params->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 (&params->events, &params->nrofevents, evt[i]));
+ }
return PTP_RC_OK;
}