Index: server/Slim/Utils/OS/SqueezeOS.pm =================================================================== --- server/Slim/Utils/OS/SqueezeOS.pm (revision 30181) +++ server/Slim/Utils/OS/SqueezeOS.pm (working copy) @@ -108,7 +108,12 @@ my $playerInit = $1; if ($playerInit =~ /name="(.*?)"/i) { - Slim::Utils::Prefs::preferences('server')->set('libraryname', $1); + my $prefs = Slim::Utils::Prefs::preferences('server'); + $prefs->set('libraryname', $1); + + # can't handle this change using a changehandler, + # as this in turn updates the pref again + _updateLibraryname($prefs); } } }, @@ -121,6 +126,9 @@ _checkMediaAtStartup($prefs); $prefs->setChange( \&_onAudiodirChange, 'audiodir', 'FIRST' ); + $prefs->setChange( sub { + _updateLibraryname($prefs); + }, 'language', 'audiodir' ); if ( !main::SCANNER ) { @@ -136,7 +144,7 @@ $i = Linux::Inotify2->new() or die "Unable to start Inotify watcher: $!"; - $i->watch(SQUEEZEPLAY_PREFS, IN_MOVE() | IN_MODIFY(), sub { + $i->watch(SQUEEZEPLAY_PREFS, Linux::Inotify2::IN_MOVE() | Linux::Inotify2::IN_MODIFY(), sub { my $ev = shift; my $file = $ev->fullname || ''; @@ -158,6 +166,24 @@ } } +# add media name to the libraryname +sub _updateLibraryname { + require Slim::Utils::Strings; + + my $prefs = $_[0]; + my $libraryname = $prefs->get('libraryname'); + + # remove media name + $libraryname =~ s/ \(.*?(?:USB|SD).*?\)$//i; + + my $audiodir = $prefs->get('audiodir'); + if ( $audiodir && $audiodir =~ m{/(mmcblk|sd[a-z]\d)}i ) { + $libraryname = sprintf( "%s (%s)", $libraryname, Slim::Utils::Strings::getString($1 =~ /mmc/ ? 'SD' : 'USB') ); + } + + $prefs->set('libraryname', $libraryname); +} + sub _syncPrefs { my $file = shift;