From 2380c982802c8e404b7e4ea58ba74d22c8ab243a Mon Sep 17 00:00:00 2001 From: Matthias Vogelgesang Date: Mon, 5 Mar 2012 12:17:46 +0100 Subject: Fix error handling Obviously, unit tests pay off. --- src/uca-camera.c | 14 ++++++++++---- test/test-mock.c | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/uca-camera.c b/src/uca-camera.c index f517d87..a7b266a 100644 --- a/src/uca-camera.c +++ b/src/uca-camera.c @@ -211,12 +211,15 @@ void uca_camera_start_recording(UcaCamera *camera, GError **error) return; } - (*klass->start_recording)(camera, error); + GError *tmp_error = NULL; + (*klass->start_recording)(camera, &tmp_error); - if (error == NULL) { + if (tmp_error == NULL) { camera->priv->recording = TRUE; g_object_notify_by_pspec(G_OBJECT(camera), camera_properties[PROP_IS_RECORDING]); } + else + g_propagate_error(error, tmp_error); } void uca_camera_stop_recording(UcaCamera *camera, GError **error) @@ -234,12 +237,15 @@ void uca_camera_stop_recording(UcaCamera *camera, GError **error) return; } - (*klass->stop_recording)(camera, error); + GError *tmp_error = NULL; + (*klass->stop_recording)(camera, &tmp_error); - if (error == NULL) { + if (tmp_error == NULL) { camera->priv->recording = FALSE; g_object_notify_by_pspec(G_OBJECT(camera), camera_properties[PROP_IS_RECORDING]); } + else + g_propagate_error(error, tmp_error); } void uca_camera_set_grab_func(UcaCamera *camera, UcaCameraGrabFunc func) diff --git a/test/test-mock.c b/test/test-mock.c index ceb4b20..5831951 100644 --- a/test/test-mock.c +++ b/test/test-mock.c @@ -33,6 +33,7 @@ static void test_recording(Fixture *fixture, gconstpointer data) uca_camera_stop_recording(camera, &error); g_assert(error != NULL); + g_error_free(error); error = NULL; uca_camera_start_recording(camera, &error); -- cgit v1.2.3