public void AddPropertyChange (params PlayerProperties [] properties)
{
lock (changed_properties) {
foreach (PlayerProperties prop in properties) {
string prop_name = prop.ToString ();
changed_properties[prop_name] = Get (player_interface_name, prop_name);
}
// TODO We could check if a property really has changed and only fire the event in that case
HandlePropertiesChange (player_interface_name);
}
}
private void OnPlayerEvent(PlayerEventArgs args) { switch (args.Event) { case PlayerEvent.StartOfStream: case PlayerEvent.TrackInfoUpdated: player.AddPropertyChange(PlayerProperties.Metadata); break; case PlayerEvent.StateChange: player.AddPropertyChange(PlayerProperties.PlaybackStatus); break; case PlayerEvent.Seek: player.HandleSeek(); break; case PlayerEvent.Volume: player.AddPropertyChange(PlayerProperties.Volume); break; } }