mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-04 14:38:48 +00:00
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:
parent
0a624d92cf
commit
e96b8a7b5f
1 changed files with 11 additions and 1 deletions
|
@ -3923,7 +3923,17 @@ gst_camerabin_imgbin_finished (gpointer u_data)
|
||||||
/* Close the file of saved image */
|
/* Close the file of saved image */
|
||||||
gst_element_set_state (camera->imgbin, GST_STATE_READY);
|
gst_element_set_state (camera->imgbin, GST_STATE_READY);
|
||||||
GST_DEBUG_OBJECT (camera, "Image pipeline set to 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 */
|
/* Send image-done signal */
|
||||||
gst_camerabin_image_capture_continue (camera, filename);
|
gst_camerabin_image_capture_continue (camera, filename);
|
||||||
|
|
Loading…
Reference in a new issue