From: coderhyme Date: Wed, 30 Aug 2017 08:22:34 +0000 (+0900) Subject: [Multimedia] Added a new constructor in Display class for NUI.Window. X-Git-Tag: preview1-00155^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9afbd380da3f5dc548290cef85588eb571c4d28a;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [Multimedia] Added a new constructor in Display class for NUI.Window. Change-Id: Ia284b3ed8c1d31ca0760a255163d7f7c0bc3c82b Signed-off-by: coderhyme --- diff --git a/src/Tizen.Multimedia.Camera/Camera/Camera.cs b/src/Tizen.Multimedia.Camera/Camera/Camera.cs index 1323187e3..4a1bf6548 100755 --- a/src/Tizen.Multimedia.Camera/Camera/Camera.cs +++ b/src/Tizen.Multimedia.Camera/Camera/Camera.cs @@ -374,7 +374,7 @@ namespace Tizen.Multimedia /// Get/set various camera display properties. /// /// 3 - public CameraDisplaySettings DisplaySettings{ get; } + public CameraDisplaySettings DisplaySettings { get; } private Display _display; @@ -443,6 +443,11 @@ namespace Tizen.Multimedia return CameraDisplay.SetTarget(GetHandle(), type, evasObject); } + CameraError IDisplayable.ApplyEcoreWindow(IntPtr windowHandle) + { + throw new NotSupportedException("Camera does not support NUI.Window display."); + } + /// /// Gets the state of the camera. /// diff --git a/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Display.cs b/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Display.cs index 3572b6ad2..6c4acc49d 100644 --- a/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Display.cs +++ b/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Display.cs @@ -42,5 +42,13 @@ internal static partial class Interop [DllImport(Libraries.Player, EntryPoint = "player_set_display_roi_area")] internal static extern PlayerErrorCode SetRoi(IntPtr player, int x, int y, int width, int height); + + [DllImport(Libraries.Player, EntryPoint = "player_set_display")] + internal static extern PlayerErrorCode SetDisplay(IntPtr player, PlayerDisplayType type, IntPtr display); + + [DllImport(Libraries.Player, EntryPoint = "player_set_ecore_wl_display")] + internal static extern PlayerErrorCode SetEcoreDisplay(IntPtr player, PlayerDisplayType type, IntPtr + ecoreWindow, int x = 0, int y = 0, int width = 1920, int height = 1080); + } } diff --git a/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Player.cs b/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Player.cs index 494b0843f..d95e8d5dc 100644 --- a/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Player.cs +++ b/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Player.cs @@ -75,9 +75,6 @@ internal static partial class Interop [DllImport(Libraries.Player, EntryPoint = "player_set_uri")] internal static extern PlayerErrorCode SetUri(IntPtr player, string uri); - [DllImport(Libraries.Player, EntryPoint = "player_set_display")] - internal static extern PlayerErrorCode SetDisplay(IntPtr player, PlayerDisplayType type, IntPtr display); - [DllImport(Libraries.Player, EntryPoint = "player_start")] internal static extern PlayerErrorCode Start(IntPtr player); diff --git a/src/Tizen.Multimedia.MediaPlayer/Player/Player.Properties.cs b/src/Tizen.Multimedia.MediaPlayer/Player/Player.Properties.cs index 097be5dfb..f0cb03ea0 100644 --- a/src/Tizen.Multimedia.MediaPlayer/Player/Player.Properties.cs +++ b/src/Tizen.Multimedia.MediaPlayer/Player/Player.Properties.cs @@ -19,6 +19,7 @@ using System.Runtime.InteropServices; using System.Diagnostics; using System.IO; using System.Threading; +using NativeDisplay = Interop.Display; using static Interop; namespace Tizen.Multimedia @@ -215,8 +216,7 @@ namespace Tizen.Multimedia { if (display == null) { - Log.Info(PlayerLog.Tag, "set display to none"); - return NativePlayer.SetDisplay(Handle, PlayerDisplayType.None, IntPtr.Zero); + return NativeDisplay.SetDisplay(Handle, PlayerDisplayType.None, IntPtr.Zero); } return display.ApplyTo(this); @@ -269,9 +269,16 @@ namespace Tizen.Multimedia Debug.Assert(Enum.IsDefined(typeof(DisplayType), type)); Debug.Assert(type != DisplayType.None); - return NativePlayer.SetDisplay(Handle, + return NativeDisplay.SetDisplay(Handle, type == DisplayType.Overlay ? PlayerDisplayType.Overlay : PlayerDisplayType.Evas, evasObject); } + + PlayerErrorCode IDisplayable.ApplyEcoreWindow(IntPtr windowHandle) + { + Debug.Assert(IsDisposed == false); + + return NativeDisplay.SetEcoreDisplay(Handle, PlayerDisplayType.Overlay, windowHandle); + } #endregion private PlayerTrackInfo _audioTrack; diff --git a/src/Tizen.Multimedia.Remoting/ScreenMirroring/ScreenMirroring.cs b/src/Tizen.Multimedia.Remoting/ScreenMirroring/ScreenMirroring.cs index de32341bd..2d02dc80b 100644 --- a/src/Tizen.Multimedia.Remoting/ScreenMirroring/ScreenMirroring.cs +++ b/src/Tizen.Multimedia.Remoting/ScreenMirroring/ScreenMirroring.cs @@ -112,6 +112,11 @@ namespace Tizen.Multimedia.Remoting return Native.SetDisplay(Handle, (int)type, evasObject); } + + ScreenMirroringErrorCode IDisplayable.ApplyEcoreWindow(IntPtr windowHandle) + { + throw new NotSupportedException("ScreenMirroring does not support NUI.Window display."); + } #endregion /// diff --git a/src/Tizen.Multimedia/Common/Display.cs b/src/Tizen.Multimedia/Common/Display.cs index d300c57da..636fb8f3e 100644 --- a/src/Tizen.Multimedia/Common/Display.cs +++ b/src/Tizen.Multimedia/Common/Display.cs @@ -36,50 +36,112 @@ namespace Tizen.Multimedia None, } - internal interface IDisplayable + internal interface IDisplayable { - ErrorType ApplyEvasDisplay(DisplayType type, EvasObject evasObject); + TError ApplyEvasDisplay(DisplayType type, EvasObject evasObject); + TError ApplyEcoreWindow(IntPtr windowHandle); } - /// - /// Provides a means to wrap various display types. - /// - /// - /// - /// - public class Display + internal interface IDisplaySetter { - private Display(DisplayType type, EvasObject target) - { - if (target == null) - { - throw new ArgumentNullException(nameof(target)); - } + TError SetDisplay(IDisplayable target); + } + internal class EvasDisplaySetter : IDisplaySetter + { + private readonly DisplayType _type; + private readonly EvasObject _target; + + internal EvasDisplaySetter(DisplayType type, EvasObject target) + { if (target == IntPtr.Zero) { throw new ArgumentException("The evas object is not realized."); } - Type = type; - EvasObject = target; + _type = type; + _target = target; } + public TError SetDisplay(IDisplayable target) + { + return target.ApplyEvasDisplay(_type, _target); + } + } + + internal class EcoreDisplaySetter : IDisplaySetter + { + private readonly IntPtr _windowHandle; + + internal EcoreDisplaySetter(IntPtr windowHandle) + { + _windowHandle = windowHandle; + } + + public TError SetDisplay(IDisplayable target) + { + return target.ApplyEcoreWindow(_windowHandle); + } + } + + /// + /// Provides a means to wrap various display types. + /// + /// + /// + /// + public class Display + { + private readonly IDisplaySetter _setter; + /// /// Initializes a new instance of the class with a class. /// + /// A to display. /// http://tizen.org/feature/multimedia.raw_video /// The required feature is not supported. - public Display(MediaView mediaView) : this(DisplayType.Surface, mediaView) + public Display(MediaView mediaView) { ValidationUtil.ValidateFeatureSupported(Features.RawVideo); + + if (mediaView == null) + { + throw new ArgumentNullException(nameof(mediaView)); + } + + _setter = new EvasDisplaySetter(DisplayType.Surface, mediaView); } /// /// Initializes a new instance of the class with a class. /// - public Display(Window window) : this(DisplayType.Overlay, window) + /// A to display. + public Display(Window window) + { + if (window == null) + { + throw new ArgumentNullException(nameof(window)); + } + + _setter = new EvasDisplaySetter(DisplayType.Overlay, window); + } + + /// + /// Initializes a new instance of the class with a class. + /// + /// A to display. + /// + /// The must be + /// for the to be rendered correctly. + /// + public Display(NUI.Window window) { + if (window == null) + { + throw new ArgumentNullException(nameof(window)); + } + + _setter = new EcoreDisplaySetter(window.GetNativeWindowHandler()); } private EvasObject EvasObject { get; } @@ -100,9 +162,9 @@ namespace Tizen.Multimedia _owner = newOwner; } - internal ErrorType ApplyTo(IDisplayable target) + internal TError ApplyTo(IDisplayable target) { - return target.ApplyEvasDisplay(Type, EvasObject); + return _setter.SetDisplay(target); } } } diff --git a/src/Tizen.Multimedia/Tizen.Multimedia.csproj b/src/Tizen.Multimedia/Tizen.Multimedia.csproj index 5b07fe611..fd0854a4c 100644 --- a/src/Tizen.Multimedia/Tizen.Multimedia.csproj +++ b/src/Tizen.Multimedia/Tizen.Multimedia.csproj @@ -8,6 +8,7 @@ + \ No newline at end of file