update components

This commit is contained in:
Luke Pulverenti 2017-01-25 01:14:35 -05:00
parent 58cebe2486
commit 93ce8f975b
8 changed files with 232 additions and 82 deletions

View file

@ -1594,7 +1594,7 @@ define(['events', 'datetime', 'appSettings', 'pluginManager', 'userSettings', 'g
var player = currentPlayer;
if (player) {
player.destroy();
destroyPlayer(player);
}
setCurrentPlayerInternal(null);
@ -1604,6 +1604,11 @@ define(['events', 'datetime', 'appSettings', 'pluginManager', 'userSettings', 'g
});
}
function destroyPlayer(player) {
player.destroy();
releaseResourceLocks(player);
}
function runInterceptors(item, playOptions) {
return new Promise(function (resolve, reject) {
@ -2567,9 +2572,66 @@ define(['events', 'datetime', 'appSettings', 'pluginManager', 'userSettings', 'g
events.trigger(player, 'playbackstart', [state]);
events.trigger(self, 'playbackstart', [player, state]);
acquireResourceLocks(player, streamInfo.mediaType);
});
}
function acquireResourceLocks(player, mediaType) {
if (!player.isLocalPlayer) {
return;
}
var playerData = getPlayerData(player);
playerData.resourceLocks = playerData.resourceLocks || {};
var locks = playerData.resourceLocks;
ensureLock(locks, 'network');
ensureLock(locks, 'wake');
if (mediaType === 'Video') {
ensureLock(locks, 'screen');
}
}
function ensureLock(locks, resourceType) {
var prop = resourceType + 'Lock';
var existingLock = locks[prop];
if (existingLock) {
existingLock.acquire();
return;
}
require(['resourceLockManager'], function (resourceLockManager) {
resourceLockManager.request(resourceType).then(function (resourceLock) {
locks[prop] = resourceLock;
resourceLock.acquire();
});
});
}
function releaseResourceLocks(player) {
if (!player.isLocalPlayer) {
return;
}
var playerData = getPlayerData(player);
var locks = playerData.resourceLocks || {};
if (locks.wakeLock) {
locks.wakeLock.release();
}
if (locks.networkLock) {
locks.networkLock.release();
}
if (locks.screenLock) {
locks.screenLock.release();
}
}
function onPlaybackError(e, error) {
var player = this;
@ -2666,7 +2728,7 @@ define(['events', 'datetime', 'appSettings', 'pluginManager', 'userSettings', 'g
var newPlayer = nextItem ? getPlayer(nextItem.item, currentPlayOptions) : null;
if (newPlayer !== player) {
player.destroy();
destroyPlayer(player);
setCurrentPlayerInternal(null);
}