コード例 #1
0
        protected void SetSlotState(PlayerSlotState slotState)
        {
            PlayerSlotState oldSlotState;

            lock (SyncObj)
            {
                if (slotState == _slotState)
                {
                    return;
                }
                if (slotState == PlayerSlotState.Inactive)
                {
                    _activationSequence++;
                }
                oldSlotState = _slotState;
                _slotState   = slotState;
            }
            InvokeSlotStateChanged(slotState); // Outside the lock
            lock (SyncObj)
            {
                if (oldSlotState == PlayerSlotState.Inactive && slotState != PlayerSlotState.Inactive)
                {
                    PlayerManagerMessaging.SendPlayerManagerPlayerMessage(PlayerManagerMessaging.MessageType.PlayerSlotActivated);
                }
                if (oldSlotState != PlayerSlotState.Inactive || slotState != PlayerSlotState.Stopped)
                {
                    // Suppress "PlayerStopped" message if slot was activated
                    switch (slotState)
                    {
                    case PlayerSlotState.Inactive:
                        PlayerManagerMessaging.SendPlayerMessage(PlayerManagerMessaging.MessageType.PlayerSlotDeactivated, this);
                        break;

                    case PlayerSlotState.Playing:
                        PlayerManagerMessaging.SendPlayerMessage(PlayerManagerMessaging.MessageType.PlayerSlotStarted, this);
                        break;
                        // Presentation.Players.PlayerSlotState.Stopped:
                        // this is no extra message, as we sent the PlayerSlotActivated message above
                    }
                }
            }
        }
コード例 #2
0
 public void SwitchSlots()
 {
     lock (_syncObj)
     {
         if (!_slots[PlayerManagerConsts.SECONDARY_SLOT].IsActive)
         {
             // Don't move an inactive player slot to the primary slot index
             return;
         }
         PlayerSlotController tmp = _slots[PlayerManagerConsts.PRIMARY_SLOT];
         _slots[PlayerManagerConsts.PRIMARY_SLOT]   = _slots[PlayerManagerConsts.SECONDARY_SLOT];
         _slots[PlayerManagerConsts.SECONDARY_SLOT] = tmp;
         for (int i = 0; i < 2; i++)
         {
             _slots[i].SlotIndex = i;
         }
         // Audio slot index changes automatically as it is stored in the slot instance itself
         PlayerManagerMessaging.SendPlayerManagerPlayerMessage(PlayerManagerMessaging.MessageType.PlayerSlotsChanged);
     }
 }
コード例 #3
0
 internal PlayerSlotController(PlayerManager parent)
 {
     _playerManager = parent;
     PlayerManagerMessaging.SendPlayerManagerPlayerMessage(PlayerManagerMessaging.MessageType.PlayerSlotStarted, this);
 }