From 6e449c05d339fb67e34d8828925b45732d4d0c65 Mon Sep 17 00:00:00 2001 From: coderhyme Date: Tue, 18 Jul 2017 07:24:03 +0900 Subject: [PATCH] [MediaPlayer] Modified PlayerDisplaySettings to be stateless. Change-Id: I3df73e1a49e4339e7bfa91211890bbdf16e51724 Signed-off-by: coderhyme --- .../Interop/Interop.Display.cs | 5 +- src/Tizen.Multimedia.MediaPlayer/Player/Player.cs | 2 + .../Player/PlayerDisplaySettings.cs | 69 ++++++++-------------- 3 files changed, 30 insertions(+), 46 deletions(-) diff --git a/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Display.cs b/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Display.cs index 4c53542..3572b6a 100644 --- a/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Display.cs +++ b/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Display.cs @@ -22,12 +22,11 @@ internal static partial class Interop { internal static partial class Display { - [DllImport(Libraries.Player, EntryPoint = "player_set_display_mode")] internal static extern PlayerErrorCode SetMode(IntPtr player, PlayerDisplayMode mode); [DllImport(Libraries.Player, EntryPoint = "player_get_display_mode")] - internal static extern PlayerErrorCode GetMode(IntPtr player, out int mode); + internal static extern PlayerErrorCode GetMode(IntPtr player, out PlayerDisplayMode mode); [DllImport(Libraries.Player, EntryPoint = "player_set_display_visible")] internal static extern PlayerErrorCode SetVisible(IntPtr player, bool visible); @@ -39,7 +38,7 @@ internal static partial class Interop internal static extern PlayerErrorCode SetRotation(IntPtr player, Rotation rotation); [DllImport(Libraries.Player, EntryPoint = "player_get_display_rotation")] - internal static extern PlayerErrorCode GetRotation(IntPtr player, out int rotation); + internal static extern PlayerErrorCode GetRotation(IntPtr player, out Rotation rotation); [DllImport(Libraries.Player, EntryPoint = "player_set_display_roi_area")] internal static extern PlayerErrorCode SetRoi(IntPtr player, int x, int y, int width, int height); diff --git a/src/Tizen.Multimedia.MediaPlayer/Player/Player.cs b/src/Tizen.Multimedia.MediaPlayer/Player/Player.cs index 814636d..197378a 100644 --- a/src/Tizen.Multimedia.MediaPlayer/Player/Player.cs +++ b/src/Tizen.Multimedia.MediaPlayer/Player/Player.cs @@ -115,6 +115,8 @@ namespace Tizen.Multimedia { RegisterVideoFrameDecodedCallback(); } + + DisplaySettings = PlayerDisplaySettings.Create(this); } private void RetrieveProperties() diff --git a/src/Tizen.Multimedia.MediaPlayer/Player/PlayerDisplaySettings.cs b/src/Tizen.Multimedia.MediaPlayer/Player/PlayerDisplaySettings.cs index 5d9ead6..3546f93 100644 --- a/src/Tizen.Multimedia.MediaPlayer/Player/PlayerDisplaySettings.cs +++ b/src/Tizen.Multimedia.MediaPlayer/Player/PlayerDisplaySettings.cs @@ -25,19 +25,19 @@ namespace Tizen.Multimedia /// public class PlayerDisplaySettings { - internal PlayerDisplaySettings(Player player) + protected PlayerDisplaySettings(Player player) { - Debug.Assert(player != null); + if (player == null) + { + throw new ArgumentNullException(nameof(player)); + } Player = player; } - private Player Player - { - get; - } + internal static PlayerDisplaySettings Create(Player player) => new PlayerDisplaySettings(player); - private PlayerDisplayMode _displayMode = PlayerDisplayMode.LetterBox; + protected Player Player { get; } /// /// Gets or sets the . @@ -53,26 +53,20 @@ namespace Tizen.Multimedia { get { - return _displayMode; + Native.GetMode(Player.Handle, out var value). + ThrowIfFailed("Failed to get display mode"); + + return value; } set { - if (_displayMode == value) - { - return; - } - ValidationUtil.ValidateEnum(typeof(PlayerDisplayMode), value); Native.SetMode(Player.Handle, value). ThrowIfFailed("Failed to set display mode"); - - _displayMode = value; } } - private bool _isVisible = true; - /// /// Gets or sets the value indicating whether the display is visible. /// @@ -87,24 +81,17 @@ namespace Tizen.Multimedia { get { - return _isVisible; + Native.IsVisible(Player.Handle, out var value). + ThrowIfFailed("Failed to get the visible state of the display"); + + return value; } set { - if (_isVisible == value) - { - return; - } - - Native.SetVisible(Player.Handle, value). - ThrowIfFailed("Failed to set the visible state of the display"); - - _isVisible = value; + Native.SetVisible(Player.Handle, value).ThrowIfFailed("Failed to set the visible state of the display"); } } - private Rotation _rotation = Rotation.Rotate0; - /// /// Gets or sets the rotation of the display. /// @@ -121,21 +108,17 @@ namespace Tizen.Multimedia { get { - return _rotation; + Native.GetRotation(Player.Handle, out var value). + ThrowIfFailed("Failed to get the rotation state of the display"); + + return value; } set { - if (_rotation == value) - { - return; - } - ValidationUtil.ValidateEnum(typeof(Rotation), value); Native.SetRotation(Player.Handle, value). ThrowIfFailed("Failed to set the rotation state of the display"); - - _rotation = value; } } @@ -151,17 +134,12 @@ namespace Tizen.Multimedia /// -or-\n /// Operation failed; internal error.\n /// -or-\n - /// is not set to + /// is not set to . /// /// The player already has been disposed of. /// width or height is less than or equal to zero. public void SetRoi(Rectangle roi) { - if (_displayMode != PlayerDisplayMode.Roi) - { - throw new InvalidOperationException("Mode is not set to Roi"); - } - if (roi.Width <= 0) { throw new ArgumentOutOfRangeException(nameof(roi), roi.Width, @@ -173,6 +151,11 @@ namespace Tizen.Multimedia $"The height of the roi can't be less than or equal to zero."); } + if (Mode != PlayerDisplayMode.Roi) + { + throw new InvalidOperationException("Mode is not set to Roi"); + } + Native.SetRoi(Player.Handle, roi.X, roi.Y, roi.Width, roi.Height). ThrowIfFailed("Failed to set the roi"); } -- 2.7.4