Пример #1
0
        protected void SetCurrentPlayerContext(Func <PlayerContext, int, bool> selector)
        {
            bool           changed = false;
            IPlayerContext newCurrentPlayerContext = null;

            ForEach((pc, slotIndex) =>
            {
                bool newVal = selector(pc, slotIndex);
                if (pc.IsCurrentPlayerContext != newVal)
                {
                    changed = true;
                    pc.IsCurrentPlayerContext = newVal;
                }
            });
            if (!changed)
            {
                return;
            }
            CleanupPlayerContexts();
            CheckMediaWorkflowStates_Async();
            PlayerContextManagerMessaging.SendPlayerContextManagerMessage(PlayerContextManagerMessaging.MessageType.CurrentPlayerChanged, newCurrentPlayerContext);
        }
        public IPlayerContext OpenAudioPlayerContext(Guid mediaModuleId, string name, bool concurrentVideo, Guid currentlyPlayingWorkflowStateId,
                                                     Guid fullscreenContentWorkflowStateId)
        {
            IOpenPlayerStrategy strategy      = GetOpenPlayerStrategy();
            IPlayerManager      playerManager = ServiceRegistration.Get <IPlayerManager>();

            lock (playerManager.SyncObj)
            {
                int currentPlayerSlotIndex;
                IPlayerSlotController slotController = strategy.PrepareAudioPlayerSlotController(playerManager, this, concurrentVideo, out currentPlayerSlotIndex);
                slotController.Closed += OnPlayerSlotControllerClosed;
                IPlayerContext result = new PlayerContext(slotController, mediaModuleId, name, AVType.Audio, currentlyPlayingWorkflowStateId, fullscreenContentWorkflowStateId);
                CleanupPlayerContexts();
                IList <IPlayerContext> playerContexts = PlayerContexts;
                int lastPlayerContextIndex            = playerContexts.Count - 1;
                if (currentPlayerSlotIndex > lastPlayerContextIndex)
                {
                    currentPlayerSlotIndex = lastPlayerContextIndex;
                }
                PlayerContextManagerMessaging.SendUpdatePlayerRolesMessage(playerContexts[currentPlayerSlotIndex], playerContexts[lastPlayerContextIndex]);
                return(result);
            }
        }