mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-29 19:50:40 +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 */
|
||||
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);
|
||||
|
|
Loading…
Reference in a new issue