[MediaPlayer] Modified PlayerDisplaySettings to be stateless.
authorcoderhyme <jhyo.kim@samsung.com>
Mon, 17 Jul 2017 22:24:03 +0000 (07:24 +0900)
committercoderhyme <jhyo.kim@samsung.com>
Thu, 20 Jul 2017 08:36:49 +0000 (17:36 +0900)
Change-Id: I3df73e1a49e4339e7bfa91211890bbdf16e51724
Signed-off-by: coderhyme <jhyo.kim@samsung.com>
src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Display.cs
src/Tizen.Multimedia.MediaPlayer/Player/Player.cs
src/Tizen.Multimedia.MediaPlayer/Player/PlayerDisplaySettings.cs

index 4c53542..3572b6a 100644 (file)
@@ -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);
index 814636d..197378a 100644 (file)
@@ -115,6 +115,8 @@ namespace Tizen.Multimedia
             {
                 RegisterVideoFrameDecodedCallback();
             }
+
+            DisplaySettings = PlayerDisplaySettings.Create(this);
         }
 
         private void RetrieveProperties()
index 5d9ead6..3546f93 100644 (file)
@@ -25,19 +25,19 @@ namespace Tizen.Multimedia
     /// </summary>
     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; }
 
         /// <summary>
         /// Gets or sets the <see cref="PlayerDisplayMode"/>.
@@ -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;
-
         /// <summary>
         /// Gets or sets the value indicating whether the display is visible.
         /// </summary>
@@ -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;
-
         /// <summary>
         /// Gets or sets the rotation of the display.
         /// </summary>
@@ -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
-        ///     <see cref="Mode"/> is not set to <see cref="PlayerDisplayMode.Roi"/>
+        ///     <see cref="Mode"/> is not set to <see cref="PlayerDisplayMode.Roi"/>.
         /// </exception>
         /// <exception cref="ObjectDisposedException">The player already has been disposed of.</exception>
         /// <exception cref="ArgumentOutOfRangeException">width or height is less than or equal to zero.</exception>
         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");
         }