]> git.sesse.net Git - vlc/commitdiff
Fix memleaks and some cleanup.
authorJean-Paul Saman <jpsaman@videolan.org>
Wed, 30 May 2007 12:47:26 +0000 (12:47 +0000)
committerJean-Paul Saman <jpsaman@videolan.org>
Wed, 30 May 2007 12:47:26 +0000 (12:47 +0000)
src/osd/osd.c
src/osd/osd_parser.c

index 75f6cc4a30515d2c28dbbd75828fa16b4f92ec7a..7d8ada95832be416721e8df2227441a0d0fdf2ca 100644 (file)
@@ -65,7 +65,8 @@ osd_menu_t *__osd_MenuCreate( vlc_object_t *p_this, const char *psz_file )
     var_Get( p_this->p_libvlc, "osd_mutex", &lockval );
     vlc_mutex_lock( lockval.p_address );
 
-    if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )
+    p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE );
+    if( p_osd == NULL )
     {
         vlc_value_t val;
 
@@ -88,11 +89,14 @@ osd_menu_t *__osd_MenuCreate( vlc_object_t *p_this, const char *psz_file )
         p_osd->i_width  = p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_pitch;
         p_osd->i_height = p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_lines;
 
-        /* Update the volume state images to match the current volume */
-        i_volume = config_GetInt( p_this, "volume" );
-        i_steps = osd_VolumeStep( p_this, i_volume, p_osd->p_state->p_volume->i_ranges );
-        p_osd->p_state->p_volume->p_current_state = osd_VolumeStateChange( p_osd->p_state->p_volume->p_states, i_steps );
-
+        if( p_osd->p_state->p_volume )
+        {
+            /* Update the volume state images to match the current volume */
+            i_volume = config_GetInt( p_this, "volume" );
+            i_steps = osd_VolumeStep( p_this, i_volume, p_osd->p_state->p_volume->i_ranges );
+            p_osd->p_state->p_volume->p_current_state = osd_VolumeStateChange(
+                                    p_osd->p_state->p_volume->p_states, i_steps );
+        }
         /* Initialize OSD state */
         osd_UpdateState( p_osd->p_state, p_osd->i_x, p_osd->i_y,
                          p_osd->i_width, p_osd->i_height, NULL );
@@ -198,7 +202,8 @@ void __osd_MenuShow( vlc_object_t *p_this )
     osd_button_t *p_button = NULL;
     vlc_value_t lockval;
 
-    if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )
+    p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE );
+    if( p_osd == NULL )
     {
         msg_Err( p_this, "osd_MenuNext failed" );
         return;
@@ -239,7 +244,8 @@ void __osd_MenuHide( vlc_object_t *p_this )
     osd_menu_t *p_osd = NULL;
     vlc_value_t lockval;
 
-    if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )
+    p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE );
+    if( p_osd == NULL )
     {
         msg_Err( p_this, "osd_MenuNext failed" );
         return;
@@ -266,7 +272,8 @@ void __osd_MenuActivate( vlc_object_t *p_this )
     osd_button_t *p_button = NULL;
     vlc_value_t lockval;
 
-    if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )
+    p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE );
+    if( p_osd == NULL )
     {
         msg_Err( p_this, "osd_MenuNext failed" );
         return;
@@ -328,7 +335,8 @@ void __osd_MenuNext( vlc_object_t *p_this )
     osd_button_t *p_button = NULL;
     vlc_value_t lockval;
 
-    if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )
+    p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE );
+    if( p_osd == NULL )
     {
         msg_Err( p_this, "osd_MenuNext failed" );
         return;
@@ -378,7 +386,8 @@ void __osd_MenuPrev( vlc_object_t *p_this )
     osd_button_t *p_button = NULL;
     vlc_value_t lockval;
 
-    if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )
+    p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE );
+    if( p_osd == NULL )
     {
         msg_Err( p_this, "osd_MenuPrev failed" );
         return;
@@ -430,8 +439,8 @@ void __osd_MenuUp( vlc_object_t *p_this )
 #if defined(OSD_MENU_DEBUG)
     vlc_value_t val;
 #endif
-
-    if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )
+    p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE );
+    if( p_osd == NULL )
     {
         msg_Err( p_this, "osd_MenuDown failed" );
         return;
@@ -502,7 +511,8 @@ void __osd_MenuDown( vlc_object_t *p_this )
     vlc_value_t val;
 #endif
 
-    if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )
+    p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE );
+    if( p_osd == NULL )
     {
         msg_Err( p_this, "osd_MenuDown failed" );
         return;
@@ -587,33 +597,37 @@ void __osd_Volume( vlc_object_t *p_this )
     int i_volume = 0;
     int i_steps = 0;
 
-    if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )
+    p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE );
+    if( p_osd == NULL )
     {
         msg_Err( p_this, "OSD menu volume update failed" );
         return;
     }
 
