public async Task <UpdateQueueMetadataResult> UpdateQueueMetadataAsync(List <FileMetadata> fileMetadatas) { var result = new UpdateQueueMetadataResult(); await Task.Run(() => { lock (this.queueLock) { if (this.Queue != null) { bool isQueueChanged = false; foreach (PlayableTrack track in this.queue.Values) { FileMetadata fmd = fileMetadatas.Select(f => f).Where(f => f.SafePath == track.SafePath).FirstOrDefault(); if (fmd != null) { this.UpdateTrackPlaybackInfo(track, fmd); isQueueChanged = true; } } if (isQueueChanged) { result.IsQueueChanged = true; } } } }); return(result); }
public async Task UpdateQueueMetadataAsync(List <FileMetadata> fileMetadatas) { UpdateQueueMetadataResult result = await this.queueManager.UpdateQueueMetadataAsync(fileMetadatas); // Raise events if (result.IsPlayingTrackPlaybackInfoChanged) { this.PlayingTrackPlaybackInfoChanged(this, new EventArgs()); } if (result.IsPlayingTrackArtworkChanged) { this.PlayingTrackArtworkChanged(this, new EventArgs()); } if (result.IsQueueChanged) { this.QueueChanged(this, new EventArgs()); } }
public async Task <UpdateQueueMetadataResult> UpdateMetadataAsync(List <FileMetadata> fileMetadatas) { var result = new UpdateQueueMetadataResult(); await Task.Run(() => { lock (this.queueLock) { if (this.Queue != null) { foreach (PlayableTrack track in this.queue.Values) { FileMetadata fmd = fileMetadatas.Select(f => f).Where(f => f.SafePath == track.SafePath).FirstOrDefault(); if (fmd != null) { // Queue if (this.UpdateTrackPlaybackInfo(track, fmd)) { result.IsQueueChanged = true; // Playing track if (track.SafePath.Equals(this.currentTrack.Value.SafePath)) { result.IsPlayingTrackPlaybackInfoChanged = true; // Playing track artwork if (fmd.ArtworkData.IsValueChanged) { result.IsPlayingTrackArtworkChanged = true; } } } } } } } }); return(result); }