Browse Source

vlc_arrays: add vlc_dictionary_is_empty

avoids walking every key/entry
pull/58/head
Francois Cartegnie 9 years ago
parent
commit
68588c1b84
  1. 10
      include/vlc_arrays.h
  2. 2
      modules/codec/ttml/substtml.c
  3. 6
      modules/control/dbus/dbus.c
  4. 3
      src/test/dictionary.c

10
include/vlc_arrays.h

@ -473,6 +473,16 @@ vlc_dictionary_keys_count( const vlc_dictionary_t * p_dict )
return count;
}
static inline bool
vlc_dictionary_is_empty( const vlc_dictionary_t * p_dict )
{
if( p_dict->p_entries )
for( int i = 0; i < p_dict->i_size; i++ )
if( p_dict->p_entries[i] )
return false;
return true;
}
static inline char **
vlc_dictionary_all_keys( const vlc_dictionary_t * p_dict )
{

2
modules/codec/ttml/substtml.c

@ -519,7 +519,7 @@ static ttml_style_t * InheritTTMLStyles( ttml_context_t *p_ctx, tt_node_t *p_nod
DictMergeWithRegionID( p_ctx, psz_regionid, &merged );
}
if( vlc_dictionary_keys_count( &merged ) && (p_ttml_style = ttml_style_New()) )
if( !vlc_dictionary_is_empty( &merged ) && (p_ttml_style = ttml_style_New()) )
{
DictToTTMLStyle( &merged, p_ttml_style );
}

6
modules/control/dbus/dbus.c

@ -616,13 +616,13 @@ static void ProcessEvents( intf_thread_t *p_intf,
free( p_events[i] );
}
if( vlc_dictionary_keys_count( &player_properties ) )
if( !vlc_dictionary_is_empty( &player_properties ) )
PlayerPropertiesChangedEmit( p_intf, &player_properties );
if( vlc_dictionary_keys_count( &tracklist_properties ) )
if( !vlc_dictionary_is_empty( &tracklist_properties ) )
TrackListPropertiesChangedEmit( p_intf, &tracklist_properties );
if( vlc_dictionary_keys_count( &root_properties ) )
if( !vlc_dictionary_is_empty( &root_properties ) )
RootPropertiesChangedEmit( p_intf, &root_properties );
vlc_dictionary_clear( &player_properties, NULL, NULL );

3
src/test/dictionary.c

@ -74,6 +74,7 @@ int main (void)
vlc_dictionary_init( &dict, 0 );
assert( vlc_dictionary_keys_count( &dict ) == 0 );
assert( vlc_dictionary_is_empty( &dict ) );
keys = vlc_dictionary_all_keys( &dict );
assert( keys && !keys[0] );
@ -89,6 +90,7 @@ int main (void)
assert( !vlc_dictionary_has_key(&dict, our_keys[j]) );
}
assert( !vlc_dictionary_is_empty( &dict ) );
test_dictionary_validity( &dict, our_keys, size );
vlc_dictionary_remove_value_for_key( &dict, our_keys[size-1], NULL, NULL );
@ -98,5 +100,6 @@ int main (void)
vlc_dictionary_clear( &dict, NULL, NULL );
assert( vlc_dictionary_keys_count( &dict ) == 0 );
assert( vlc_dictionary_is_empty( &dict ) );
return 0;
}

Loading…
Cancel
Save