{
public partial class MediaControllerManager
{
+ // Updated event
private Native.ServerUpdatedCallback _serverUpdatedCallback;
private Native.PlaybackUpdatedCallback _playbackUpdatedCallback;
+ private NativePlaylist.PlaylistUpdatedCallback _playlistUpdatedCallback;
+ private NativePlaylist.MetadataUpdatedCallback _metadataUpdatedCallback;
private Native.ShuffleModeUpdatedCallback _shufflemodeUpdatedCallback;
private Native.RepeatModeUpdatedCallback _repeatmodeUpdatedCallback;
- private Native.CommandCompletedCallback _commandCompletedCallback;
- private NativePlaylist.MetadataUpdatedCallback _metadataUpdatedCallback;
- private NativePlaylist.PlaylistUpdatedCallback _playlistUpdatedCallback;
+ private Native.BoolAttributeUpdatedCallback _subtitleModeUpdatedCallback;
+ private Native.BoolAttributeUpdatedCallback _mode360UpdatedCallback;
+ private Native.DisplayModeUpdatedCallback _displayModeUpdatedCallback;
+ private Native.DisplayRotationUpdatedCallback _displayRotationUpdatedCallback;
+
+ // Capability updated event
private Native.PlaybackCapabilityUpdatedCallback _playbackCapabilityUpdatedCallback;
- private Native.SimpleCapabilityCallback _simpleCapabilityUpdatedCallback;
+ private Native.SimpleCapabilityUpdatedCallback _categoryCapabilityUpdatedCallback;
+ private Native.CategoryAttributeCapabilityUpdatedCallback _displayModeCapabilityUpdatedCallback;
+ private Native.CategoryAttributeCapabilityUpdatedCallback _displayRotationCapabilityUpdatedCallback;
+
+ // Command
+ private Native.CommandCompletedCallback _commandCompletedCallback;
private Native.CustomCommandReceivedCallback _customCommandReceivedCallback;
+
/// <summary>
/// Occurs when a server is started.
/// </summary>
RegisterShuffleModeUpdatedEvent();
RegisterRepeatModeUpdatedEvent();
RegisterPlaylistUpdatedEvent();
- RegisterCommandCompletedEvent();
+ RegisterSubtitleModeUpdateEvent();
+ RegisterMode360UpdateEvent();
+ RegisterDisplayModeUpdateEvent();
+ RegisterDisplayRotationUpdateEvent();
+
RegisterPlaybackCapabilitiesEvent();
+ RegisterDisplayModeCapabilityUpdatedEvent();
+ RegisterDisplayRotationCapabilityUpdatedEvent();
+ RegisterSimpleCapabilityUpdatedEvent();
+
+ RegisterCommandCompletedEvent();
RegisterCustomCommandReceivedEvent();
- RegisterSimpleCapabilityEvent();
}
private void RaiseServerChangedEvent(MediaControllerNativeServerState state, MediaController controller)
}
}
+
+ #region Updated event
private void RegisterServerUpdatedEvent()
{
_serverUpdatedCallback = (serverName, state, _) =>
RaiseServerChangedEvent(state, HandleServerUpdated(serverName, state));
};
- Native.SetServerUpdatedCb(Handle, _serverUpdatedCallback).ThrowIfError("Failed to init server changed event.");
+ Native.SetServerUpdatedCb(Handle, _serverUpdatedCallback).
+ ThrowIfError("Failed to register server changed event.");
}
private void RegisterPlaybackUpdatedEvent()
GetController(serverName)?.RaisePlaybackUpdatedEvent(playbackHandle);
};
- Native.SetPlaybackUpdatedCb(Handle, _playbackUpdatedCallback).ThrowIfError("Failed to init PlaybackUpdated event.");
+ Native.SetPlaybackUpdatedCb(Handle, _playbackUpdatedCallback).
+ ThrowIfError("Failed to register PlaybackUpdated event.");
}
+ private void RegisterPlaylistUpdatedEvent()
+ {
+ _playlistUpdatedCallback = (serverName, playlistMode, name, playlistHandle, _) =>
+ {
+ GetController(serverName)?.RaisePlaylistUpdatedEvent(playlistMode, name, playlistHandle);
+ };
+
+ NativePlaylist.SetPlaylistModeUpdatedCb(Handle, _playlistUpdatedCallback).
+ ThrowIfError("Failed to register PlaylistUpdated event.");
+ }
private void RegisterMetadataUpdatedEvent()
{
GetController(serverName)?.RaiseMetadataUpdatedEvent(metadata);
};
- NativePlaylist.SetMetadataUpdatedCb(Handle, _metadataUpdatedCallback).ThrowIfError("Failed to init MetadataUpdated event.");
+ NativePlaylist.SetMetadataUpdatedCb(Handle, _metadataUpdatedCallback).
+ ThrowIfError("Failed to register MetadataUpdated event.");
}
private void RegisterShuffleModeUpdatedEvent()
};
Native.SetShuffleModeUpdatedCb(Handle, _shufflemodeUpdatedCallback).
- ThrowIfError("Failed to init ShuffleModeUpdated event.");
+ ThrowIfError("Failed to register ShuffleModeUpdated event.");
}
private void RegisterRepeatModeUpdatedEvent()
};
Native.SetRepeatModeUpdatedCb(Handle, _repeatmodeUpdatedCallback).
- ThrowIfError("Failed to init RepeatModeUpdated event.");
+ ThrowIfError("Failed to register RepeatModeUpdated event.");
}
- private void RegisterPlaylistUpdatedEvent()
+ private void RegisterSubtitleModeUpdateEvent()
{
- _playlistUpdatedCallback = (serverName, playlistMode, name, playlistHandle, _) =>
+ _subtitleModeUpdatedCallback = (serverName, isEnabled, _) =>
{
- GetController(serverName)?.RaisePlaylistUpdatedEvent(playlistMode, name, playlistHandle);
+ GetController(serverName)?.RaiseSubtitleModeUpdatedEvent(isEnabled);
};
- NativePlaylist.SetPlaylistModeUpdatedCb(Handle, _playlistUpdatedCallback).
- ThrowIfError("Failed to init PlaylistUpdated event.");
+ Native.SetSubtitleUpdatedCb(Handle, _subtitleModeUpdatedCallback).
+ ThrowIfError("Failed to register SubtitleModeUpdated event.");
}
- private void RegisterCommandCompletedEvent()
+ private void RegisterMode360UpdateEvent()
{
- _commandCompletedCallback = (serverName, requestId, result, bundleHandle, _) =>
+ _mode360UpdatedCallback = (serverName, isEnabled, _) =>
{
- // SafeHandles cannot be marshaled from unmanaged to managed.
- // So we use IntPtr type for 'bundleHandle' in native callback.
- GetController(serverName)?.RaiseCommandCompletedEvent(requestId, result, bundleHandle);
+ GetController(serverName)?.RaiseMode360UpdatedEvent(isEnabled);
};
- Native.SetCommandCompletedCb(Handle, _commandCompletedCallback).
- ThrowIfError("Failed to init CommandCompleted event.");
+ Native.SetMode360UpdatedCb(Handle, _mode360UpdatedCallback).
+ ThrowIfError("Failed to register Mode360Updated event.");
}
- private void RegisterPlaybackCapabilitiesEvent()
+ private void RegisterDisplayModeUpdateEvent()
{
- _playbackCapabilityUpdatedCallback = (serverName, playbackCapaHandle, _) =>
+ _displayModeUpdatedCallback = (serverName, mode, _) =>
{
- GetController(serverName)?.RaisePlaybackCapabilityUpdatedEvent(playbackCapaHandle);
+ GetController(serverName)?.RaiseDisplayModeUpdatedEvent(mode);
};
- Native.SetPlaybackCapabilityUpdatedCb(Handle, _playbackCapabilityUpdatedCallback).
- ThrowIfError("Failed to init PlaybackCapabilityUpdated event.");
+ Native.SetDisplayModeUpdatedCb(Handle, _displayModeUpdatedCallback).
+ ThrowIfError("Failed to register DisplayModeUpdated event.");
+ }
+
+ private void RegisterDisplayRotationUpdateEvent()
+ {
+ _displayRotationUpdatedCallback = (serverName, rotation, _) =>
+ {
+ GetController(serverName)?.RaiseDisplayRotationUpdatedEvent(rotation);
+ };
+
+ Native.SetDisplayRotationUpdatedCb(Handle, _displayRotationUpdatedCallback).
+ ThrowIfError("Failed to register DisplayRotationUpdated event.");
+ }
+ #endregion
+
+
+ #region Command
+ private void RegisterCommandCompletedEvent()
+ {
+ _commandCompletedCallback = (serverName, requestId, result, bundleHandle, _) =>
+ {
+ // SafeHandles cannot be marshaled from unmanaged to managed.
+ // So we use IntPtr type for 'bundleHandle' in native callback.
+ GetController(serverName)?.RaiseCommandCompletedEvent(requestId, result, bundleHandle);
+ };
+
+ Native.SetCommandCompletedCb(Handle, _commandCompletedCallback).
+ ThrowIfError("Failed to register CommandCompleted event.");
}
private void RegisterCustomCommandReceivedEvent()
};
Native.SetCustomEventCb(Handle, _customCommandReceivedCallback).
- ThrowIfError("Failed to init CustomCommandReceived event.");
+ ThrowIfError("Failed to register CustomCommandReceived event.");
+ }
+ #endregion
+
+
+ #region Capability updated event
+ private void RegisterPlaybackCapabilitiesEvent()
+ {
+ _playbackCapabilityUpdatedCallback = (serverName, playbackCapaHandle, _) =>
+ {
+ GetController(serverName)?.RaisePlaybackCapabilityUpdatedEvent(playbackCapaHandle);
+ };
+
+ Native.SetPlaybackCapabilityUpdatedCb(Handle, _playbackCapabilityUpdatedCallback).
+ ThrowIfError("Failed to register PlaybackCapabilityUpdated event.");
+ }
+
+ private void RegisterDisplayModeCapabilityUpdatedEvent()
+ {
+ _displayModeCapabilityUpdatedCallback = (serverName, modes, _) =>
+ {
+ GetController(serverName)?.RaiseDisplayModeCapabilityUpdatedEvent(
+ (MediaControlNativeDisplayMode)modes);
+ };
+
+ Native.SetDisplayModeCapabilityUpdatedCb(Handle, _displayModeCapabilityUpdatedCallback).
+ ThrowIfError("Failed to register DisplayModeCapabilityUpdated event.");
+ }
+
+ private void RegisterDisplayRotationCapabilityUpdatedEvent()
+ {
+ _displayRotationCapabilityUpdatedCallback = (serverName, rotations, _) =>
+ {
+ GetController(serverName)?.RaiseDisplayRotationCapabilityUpdatedEvent(
+ (MediaControlNativeDisplayRotation)rotations);
+ };
+
+ Native.SetDisplayRotationCapabilityUpdatedCb(Handle, _displayRotationCapabilityUpdatedCallback).
+ ThrowIfError("Failed to register DisplayRotationCapabilityUpdated event.");
}
- private void RegisterSimpleCapabilityEvent()
+ private void RegisterSimpleCapabilityUpdatedEvent()
{
- _simpleCapabilityUpdatedCallback = (serverName, category, support, _) =>
+ _categoryCapabilityUpdatedCallback = (serverName, category, support, _) =>
{
switch (category)
{
- case MediaControlCapabilityCategory.Repeat:
+ case MediaControlNativeCapabilityCategory.Repeat:
GetController(serverName)?.RaiseRepeatModeCapabilityUpdatedEvent(support);
break;
- case MediaControlCapabilityCategory.Shuffle:
+ case MediaControlNativeCapabilityCategory.Shuffle:
GetController(serverName)?.RaiseShuffleModeCapabilityUpdatedEvent(support);
break;
}
};
- Native.SetSimpleCapabilityUpdatedCb(Handle, _simpleCapabilityUpdatedCallback).
- ThrowIfError("Failed to init capability updated event.");
+ Native.SetCategoryCapabilityUpdatedCb(Handle, _categoryCapabilityUpdatedCallback).
+ ThrowIfError("Failed to register capability updated event.");
}
+ #endregion
}
}
\ No newline at end of file