-    var_Get( p_this->p_libvlc, "osd_mutex", &lockval );
-    vlc_mutex_lock( lockval.p_address );
-
-    p_button = p_osd->p_state->p_volume;
-    if( p_osd->p_state->p_volume ) 
-        p_osd->p_state->p_visible = p_osd->p_state->p_volume;
-    if( p_button && p_button->b_range )
+    if( p_osd->p_state && p_osd->p_state->p_volume )
     {
-        /* Update the volume state images to match the current volume */
-        i_volume = config_GetInt( p_this, "volume" );
-        i_steps = osd_VolumeStep( p_this, i_volume, p_button->i_ranges );
-        p_button->p_current_state = osd_VolumeStateChange( p_button->p_states, i_steps );
+        var_Get( p_this->p_libvlc, "osd_mutex", &lockval );
+        vlc_mutex_lock( lockval.p_address );
 
-        osd_UpdateState( p_osd->p_state,
-                p_button->i_x, p_button->i_y,
-                p_button->p_current_state->p_pic->p[Y_PLANE].i_visible_pitch,
-                p_button->p_current_state->p_pic->p[Y_PLANE].i_visible_lines,
-                p_button->p_current_state->p_pic );
-        osd_SetMenuUpdate( p_osd, VLC_TRUE );
-        osd_SetMenuVisible( p_osd, VLC_TRUE );
+        p_button = p_osd->p_state->p_volume;
+        if( p_osd->p_state->p_volume ) 
+            p_osd->p_state->p_visible = p_osd->p_state->p_volume;
+        if( p_button && p_button->b_range )
+        {
+            /* Update the volume state images to match the current volume */
+            i_volume = config_GetInt( p_this, "volume" );
+            i_steps = osd_VolumeStep( p_this, i_volume, p_button->i_ranges );
+            p_button->p_current_state = osd_VolumeStateChange( p_button->p_states, i_steps );
+
+            osd_UpdateState( p_osd->p_state,
+                    p_button->i_x, p_button->i_y,
+                    p_button->p_current_state->p_pic->p[Y_PLANE].i_visible_pitch,
+                    p_button->p_current_state->p_pic->p[Y_PLANE].i_visible_lines,
+                    p_button->p_current_state->p_pic );
+            osd_SetMenuUpdate( p_osd, VLC_TRUE );
+            osd_SetMenuVisible( p_osd, VLC_TRUE );
+        }
+        vlc_object_release( (vlc_object_t*) p_osd );
+        vlc_mutex_unlock( lockval.p_address );
     }
-    vlc_object_release( (vlc_object_t*) p_osd );
-    vlc_mutex_unlock( lockval.p_address );
 }
index 7461204634e16ad1aae415cc84119bc825400c10..f2d9ca80c7c77b66d45ffd9b3a250fb368abd753 100644 (file)
@@ -88,8 +88,12 @@ static osd_menu_t *osd_MenuNew( osd_menu_t *p_menu, const char *psz_path, int i_
 
     p_menu->p_state = (osd_menu_state_t *) malloc( sizeof( osd_menu_state_t ) );
     if( !p_menu->p_state )
+    {
         msg_Err( p_menu, "Memory allocation for OSD Menu state failed" );
+        return NULL;
+    }
 
+    memset(p_menu->p_state, 0, sizeof(osd_menu_state_t));
     if( psz_path != NULL )
         p_menu->psz_path = strdup( psz_path );
     else