diff options
author | Matthias Vogelgesang <matthias.vogelgesang@kit.edu> | 2012-02-03 16:09:56 +0100 |
---|---|---|
committer | Matthias Vogelgesang <matthias.vogelgesang@kit.edu> | 2012-02-03 16:09:56 +0100 |
commit | 0da06d904850330f583e1e8cdededcf6aa8cbe29 (patch) | |
tree | fb77f62ba768831ce6c4e9b4d2476e0867528050 | |
parent | 70e5dd5705d063119c2c0757082fd3a82c53ee71 (diff) | |
parent | b66531ac0b9d78a4540920922b0aad02a99b7a24 (diff) | |
download | uca-0da06d904850330f583e1e8cdededcf6aa8cbe29.tar.gz uca-0da06d904850330f583e1e8cdededcf6aa8cbe29.tar.bz2 uca-0da06d904850330f583e1e8cdededcf6aa8cbe29.tar.xz uca-0da06d904850330f583e1e8cdededcf6aa8cbe29.zip |
Merge
-rw-r--r-- | src/cameras/ipe.c | 13 | ||||
-rw-r--r-- | test/grab-async.c | 2 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/cameras/ipe.c b/src/cameras/ipe.c index 103d333..ba7eb59 100644 --- a/src/cameras/ipe.c +++ b/src/cameras/ipe.c @@ -164,17 +164,21 @@ static int event_callback(pcilib_event_id_t event_id, pcilib_event_info_t *info, struct uca_camera_priv *cam = (struct uca_camera_priv *) user; pcilib_t *handle = GET_HANDLE(cam); size_t error = 0; + void *buffer = pcilib_get_data(handle, event_id, PCILIB_EVENT_DATA, &error); - if (buffer == NULL) - return UCA_ERR_CAMERA | UCA_ERR_CALLBACK; + if (buffer == NULL) { + pcilib_trigger(handle, PCILIB_EVENT0, 0, NULL); + return PCILIB_STREAMING_CONTINUE; + } - enum uca_buffer_status status = cam->callback(info->seqnum, buffer, NULL, cam->user); + enum uca_buffer_status status = cam->callback(info->seqnum, buffer, NULL, cam->callback_user); if (status == UCA_BUFFER_RELEASE) pcilib_return_data(handle, event_id, PCILIB_EVENT_DATA, buffer); - return UCA_NO_ERROR; + pcilib_trigger(handle, PCILIB_EVENT0, 0, NULL); + return PCILIB_STREAMING_CONTINUE; } static uint32_t uca_ipe_register_callback(struct uca_camera_priv *cam, uca_cam_grab_callback cb, void *user) @@ -182,6 +186,7 @@ static uint32_t uca_ipe_register_callback(struct uca_camera_priv *cam, uca_cam_g if (cam->callback == NULL) { cam->callback = cb; cam->callback_user = user; + pcilib_trigger(GET_HANDLE(cam), PCILIB_EVENT0, 0, NULL); pcilib_stream(GET_HANDLE(cam), &event_callback, cam); return UCA_NO_ERROR; } diff --git a/test/grab-async.c b/test/grab-async.c index 35ae5a4..7bcd5f7 100644 --- a/test/grab-async.c +++ b/test/grab-async.c @@ -67,8 +67,8 @@ int main(int argc, char *argv[]) uca_cam_alloc(cam, 10); - uca_cam_register_callback(cam, &grab_callback, &props); uca_cam_start_recording(cam); + uca_cam_register_callback(cam, &grab_callback, &props); printf("grabbing for 1 second ... "); fflush(stdout); sleep(1); |