Skip to content
Snippets Groups Projects
Commit 87ee4787 authored by Rafaël Carré's avatar Rafaël Carré
Browse files

* #6326: stop rendering timer

parent f45fb522
No related branches found
No related tags found
No related merge requests found
...@@ -348,7 +348,7 @@ align(int value) ...@@ -348,7 +348,7 @@ align(int value)
return (value + 3) &~ 3; return (value + 3) &~ 3;
} }
static void static gboolean
readFrameFromShm(VideoPreviewPrivate *priv) readFrameFromShm(VideoPreviewPrivate *priv)
{ {
int width = priv->width; int width = priv->width;
...@@ -358,20 +358,20 @@ readFrameFromShm(VideoPreviewPrivate *priv) ...@@ -358,20 +358,20 @@ readFrameFromShm(VideoPreviewPrivate *priv)
ClutterActor *texture = priv->texture; ClutterActor *texture = priv->texture;
if (sem_set_id == -1) if (sem_set_id == -1)
return; return FALSE;
if (sem_wait(sem_set_id) == -1) { if (sem_wait(sem_set_id) == -1) {
if (errno != EAGAIN) { if (errno != EAGAIN) {
g_print("Could not read from shared memory!\n"); g_print("Could not read from shared memory!\n");
perror("shm: "); perror("shm: ");
} }
return; return FALSE;
} }
if (priv->using_clutter) { if (priv->using_clutter) {
if (strcmp(priv->format, "rgb24")) { if (strcmp(priv->format, "rgb24")) {
g_print("clutter render: Unknown pixel format `%s'\n", priv->format); g_print("clutter render: Unknown pixel format `%s'\n", priv->format);
return; return FALSE;
} }
clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE(texture), clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE(texture),
...@@ -386,7 +386,7 @@ readFrameFromShm(VideoPreviewPrivate *priv) ...@@ -386,7 +386,7 @@ readFrameFromShm(VideoPreviewPrivate *priv)
} else { } else {
if (strcmp(priv->format, "bgra")) { if (strcmp(priv->format, "bgra")) {
g_print("cairo render: Unknown pixel format `%s'\n", priv->format); g_print("cairo render: Unknown pixel format `%s'\n", priv->format);
return; return FALSE;
} }
cairo_format_t format = CAIRO_FORMAT_RGB24; cairo_format_t format = CAIRO_FORMAT_RGB24;
...@@ -409,6 +409,8 @@ readFrameFromShm(VideoPreviewPrivate *priv) ...@@ -409,6 +409,8 @@ readFrameFromShm(VideoPreviewPrivate *priv)
cairo_surface_destroy(surface); cairo_surface_destroy(surface);
} }
} }
return TRUE;
} }
static gboolean static gboolean
...@@ -417,11 +419,14 @@ updateTexture(gpointer data) ...@@ -417,11 +419,14 @@ updateTexture(gpointer data)
VideoPreview *preview = (VideoPreview *) data; VideoPreview *preview = (VideoPreview *) data;
VideoPreviewPrivate *priv = VIDEO_PREVIEW_GET_PRIVATE(preview); VideoPreviewPrivate *priv = VIDEO_PREVIEW_GET_PRIVATE(preview);
if (!priv || !priv->shm_buffer) gboolean ret = priv && priv->shm_buffer && readFrameFromShm(priv);
return FALSE;
readFrameFromShm(priv); if (!ret) {
return TRUE; video_preview_stop(data);
g_object_notify_by_pspec(G_OBJECT(data), properties[PROP_RUNNING]);
}
return ret;
} }
/** /**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment