Exemplo n.º 1
0
 internal void UpdateReceiver()
 {
     if (_receiver != null)
     {
         var transceiver = Transceiver;
         Debug.Assert(transceiver != null);
         bool wasReceiving   = _isReceiverPaired;
         bool hasRemoteTrack = (transceiver.RemoteTrack != null);
         // Note the extra "hasRemoteTrack" check, which ensures that when the remote track was
         // just removed by OnUnpaired(RemoteTrack) from the TrackRemoved event then it is not
         // immediately re-added by mistake.
         if (hasRemoteTrack && !wasReceiving)
         {
             // Transceiver started receiving, and user actually wants to receive
             _peer.InvokeOnAppThread(() => _receiver.OnPaired(transceiver.RemoteTrack));
             _isReceiverPaired = true;
         }
         else if (!hasRemoteTrack && wasReceiving)
         {
             // Transceiver stopped receiving (user intent does not matter here)
             _peer.InvokeOnAppThread(() => _receiver.OnUnpaired(transceiver.RemoteTrack));
             _isReceiverPaired = false;
         }
     }
 }
Exemplo n.º 2
0
        internal void UpdateReceiverPairingIfNeeded()
        {
            Debug.Assert(Transceiver != null);

            // Callbacks must be called on the main Unity app thread.
            _peer.EnsureIsMainAppThread();

            var newRemoteTrack = Transceiver.RemoteTrack;

            if (_receiver != null)
            {
                bool wasReceiving = _remoteTrack != null;
                bool isReceiving  = newRemoteTrack != null;
                if (isReceiving && !wasReceiving)
                {
                    // Transceiver started receiving, and user actually wants to receive
                    _receiver.OnPaired(newRemoteTrack);
                }
                else if (!isReceiving && wasReceiving)
                {
                    // Transceiver stopped receiving (user intent does not matter here)
                    _receiver.OnUnpaired(_remoteTrack);
                }
            }
            _remoteTrack = newRemoteTrack;
        }