diff options
author | Matthias Vogelgesang <matthias.vogelgesang@kit.edu> | 2012-02-03 16:08:50 +0100 |
---|---|---|
committer | Matthias Vogelgesang <matthias.vogelgesang@kit.edu> | 2012-02-03 16:08:50 +0100 |
commit | b66531ac0b9d78a4540920922b0aad02a99b7a24 (patch) | |
tree | 9f691b0972158cee2b808a00081ed63a833dadfe /src/cameras | |
parent | 3994e7e9e476bc575b14a1b1705f1cfa65e1ae6c (diff) | |
download | libuca-b66531ac0b9d78a4540920922b0aad02a99b7a24.tar.gz libuca-b66531ac0b9d78a4540920922b0aad02a99b7a24.tar.bz2 libuca-b66531ac0b9d78a4540920922b0aad02a99b7a24.tar.xz libuca-b66531ac0b9d78a4540920922b0aad02a99b7a24.zip |
Fix up callback
Diffstat (limited to 'src/cameras')
-rw-r--r-- | src/cameras/ipe.c | 13 |
1 files changed, 9 insertions, 4 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; } |