diff --git a/sflphone-client-gnome/src/video/video_preview.c b/sflphone-client-gnome/src/video/video_preview.c
index a179adc31a47ae01d4052f503c3fcde772849ba0..723ce24765c4d74348830a97035155ab5533e06b 100644
--- a/sflphone-client-gnome/src/video/video_preview.c
+++ b/sflphone-client-gnome/src/video/video_preview.c
@@ -360,12 +360,12 @@ readFrameFromShm(VideoPreviewPrivate *priv)
     if (sem_set_id == -1)
         return FALSE;
 
-    if (sem_wait(sem_set_id) == -1) {
+    while (sem_wait(sem_set_id) == -1) {
       if (errno != EAGAIN) {
           g_print("Could not read from shared memory!\n");
           perror("shm: ");
+          return FALSE;
       }
-      return FALSE;
     }
 
     if (priv->using_clutter) {