camerabin: Avoid assertion on image finishing

As imgbin_finished() is scheduled from g_idle_add, it might
be run a little later than expected, this can lead to the application
setting camerabin to ready before imgbin_finished() runs. In this case,
the processing counter goes to 0 and an assertion happens.

This patch relaxes the imgbin_finished() check on the processing
counter.
This commit is contained in:
Lasse Laukkanen 2010-12-02 05:39:14 -03:00 committed by Thiago Santos
parent 0a624d92cf
commit e96b8a7b5f

View file

@ -3923,7 +3923,17 @@ gst_camerabin_imgbin_finished (gpointer u_data)
/* Close the file of saved image */
gst_element_set_state (camera->imgbin, GST_STATE_READY);
GST_DEBUG_OBJECT (camera, "Image pipeline set to READY");
CAMERABIN_PROCESSING_DEC (camera);
g_mutex_lock (camera->capture_mutex);
if (camera->processing_counter) {
CAMERABIN_PROCESSING_DEC_UNLOCKED (camera);
} else {
/* Camerabin state change to READY may have reset processing counter to
* zero. This is possible as this functions is scheduled from g_idle_add
*/
GST_WARNING_OBJECT (camera, "camerabin has been forced to idle");
}
g_mutex_unlock (camera->capture_mutex);
/* Send image-done signal */
gst_camerabin_image_capture_continue (camera, filename);