]> git.sesse.net Git - vlc/commitdiff
OpenGL: initialize all variables before creating the provider
authorRémi Denis-Courmont <remi@remlab.net>
Mon, 13 Jul 2009 18:11:17 +0000 (21:11 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Mon, 13 Jul 2009 18:12:16 +0000 (21:12 +0300)
modules/video_output/opengl.c

index 483fb2feb566609ec9e6c5c1cfb31fd1b1059bc4..d6592a943fd85170057012d3dc14dff1c7f1488c 100644 (file)
@@ -196,26 +196,6 @@ static int CreateVout( vlc_object_t *p_this )
     var_Create( p_sys->p_vout, "video-deco",
                 VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
 
-    psz = var_CreateGetString( p_vout, "opengl-provider" );
-    p_sys->p_vout->p_module =
-        module_need( p_sys->p_vout, "opengl provider", psz, false );
-    free( psz );
-    if( p_sys->p_vout->p_module == NULL )
-    {
-        msg_Warn( p_vout, "No OpenGL provider found" );
-        vlc_object_detach( p_sys->p_vout );
-        vlc_object_release( p_sys->p_vout );
-        free( p_sys );
-        return VLC_ENOOBJ;
-    }
-
-    p_vout->pf_init = Init;
-    p_vout->pf_end = End;
-    p_vout->pf_manage = Manage;
-    p_vout->pf_render = Render;
-    p_vout->pf_display = DisplayVideo;
-    p_vout->pf_control = Control;
-
     /* Forward events from the opengl provider */
     var_Create( p_sys->p_vout, "mouse-x", VLC_VAR_INTEGER );
     var_Create( p_sys->p_vout, "mouse-y", VLC_VAR_INTEGER );
@@ -238,6 +218,27 @@ static int CreateVout( vlc_object_t *p_this )
     var_AddCallback( p_vout, "autoscale", SendEvents, p_sys->p_vout );
     var_AddCallback( p_vout, "scale", SendEvents, p_sys->p_vout );
 
+    psz = var_CreateGetString( p_vout, "opengl-provider" );
+    p_sys->p_vout->p_module =
+        module_need( p_sys->p_vout, "opengl provider", psz, false );
+    free( psz );
+    if( p_sys->p_vout->p_module == NULL )
+    {
+        msg_Warn( p_vout, "No OpenGL provider found" );
+        vlc_object_detach( p_sys->p_vout );
+        /* no need for var_DelCallback here :-) */
+        vlc_object_release( p_sys->p_vout );
+        free( p_sys );
+        return VLC_ENOOBJ;
+    }
+
+    p_vout->pf_init = Init;
+    p_vout->pf_end = End;
+    p_vout->pf_manage = Manage;
+    p_vout->pf_render = Render;
+    p_vout->pf_display = DisplayVideo;
+    p_vout->pf_control = Control;
+
     return VLC_SUCCESS;
 }