From b66531ac0b9d78a4540920922b0aad02a99b7a24 Mon Sep 17 00:00:00 2001 From: Matthias Vogelgesang Date: Fri, 3 Feb 2012 16:08:50 +0100 Subject: Fix up callback --- src/cameras/ipe.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/cameras/ipe.c') 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; } -- cgit v1.2.3