diff options
-rw-r--r-- | cli.c | 17 | ||||
-rw-r--r-- | ipecamera/private.h | 6 |
2 files changed, 11 insertions, 12 deletions
@@ -1084,11 +1084,11 @@ typedef struct { size_t trigger_time; size_t max_triggers; - int event_pending; /**< Used to detect that we have read previously triggered event */ - int trigger_thread_started; /**< Indicates that trigger thread is ready and we can't procced to start event recording */ - int started; /**< Indicates that recording is started */ + int event_pending; /**< Used to detect that we have read previously triggered event */ + volatile int trigger_thread_started; /**< Indicates that trigger thread is ready and we can't procced to start event recording */ + volatile int started; /**< Indicates that recording is started */ - int run_flag; + volatile int run_flag; struct timeval first_frame; struct timeval last_frame; @@ -1178,7 +1178,7 @@ int raw_data(pcilib_event_id_t event_id, pcilib_event_info_t *info, pcilib_event void *Trigger(void *user) { struct timeval start; - volatile GRABContext *ctx = (GRABContext*)user; + GRABContext *ctx = (GRABContext*)user; size_t trigger_time = ctx->trigger_time; size_t max_triggers = ctx->max_triggers; @@ -1237,7 +1237,7 @@ void GrabStats(GRABContext *ctx, struct timeval *end_time) { void *Monitor(void *user) { struct timeval deadline; - volatile GRABContext *ctx = (GRABContext*)user; + GRABContext *ctx = (GRABContext*)user; pcilib_timeout_t timeout = ctx->timeout; if (timeout == PCILIB_TIMEOUT_INFINITE) timeout = 0; @@ -1245,18 +1245,17 @@ void *Monitor(void *user) { // while (!ctx->started); if (timeout) { - memcpy(&deadline, &ctx->last_frame, sizeof(struct timeval)); + memcpy(&deadline, (struct timeval*)&ctx->last_frame, sizeof(struct timeval)); pcilib_add_timeout(&deadline, timeout); } while (ctx->run_flag) { if (timeout) { if (pcilib_calc_time_to_deadline(&deadline) == 0) { - memcpy(&deadline, &ctx->last_frame, sizeof(struct timeval)); + memcpy(&deadline, (struct timeval*)&ctx->last_frame, sizeof(struct timeval)); pcilib_add_timeout(&deadline, timeout); if (pcilib_calc_time_to_deadline(&deadline) == 0) { - puts("stop"); pcilib_stop(ctx->handle, PCILIB_EVENT_FLAG_STOP_ONLY); break; } diff --git a/ipecamera/private.h b/ipecamera/private.h index b583f38..3661cbe 100644 --- a/ipecamera/private.h +++ b/ipecamera/private.h @@ -80,9 +80,9 @@ struct ipecamera_s { int streaming; /**< Camera is in streaming mode (we are within stream call) */ int parse_data; /**< Indicates if some processing of the data is required, otherwise only rawdata_callback will be called */ - int run_reader; /**< Instructs the reader thread to stop processing */ - int run_streamer; /**< Indicates request to stop streaming events and can be set by reader_thread upon exit or by user request */ - int run_preprocessors; /**< Instructs preprocessors to exit */ + volatile int run_reader; /**< Instructs the reader thread to stop processing */ + volatile int run_streamer; /**< Indicates request to stop streaming events and can be set by reader_thread upon exit or by user request */ + volatile int run_preprocessors; /**< Instructs preprocessors to exit */ ipecamera_autostop_t autostop; |