From df895ae025ab766e4c273b1e386c8e311f029d7d Mon Sep 17 00:00:00 2001 From: hsgwon Date: Fri, 30 Aug 2019 08:41:16 +0900 Subject: [PATCH] [MediaController] Replace deprecated pinvoke function (#994) --- .../Interop/Interop.MediaControllerClient.cs | 30 ++++-------- .../Interop/Interop.MediaControllerServer.cs | 10 ++-- .../MediaController/InternalEnums.cs | 12 +++++ .../MediaController/MediaControlServer.cs | 6 ++- .../MediaController/MediaController.cs | 6 ++- .../MediaControllerManager.Events.cs | 47 +++++++++---------- 6 files changed, 54 insertions(+), 57 deletions(-) diff --git a/src/Tizen.Multimedia.Remoting/Interop/Interop.MediaControllerClient.cs b/src/Tizen.Multimedia.Remoting/Interop/Interop.MediaControllerClient.cs index fa1fd34a7..9489e6207 100644 --- a/src/Tizen.Multimedia.Remoting/Interop/Interop.MediaControllerClient.cs +++ b/src/Tizen.Multimedia.Remoting/Interop/Interop.MediaControllerClient.cs @@ -190,6 +190,10 @@ internal static partial class Interop internal delegate void RepeatCapabilityUpdatedCallback(string serverName, MediaControlCapabilitySupport support, IntPtr userData = default(IntPtr)); + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + internal delegate void SimpleCapabilityCallback(string serverName, MediaControlCapabilityCategory category, + MediaControlCapabilitySupport support, IntPtr userData = default(IntPtr)); + [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_playback_content_type")] internal static extern MediaControllerError GetPlaybackContentType(IntPtr playbackHandle, @@ -203,14 +207,6 @@ internal static partial class Interop internal static extern MediaControllerError GetPlaybackCapabilityHandle(MediaControllerClientHandle clientHandle, string serverName, out IntPtr capaHandle); - [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_shuffle_ability_support")] - internal static extern MediaControllerError GetShuffleCapability(MediaControllerClientHandle clientHandle, - string serverName, out MediaControlCapabilitySupport type); - - [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_repeat_ability_support")] - internal static extern MediaControllerError GetRepeatCapability(MediaControllerClientHandle clientHandle, - string serverName, out MediaControlCapabilitySupport type); - [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_playback_ability_updated_cb")] internal static extern MediaControllerError SetPlaybackCapabilityUpdatedCb(MediaControllerClientHandle clientHandle, PlaybackCapabilityUpdatedCallback callback, IntPtr userData = default(IntPtr)); @@ -218,19 +214,13 @@ internal static partial class Interop [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_playback_ability_updated_cb")] internal static extern MediaControllerError UnsetPlaybackCapabilityUpdatedCb(MediaControllerClientHandle clientHandle); - [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_shuffle_ability_updated_cb")] - internal static extern MediaControllerError SetShuffleCapabilityUpdatedCb(MediaControllerClientHandle clientHandle, - ShuffleCapabilityUpdatedCallback callback, IntPtr userData = default(IntPtr)); - - [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_shuffle_ability_updated_cb")] - internal static extern MediaControllerError UnsetShuffleCapabilityUpdatedCb(MediaControllerClientHandle clientHandle); - - [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_repeat_ability_updated_cb")] - internal static extern MediaControllerError SetRepeatCapabilityUpdatedCb(MediaControllerClientHandle clientHandle, - RepeatCapabilityUpdatedCallback callback, IntPtr userData = default(IntPtr)); + [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_ability_support_updated_cb")] + internal static extern MediaControllerError SetSimpleCapabilityUpdatedCb(MediaControllerClientHandle clientHandle, + SimpleCapabilityCallback callback, IntPtr userData = default(IntPtr)); - [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_repeat_ability_updated_cb")] - internal static extern MediaControllerError UnsetRepeatCapabilityUpdatedCb(MediaControllerClientHandle clientHandle); + [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_ability_support")] + internal static extern MediaControllerError GetSimpleCapability(MediaControllerClientHandle clientHandle, + string serverName, MediaControlCapabilityCategory category, out MediaControlCapabilitySupport type); [DllImport(Libraries.MediaController, EntryPoint = "mc_playback_ability_clone")] internal static extern MediaControllerError CloneCapability(IntPtr capaSrcHandle, out IntPtr capaDstHandle); diff --git a/src/Tizen.Multimedia.Remoting/Interop/Interop.MediaControllerServer.cs b/src/Tizen.Multimedia.Remoting/Interop/Interop.MediaControllerServer.cs index 16e3cd3bb..63c905d6c 100644 --- a/src/Tizen.Multimedia.Remoting/Interop/Interop.MediaControllerServer.cs +++ b/src/Tizen.Multimedia.Remoting/Interop/Interop.MediaControllerServer.cs @@ -224,13 +224,9 @@ internal static partial class Interop [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_playback_ability")] internal static extern MediaControllerError SaveAndNotifyPlaybackCapabilityUpdated(IntPtr serverHandle); - [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_shuffle_ability")] - internal static extern MediaControllerError SetShuffleModeCapability(IntPtr serverHandle, - MediaControlCapabilitySupport support); - - [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_repeat_ability")] - internal static extern MediaControllerError SetRepeatModeCapability(IntPtr serverHandle, - MediaControlCapabilitySupport support); + [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_ability_support")] + internal static extern MediaControllerError SetSimpleCapability(IntPtr serverHandle, + MediaControlCapabilityCategory category, MediaControlCapabilitySupport support); #endregion Capability #region Search diff --git a/src/Tizen.Multimedia.Remoting/MediaController/InternalEnums.cs b/src/Tizen.Multimedia.Remoting/MediaController/InternalEnums.cs index f3820f3c6..9b3d0ad13 100644 --- a/src/Tizen.Multimedia.Remoting/MediaController/InternalEnums.cs +++ b/src/Tizen.Multimedia.Remoting/MediaController/InternalEnums.cs @@ -81,4 +81,16 @@ namespace Tizen.Multimedia.Remoting Episode, Resolution } + + internal enum MediaControlCapabilityCategory + { + Shuffle, + Repeat, + PlaybackPosition, + Playlist, + ClientCustom, + Search, + Subtitle, + Mode360 + } } \ No newline at end of file diff --git a/src/Tizen.Multimedia.Remoting/MediaController/MediaControlServer.cs b/src/Tizen.Multimedia.Remoting/MediaController/MediaControlServer.cs index 1d97a3c7d..907ef0310 100644 --- a/src/Tizen.Multimedia.Remoting/MediaController/MediaControlServer.cs +++ b/src/Tizen.Multimedia.Remoting/MediaController/MediaControlServer.cs @@ -605,7 +605,8 @@ namespace Tizen.Multimedia.Remoting { ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support)); - Native.SetShuffleModeCapability(Handle, support).ThrowIfError("Failed to set shuffle mode capability."); + Native.SetSimpleCapability(Handle, MediaControlCapabilityCategory.Shuffle, support). + ThrowIfError("Failed to set shuffle mode capability."); } /// @@ -623,7 +624,8 @@ namespace Tizen.Multimedia.Remoting { ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support)); - Native.SetRepeatModeCapability(Handle, support).ThrowIfError("Failed to set shuffle mode capability."); + Native.SetSimpleCapability(Handle, MediaControlCapabilityCategory.Repeat, support). + ThrowIfError("Failed to set repeat mode capability."); } #endregion Capabilities diff --git a/src/Tizen.Multimedia.Remoting/MediaController/MediaController.cs b/src/Tizen.Multimedia.Remoting/MediaController/MediaController.cs index 096f05c48..cf4da2a89 100644 --- a/src/Tizen.Multimedia.Remoting/MediaController/MediaController.cs +++ b/src/Tizen.Multimedia.Remoting/MediaController/MediaController.cs @@ -650,7 +650,8 @@ namespace Tizen.Multimedia.Remoting Native.GetPlaybackCapabilityHandle(Manager.Handle, ServerAppId, out playbackCapaHandle). ThrowIfError("Failed to get playback capability handle."); - Native.GetShuffleCapability(Manager.Handle, ServerAppId, out MediaControlCapabilitySupport support); + Native.GetSimpleCapability(Manager.Handle, ServerAppId, MediaControlCapabilityCategory.Shuffle, out MediaControlCapabilitySupport support). + ThrowIfError("Failed to get shuffle mode capability"); return support; } @@ -685,7 +686,8 @@ namespace Tizen.Multimedia.Remoting Native.GetPlaybackCapabilityHandle(Manager.Handle, ServerAppId, out playbackCapaHandle). ThrowIfError("Failed to get playback capability handle."); - Native.GetRepeatCapability(Manager.Handle, ServerAppId, out MediaControlCapabilitySupport support); + Native.GetSimpleCapability(Manager.Handle, ServerAppId, MediaControlCapabilityCategory.Repeat, out MediaControlCapabilitySupport support). + ThrowIfError("Failed to get repeat mode capability"); return support; } diff --git a/src/Tizen.Multimedia.Remoting/MediaController/MediaControllerManager.Events.cs b/src/Tizen.Multimedia.Remoting/MediaController/MediaControllerManager.Events.cs index 924cc8261..d0c31fd5b 100644 --- a/src/Tizen.Multimedia.Remoting/MediaController/MediaControllerManager.Events.cs +++ b/src/Tizen.Multimedia.Remoting/MediaController/MediaControllerManager.Events.cs @@ -31,8 +31,7 @@ namespace Tizen.Multimedia.Remoting private NativePlaylist.MetadataUpdatedCallback _metadataUpdatedCallback; private NativePlaylist.PlaylistUpdatedCallback _playlistUpdatedCallback; private Native.PlaybackCapabilityUpdatedCallback _playbackCapabilityUpdatedCallback; - private Native.ShuffleCapabilityUpdatedCallback _shuffleModeCapabilityUpdatedCallback; - private Native.RepeatCapabilityUpdatedCallback _repeatModeCapabilityUpdatedCallback; + private Native.SimpleCapabilityCallback _simpleCapabilityUpdatedCallback; private Native.CustomCommandReceivedCallback _customCommandReceivedCallback; /// @@ -57,9 +56,8 @@ namespace Tizen.Multimedia.Remoting RegisterPlaylistUpdatedEvent(); RegisterCommandCompletedEvent(); RegisterPlaybackCapabilitiesEvent(); - RegisterRepeatModeCapabilitiesEvent(); - RegisterShuffleModeCapabilitiesEvent(); RegisterCustomCommandReceivedEvent(); + RegisterSimpleCapabilityEvent(); } private void RaiseServerChangedEvent(MediaControllerNativeServerState state, MediaController controller) @@ -168,28 +166,6 @@ namespace Tizen.Multimedia.Remoting ThrowIfError("Failed to init PlaybackCapabilityUpdated event."); } - private void RegisterRepeatModeCapabilitiesEvent() - { - _repeatModeCapabilityUpdatedCallback = (serverName, support, _) => - { - GetController(serverName)?.RaiseRepeatModeCapabilityUpdatedEvent(support); - }; - - Native.SetRepeatCapabilityUpdatedCb(Handle, _repeatModeCapabilityUpdatedCallback). - ThrowIfError("Failed to init RepeatModeCapabilityUpdated event."); - } - - private void RegisterShuffleModeCapabilitiesEvent() - { - _shuffleModeCapabilityUpdatedCallback = (serverName, support, _) => - { - GetController(serverName)?.RaiseShuffleModeCapabilityUpdatedEvent(support); - }; - - Native.SetShuffleCapabilityUpdatedCb(Handle, _shuffleModeCapabilityUpdatedCallback). - ThrowIfError("Failed to init ShuffleModeCapabilityUpdated event."); - } - private void RegisterCustomCommandReceivedEvent() { _customCommandReceivedCallback = (serverName, requestId, customEvent, bundleHandle, _) => @@ -212,5 +188,24 @@ namespace Tizen.Multimedia.Remoting Native.SetCustomEventCb(Handle, _customCommandReceivedCallback). ThrowIfError("Failed to init CustomCommandReceived event."); } + + private void RegisterSimpleCapabilityEvent() + { + _simpleCapabilityUpdatedCallback = (serverName, category, support, _) => + { + switch (category) + { + case MediaControlCapabilityCategory.Repeat: + GetController(serverName)?.RaiseRepeatModeCapabilityUpdatedEvent(support); + break; + case MediaControlCapabilityCategory.Shuffle: + GetController(serverName)?.RaiseShuffleModeCapabilityUpdatedEvent(support); + break; + } + }; + + Native.SetSimpleCapabilityUpdatedCb(Handle, _simpleCapabilityUpdatedCallback). + ThrowIfError("Failed to init capability updated event."); + } } } \ No newline at end of file -- 2.34.1