diff --git a/modules/visualization/goom.c b/modules/visualization/goom.c
index 1fa1878ecf56fcd7dd57884761444096bb338513..d499d84721e11ffbc49bba9dd3796e4aae8d394f 100644
--- a/modules/visualization/goom.c
+++ b/modules/visualization/goom.c
@@ -327,17 +327,9 @@ static void *Thread( void *p_thread_data )
         plane = goom_update( p_plugin_info, p_data, 0, 0.0,
                              NULL, NULL );
 
-        while( !( p_pic = vout_GetPicture( p_thread->p_vout ) ) )
-        {
-            vlc_mutex_lock( &p_thread->lock );
-            bool b_exit = p_thread->b_exit;
-            vlc_mutex_unlock( &p_thread->lock );
-            if( b_exit )
-                break;
-            msleep( VOUT_OUTMEM_SLEEP );
-        }
-
-        if( p_pic == NULL ) break;
+        p_pic = vout_GetPicture( p_thread->p_vout );
+        if( unlikely(p_pic == NULL) )
+            continue;
 
         memcpy( p_pic->p[0].p_pixels, plane, p_thread->i_width * p_thread->i_height * 4 );