internal void Close_NoLock() { lock (SyncObj) { if (_isClosed) { return; } } Reset(); InvokeSlotClosed_NoLock(); PlayerManagerMessaging.SendPlayerMessage(PlayerManagerMessaging.MessageType.PlayerSlotClosed, this); }
public void Stop() { bool sendStopEvent; lock (SyncObj) { CheckActive(); IPlayer player = CurrentPlayer; sendStopEvent = player != null && player.State == PlayerState.Active; } // Simply discard the player - we'll send the PlayerStopped event later in this method ReleasePlayer_NoLock(); if (sendStopEvent) { // We need to simulate the PlayerStopped event, as the ReleasePlayer_NoLock() method discards all further player events PlayerManagerMessaging.SendPlayerMessage(PlayerManagerMessaging.MessageType.PlayerStopped, this); } }
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 } } } }
public void Stop() { bool setStopped; lock (SyncObj) { CheckActive(); setStopped = _slotState != PlayerSlotState.Stopped; if (setStopped) { SetSlotState(PlayerSlotState.Stopped); } } // Simply discard the player - we'll send the PlayerStopped event later in this method ReleasePlayer_NoLock(); lock (SyncObj) if (setStopped) { // We need to simulate the PlayerStopped event, as the ReleasePlayer_NoLock() method discards all further player events PlayerManagerMessaging.SendPlayerMessage(PlayerManagerMessaging.MessageType.PlayerStopped, this); } }
internal void OnNextItemRequest(IPlayer player) { PlayerManagerMessaging.SendPlayerMessage(PlayerManagerMessaging.MessageType.RequestNextItem, this); }
internal void OnPlaybackError(IPlayer player) { PlayerManagerMessaging.SendPlayerMessage(PlayerManagerMessaging.MessageType.PlayerError, this); }
internal void OnPlaybackStateChanged(IPlayer player) { PlayerManagerMessaging.SendPlayerMessage(PlayerManagerMessaging.MessageType.PlaybackStateChanged, this); }
internal void OnPlayerEnded(IPlayer player) { PlayerManagerMessaging.SendPlayerMessage(PlayerManagerMessaging.MessageType.PlayerEnded, this); }
internal void OnPlayerStateReady(IPlayer player) { PlayerManagerMessaging.SendPlayerMessage(PlayerManagerMessaging.MessageType.PlayerStateReady, this); }