Index: Slim/Control/Request.pm =================================================================== --- Slim/Control/Request.pm (revision 33040) +++ Slim/Control/Request.pm (working copy) @@ -644,6 +644,7 @@ addDispatch(['playlist', 'pause', '_newvalue'], [1, 0, 0, undef]); addDispatch(['playlist', 'stop'], [1, 0, 0, undef]); addDispatch(['rescan', 'done'], [0, 0, 0, undef]); + addDispatch(['schema', 'initialized'], [0, 0, 0, undef]); addDispatch(['library', 'changed', '_newvalue'], [0, 0, 0, undef]); addDispatch(['unknownir', '_ircode', '_time'], [1, 0, 0, undef]); addDispatch(['prefset', '_namespace', '_prefname', '_newvalue'], [0, 0, 1, undef]); Index: Slim/Menu/BrowseLibrary.pm =================================================================== --- Slim/Menu/BrowseLibrary.pm (revision 33040) +++ Slim/Menu/BrowseLibrary.pm (working copy) @@ -290,6 +290,16 @@ my $class = shift; main::DEBUGLOG && $log->is_debug && $log->debug('init'); + + Slim::Control::Request::unsubscribe( \&_delayedInit, [['schema'], ['initialized']] ); + + return if $_initialized; + + if (!Slim::Schema::hasLibrary()) { + main::DEBUGLOG && $log->is_debug && $log->debug('Schema not ready yet - delay browse initialization'); + Slim::Control::Request::subscribe( \&_delayedInit, [['schema'], ['initialized']] ); + return; + } { no strict 'refs'; @@ -323,6 +333,10 @@ $_initialized = 1; } +sub _delayedInit { + __PACKAGE__->init(); +} + sub cliQuery { my $request = shift; Slim::Control::XMLBrowser::cliQuery( BROWSELIBRARY, \&_topLevel, $request ); Index: Slim/Schema.pm =================================================================== --- Slim/Schema.pm (revision 33040) +++ Slim/Schema.pm (working copy) @@ -262,6 +262,8 @@ } $initialized = 1; + + Slim::Control::Request::notifyFromArray(undef, ['schema', 'initialized']); } sub hasLibrary { Index: slimserver.pl =================================================================== --- slimserver.pl (revision 33040) +++ slimserver.pl (working copy) @@ -207,6 +207,7 @@ use Slim::Menu::PlaylistInfo; use Slim::Menu::FolderInfo; use Slim::Menu::GlobalSearch; +use Slim::Menu::BrowseLibrary; use Slim::Music::Info; use Slim::Music::Import; use Slim::Utils::OSDetect; @@ -578,11 +579,8 @@ Slim::Utils::AutoRescan->init(); } - if (Slim::Schema::hasLibrary()) { - main::INFOLOG && $log->info("Library Browser init..."); - require Slim::Menu::BrowseLibrary; - Slim::Menu::BrowseLibrary->init(); - } + main::INFOLOG && $log->info("Library Browser init..."); + Slim::Menu::BrowseLibrary->init(); # regular server has a couple more initial operations. main::INFOLOG && $log->info("Squeezebox Server persist playlists...");