diff options
Diffstat (limited to 'ipecamera')
| -rw-r--r-- | ipecamera/events.c | 6 | ||||
| -rw-r--r-- | ipecamera/ipecamera.c | 6 | 
2 files changed, 8 insertions, 4 deletions
diff --git a/ipecamera/events.c b/ipecamera/events.c index 58c29a1..3253fc5 100644 --- a/ipecamera/events.c +++ b/ipecamera/events.c @@ -139,7 +139,7 @@ int ipecamera_next_event(pcilib_context_t *vctx, pcilib_timeout_t timeout, pcili      }  retry: -    if ((ctx->event_id - ctx->reported_id) > (ctx->buffer_size - IPECAMERA_RESERVE_BUFFERS)) ctx->reported_id = ctx->event_id - (ctx->buffer_size - 1) - IPECAMERA_RESERVE_BUFFERS; +    if ((ctx->event_id - ctx->reported_id) > (ctx->buffer_size - IPECAMERA_RESERVE_BUFFERS)) ctx->reported_id = ctx->event_id - (ctx->buffer_size - 1 - IPECAMERA_RESERVE_BUFFERS);      else ++ctx->reported_id;      if (evid) *evid = ctx->reported_id; @@ -152,9 +152,9 @@ retry:  	else  	    return PCILIB_ERROR_INVALID_ARGUMENT;      } -     +      if ((ctx->event_id - ctx->reported_id) >= ctx->buffer_size) goto retry; -     +      return 0;  } diff --git a/ipecamera/ipecamera.c b/ipecamera/ipecamera.c index 27bea77..4ba0e9e 100644 --- a/ipecamera/ipecamera.c +++ b/ipecamera/ipecamera.c @@ -575,7 +575,11 @@ int ipecamera_stop(pcilib_context_t *vctx, pcilib_event_flags_t flags) {  	pcilib_stop_dma(vctx->pcilib, ctx->rdma, PCILIB_DMA_FLAGS_DEFAULT);  	ctx->rdma = PCILIB_DMA_ENGINE_INVALID;      } -     + +    while (ctx->streaming) { +        usleep(IPECAMERA_NOFRAME_SLEEP); +    } +      if (ctx->ipedec) {  	ufo_decoder_free(ctx->ipedec);  	ctx->ipedec = NULL;  | 
