diff --git a/src/input/es_out.c b/src/input/es_out.c
index d663a642153bbb54019f9db4b6e8b5077a06971b..cde2a121eca826329e41a881dc033a09cc4a59ae 100644
--- a/src/input/es_out.c
+++ b/src/input/es_out.c
@@ -3660,15 +3660,17 @@ static int EsOutVaControlLocked(es_out_sys_t *p_sys, input_source_t *source,
         p_es->mouse_event_cb = va_arg( args, vlc_mouse_event );
         p_es->mouse_event_userdata = va_arg( args, void * );
 
-        if( p_es->p_dec && p_es->mouse_event_cb )
-            vlc_input_decoder_SetVoutMouseEvent( p_es->p_dec,
-                p_es->mouse_event_cb, p_es->mouse_event_userdata );
-        else /* fallback to player event */
+        if ( !p_es->mouse_event_cb )
         {
+            /* fallback to player event */
             p_es->mouse_event_cb = MouseEventCb;
             p_es->mouse_event_userdata = p_es;
         }
 
+        if( p_es->p_dec )
+            vlc_input_decoder_SetVoutMouseEvent( p_es->p_dec,
+                p_es->mouse_event_cb, p_es->mouse_event_userdata );
+
         return VLC_SUCCESS;
     }
     case ES_OUT_VOUT_ADD_OVERLAY: