- method handle_work_queue {
- while ( my $item = $work_queue->next ) {
- if ( $item eq 'playlist' ) {
- $self->queue_songs;
- }
- elsif ( $item eq 'database' ) {
- $db_needs_update = 1;
- $self->update_db;
- }
- elsif ( $item eq 'reload' ) {
- $log->notice("disconnecting and re-starting");
- $self->stop;
-
- my @exec =
- ( $0, '--config', $self->cfg_file, '--skip-db-update' );
- if ( $log->is_trace ) {
- $log->trace( 'exec '
- . join( ' ', map { /\s/ ? "'$_'" : $_ } @exec ) );
- }
- exec(@exec);
- }
- elsif ( $item eq 'quit' ) {
- $log->trace("quitting");
- $self->stop;
- exit 0;
- }
- else {
- die "Unknown work queue item '$item'";
- }
- }
+ $log->debug( "Adding " . join( ', ', map {"«$_»"} @paths ) );
+ # MPD needs raw bytes
+ utf8::encode($_) for @paths;
+ my @commands;
+ for (@paths) {
+ push @commands, [ add => "\"$_\"" ];