if( *newval.psz_string )
{
- p_object = vlc_object_get( p_this, atoi(newval.psz_string) );
+ char *end;
+ int i_id = strtol( newval.psz_string, &end, 0 );
+ if( end != newval.psz_string )
+ p_object = vlc_object_get( p_this, i_id );
+ else
+ {
+ /* try using the object's name to find it */
+ vlc_object_t *p_libvlc = vlc_object_get( p_this, 1 );
+ if( p_libvlc )
+ {
+ /* Look in p_libvlc's children tree */
+ p_object = vlc_object_find_name( p_libvlc,
+ newval.psz_string,
+ FIND_CHILD );
+ vlc_object_release( p_libvlc );
+ }
+ if( !p_object )
+ {
+ /* If it's not in libvlc, look in libvlc_global (== p_this) */
+ p_object = vlc_object_find_name( p_this,
+ newval.psz_string,
+ FIND_CHILD );
+ }
+ }
if( !p_object )
{