update components
This commit is contained in:
parent
58cebe2486
commit
93ce8f975b
8 changed files with 232 additions and 82 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
95
dashboard-ui/bower_components/emby-webcomponents/playback/playersettingsmenu.js
vendored
Normal file
95
dashboard-ui/bower_components/emby-webcomponents/playback/playersettingsmenu.js
vendored
Normal file
|
@ -0,0 +1,95 @@
|
|||
define(['actionsheet', 'datetime', 'playbackManager', 'globalize', 'appSettings', 'qualityoptions'], function (actionsheet, datetime, playbackManager, globalize, appSettings, qualityoptions) {
|
||||
'use strict';
|
||||
|
||||
function showQualityMenu(player, btn) {
|
||||
|
||||
var videoStream = playbackManager.currentMediaSource(player).MediaStreams.filter(function (stream) {
|
||||
return stream.Type === "Video";
|
||||
})[0];
|
||||
var videoWidth = videoStream ? videoStream.Width : null;
|
||||
|
||||
var options = qualityoptions.getVideoQualityOptions(playbackManager.getMaxStreamingBitrate(player), videoWidth);
|
||||
|
||||
//if (isStatic) {
|
||||
// options[0].name = "Direct";
|
||||
//}
|
||||
|
||||
var menuItems = options.map(function (o) {
|
||||
|
||||
var opt = {
|
||||
name: o.name,
|
||||
id: o.bitrate
|
||||
};
|
||||
|
||||
if (o.selected) {
|
||||
opt.selected = true;
|
||||
}
|
||||
|
||||
return opt;
|
||||
});
|
||||
|
||||
var selectedId = options.filter(function (o) {
|
||||
return o.selected;
|
||||
});
|
||||
|
||||
selectedId = selectedId.length ? selectedId[0].bitrate : null;
|
||||
|
||||
return actionsheet.show({
|
||||
items: menuItems,
|
||||
positionTo: btn
|
||||
|
||||
}).then(function (id) {
|
||||
var bitrate = parseInt(id);
|
||||
if (bitrate !== selectedId) {
|
||||
playbackManager.setMaxStreamingBitrate(bitrate, player);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function showSettingsMenu(player, btn) {
|
||||
|
||||
}
|
||||
|
||||
function show(options) {
|
||||
|
||||
var player = options.player;
|
||||
var mediaType = options.mediaType;
|
||||
return showQualityMenu(player, options.positionTo);
|
||||
|
||||
//var menuItems = [];
|
||||
|
||||
//menuItems.push({
|
||||
// name: globalize.translate('sharedcomponents#Quality'),
|
||||
// id: 'quality'
|
||||
//});
|
||||
|
||||
//menuItems.push({
|
||||
// name: globalize.translate('sharedcomponents#Settings'),
|
||||
// id: 'settings'
|
||||
//});
|
||||
|
||||
//return actionsheet.show({
|
||||
|
||||
// items: menuItems,
|
||||
// positionTo: options.positionTo
|
||||
|
||||
//}).then(function (id) {
|
||||
|
||||
// switch (id) {
|
||||
|
||||
// case 'quality':
|
||||
// return showQualityMenu(player, options.positionTo);
|
||||
// case 'settings':
|
||||
// return showSettingsMenu(player, options.positionTo);
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
|
||||
// return Promise.reject();
|
||||
//});
|
||||
}
|
||||
|
||||
return {
|
||||
show: show
|
||||
};
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue