close grooveFile instances at the correct time. closes #200

This commit is contained in:
Andrew Kelley 2014-04-23 19:39:52 -07:00
parent d17157fcc9
commit 92f0c80e9f

View file

@ -266,6 +266,8 @@ function Player(db, musicDirectory) {
this.lastEncodeItem = null; this.lastEncodeItem = null;
this.lastEncodePos = null; this.lastEncodePos = null;
this.expectHeaders = true; this.expectHeaders = true;
this.playlistItemDeleteQueue = [];
} }
Player.prototype.initialize = function(cb) { Player.prototype.initialize = function(cb) {
@ -1116,10 +1118,7 @@ Player.prototype.removePlaylistItems = function(ids) {
delCmds.push({type: 'del', key: PLAYLIST_KEY_PREFIX + id}); delCmds.push({type: 'del', key: PLAYLIST_KEY_PREFIX + id});
if (item.grooveFile) closeFile(item.grooveFile); if (item.grooveFile) this.playlistItemDeleteQueue.push(item);
// we set this so that any callbacks that return which were trying to
// set the grooveItem can check if the item got deleted
item.deleted = true;
if (item === this.currentTrack) { if (item === this.currentTrack) {
this.currentTrack = null; this.currentTrack = null;
currentTrackChanged = true; currentTrackChanged = true;
@ -1597,11 +1596,23 @@ function playlistChanged(self) {
self.pausedTime = 0; self.pausedTime = 0;
} }
checkUpdateGroovePlaylist(self); checkUpdateGroovePlaylist(self);
performGrooveFileDeletes(self);
self.checkDynamicMode(); self.checkDynamicMode();
self.emit('playlistUpdate'); self.emit('playlistUpdate');
} }
function performGrooveFileDeletes(self) {
while (self.playlistItemDeleteQueue.length) {
var item = self.playlistItemDeleteQueue.shift();
// we set this so that any callbacks that return which were trying to
// set the grooveItem can check if the item got deleted
item.deleted = true;
closeFile(item.grooveFile);
}
}
function preloadFile(self, track) { function preloadFile(self, track) {
var relPath = self.libraryIndex.trackTable[track.key].file; var relPath = self.libraryIndex.trackTable[track.key].file;
var fullPath = path.join(self.musicDirectory, relPath); var fullPath = path.join(self.musicDirectory, relPath);