new capture state for failed snapshots fixes non-disappearing spinner

This commit is contained in:
Andreas Frisch 2016-05-03 00:42:57 +02:00
parent 444d17b548
commit 636bfe5f35
2 changed files with 8 additions and 5 deletions

View file

@ -447,11 +447,13 @@ static void photo_booth_capture_thread_func (PhotoBooth *pb)
rfd[0].fd = READ_SOCKET (pb); rfd[0].fd = READ_SOCKET (pb);
rfd[0].events = POLLIN | POLLERR | POLLHUP | POLLPRI; rfd[0].events = POLLIN | POLLERR | POLLHUP | POLLPRI;
if (state == CAPTURE_INIT && !pb->cam_info) if (state == CAPTURE_INIT || state == CAPTURE_FAILED && !pb->cam_info)
{ {
if (photo_booth_cam_init (&pb->cam_info)) if (photo_booth_cam_init (&pb->cam_info))
{ {
GST_INFO_OBJECT (pb, "photo_booth_cam_inited @ %p", pb->cam_info); GST_INFO_OBJECT (pb, "photo_booth_cam_inited @ %p", pb->cam_info);
if (state == CAPTURE_FAILED)
photo_booth_window_set_spinner (priv->win, FALSE);
state = CAPTURE_VIDEO; state = CAPTURE_VIDEO;
g_main_context_invoke (NULL, (GSourceFunc) photo_booth_preview, pb); g_main_context_invoke (NULL, (GSourceFunc) photo_booth_preview, pb);
} }
@ -485,7 +487,7 @@ static void photo_booth_capture_thread_func (PhotoBooth *pb)
GST_ERROR_OBJECT (pb, "Movie capture error %d", gpret); GST_ERROR_OBJECT (pb, "Movie capture error %d", gpret);
if (gpret == -7) if (gpret == -7)
{ {
state = CAPTURE_INIT; state = CAPTURE_FAILED;
photo_booth_change_state (pb, PB_STATE_NONE); photo_booth_change_state (pb, PB_STATE_NONE);
photo_booth_cam_close (&pb->cam_info); photo_booth_cam_close (&pb->cam_info);
} }
@ -505,7 +507,7 @@ static void photo_booth_capture_thread_func (PhotoBooth *pb)
else if (ret == 0 && state == CAPTURE_PRETRIGGER) else if (ret == 0 && state == CAPTURE_PRETRIGGER)
{ {
gtk_label_set_text (priv->win->status, _("Focussing...")); gtk_label_set_text (priv->win->status, _("Focussing..."));
photo_booth_focus (pb->cam_info); // photo_booth_focus (pb->cam_info);
#if CAM_REINIT_BEFORE_SNAPSHOT #if CAM_REINIT_BEFORE_SNAPSHOT
photo_booth_cam_close (&pb->cam_info); photo_booth_cam_close (&pb->cam_info);
photo_booth_cam_init (&pb->cam_info); photo_booth_cam_init (&pb->cam_info);
@ -530,7 +532,7 @@ static void photo_booth_capture_thread_func (PhotoBooth *pb)
GST_ERROR_OBJECT (pb, "Taking photo failed!"); GST_ERROR_OBJECT (pb, "Taking photo failed!");
photo_booth_cam_close (&pb->cam_info); photo_booth_cam_close (&pb->cam_info);
photo_booth_change_state (pb, PB_STATE_NONE); photo_booth_change_state (pb, PB_STATE_NONE);
state = CAPTURE_INIT; state = CAPTURE_FAILED;
} }
} }
} }
@ -566,7 +568,7 @@ static void photo_booth_capture_thread_func (PhotoBooth *pb)
} }
else if (state == CAPTURE_PAUSED) else if (state == CAPTURE_PAUSED)
{ {
GST_DEBUG_OBJECT (pb, "captured thread paused... timeout. %s", photo_booth_state_get_name (priv->state)); GST_LOG_OBJECT (pb, "captured thread paused... timeout. %s", photo_booth_state_get_name (priv->state));
} }
} }

View file

@ -71,6 +71,7 @@ typedef enum
CAPTURE_PHOTO, CAPTURE_PHOTO,
CAPTURE_PAUSED, CAPTURE_PAUSED,
CAPTURE_STOP, CAPTURE_STOP,
CAPTURE_FAILED,
} PhotoboothCaptureThreadState; } PhotoboothCaptureThreadState;
typedef enum typedef enum