diff options
author | Matthias Vogelgesang <matthias.vogelgesang@kit.edu> | 2014-02-13 14:54:34 +0100 |
---|---|---|
committer | Matthias Vogelgesang <matthias.vogelgesang@kit.edu> | 2014-02-14 16:17:16 +0100 |
commit | 961e60a89bc60e760707892539ccd7c6d283ef01 (patch) | |
tree | 6e002e95258e4e736c58f5187ff93cf83579541b /bin | |
parent | f15d21389a81f8df36b00113aed5c81d27143861 (diff) | |
download | libuca-961e60a89bc60e760707892539ccd7c6d283ef01.tar.gz libuca-961e60a89bc60e760707892539ccd7c6d283ef01.tar.bz2 libuca-961e60a89bc60e760707892539ccd7c6d283ef01.tar.xz libuca-961e60a89bc60e760707892539ccd7c6d283ef01.zip |
Fix #28: Add buffered recording to base class
This change adds new properties ::buffered and ::num-buffers to the base class.
If ::buffered is TRUE, uca_camera_start_recording will spawn a new thread which
will call the camera-specific grab. Any call to uca_camera_grab will return the
next item from the ring buffer.
Diffstat (limited to 'bin')
-rw-r--r-- | bin/gui/control.c | 2 | ||||
-rw-r--r-- | bin/tools/grab.c | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/bin/gui/control.c b/bin/gui/control.c index d4191a1..b02c42d 100644 --- a/bin/gui/control.c +++ b/bin/gui/control.c @@ -752,6 +752,7 @@ record_frames (gpointer args) buffer = uca_ring_buffer_get_write_pointer (data->buffer); uca_camera_grab (data->camera, buffer, NULL); + uca_ring_buffer_write_advance (data->buffer); if (error == NULL) { n_frames++; @@ -949,6 +950,7 @@ download_frames (ThreadData *data) while (error == NULL) { buffer = uca_ring_buffer_get_write_pointer (data->buffer); uca_camera_grab (data->camera, buffer, &error); + uca_ring_buffer_write_advance (data->buffer); gdk_threads_enter (); gtk_adjustment_set_value (data->download_adjustment, current_frame++); diff --git a/bin/tools/grab.c b/bin/tools/grab.c index a3dd544..11f8a83 100644 --- a/bin/tools/grab.c +++ b/bin/tools/grab.c @@ -170,6 +170,7 @@ record_frames (UcaCamera *camera, Options *opts) gdouble elapsed; uca_camera_grab (camera, uca_ring_buffer_get_write_pointer (buffer), &error); + uca_ring_buffer_write_advance (buffer); if (error != NULL) return error; |