]> git.sesse.net Git - vlc/blobdiff - modules/video_filter/osdmenu.c
OSDMenu: Use FIND_PARENT instead of FIND_ANYWHERE when applicable.
[vlc] / modules / video_filter / osdmenu.c
index 25e5f3b8e725fed64285e2e5808e51d31c2595f4..751dbf04c3c56b9d620e2ac1efcc685bced2c91e 100644 (file)
@@ -113,6 +113,16 @@ static int MouseEvent( vlc_object_t *, char const *,
 #define OSD_UPDATE_MAX     1000
 
 vlc_module_begin ()
+    set_capability( "sub filter", 100 )
+    set_description( N_("On Screen Display menu") )
+    set_shortname( N_("OSD menu") )
+    add_shortcut( "osdmenu" )
+
+    set_category( CAT_VIDEO )
+    set_subcategory( SUBCAT_VIDEO_SUBPIC )
+
+    set_callbacks( CreateFilter, DestroyFilter )
+
     add_integer( OSD_CFG "x", -1, NULL, POSX_TEXT, POSX_LONGTEXT, false )
     add_integer( OSD_CFG "y", -1, NULL, POSY_TEXT, POSY_LONGTEXT, false )
     add_integer( OSD_CFG "position", 8, NULL, POS_TEXT, POS_LONGTEXT,
@@ -130,15 +140,6 @@ vlc_module_begin ()
     add_integer_with_range( OSD_CFG "alpha", 255, 0, 255, NULL,
         OSD_ALPHA_TEXT, OSD_ALPHA_LONGTEXT, true )
 
-    set_capability( "sub filter", 100 )
-    set_description( N_("On Screen Display menu") )
-    set_shortname( N_("OSD menu") )
-    add_shortcut( "osdmenu" )
-
-    set_category( CAT_VIDEO )
-    set_subcategory( SUBCAT_VIDEO_SUBPIC )
-
-    set_callbacks( CreateFilter, DestroyFilter )
 vlc_module_end ()
 
 /*****************************************************************************
@@ -218,6 +219,7 @@ static int CreateFilter ( vlc_object_t *p_this )
     if( p_sys->p_menu == NULL )
         goto error;
 
+    /* FIXME: this plugin is not at all thread-safe w.r.t. callbacks */
     p_sys->p_menu->i_position = p_sys->i_position;
 
     /* Check if menu position was overridden */
@@ -251,7 +253,7 @@ static int CreateFilter ( vlc_object_t *p_this )
     /* Attach subpicture filter callback */
     p_filter->pf_sub_filter = Filter;
 
-    p_sys->p_vout = vlc_object_find( p_this, VLC_OBJECT_VOUT, FIND_ANYWHERE );
+    p_sys->p_vout = vlc_object_find( p_this, VLC_OBJECT_VOUT, FIND_PARENT );
     if( p_sys->p_vout )
     {
         var_AddCallback( p_sys->p_vout, "mouse-x",
@@ -289,7 +291,7 @@ static void DestroyFilter( vlc_object_t *p_this )
     var_DelCallback( p_filter, OSD_CFG "update", OSDMenuCallback, p_sys );
     var_DelCallback( p_filter, OSD_CFG "alpha", OSDMenuCallback, p_sys );
 
-    if( p_sys )
+    if( p_sys ) /* FIXME: <-- WTF??? what about the 4 ones above? */
     {
         var_DelCallback( p_sys->p_menu, "osd-menu-update",
                          OSDMenuUpdateEvent, p_filter );