From 6f375e2e5ba4da6ba2bdddc54e5e884379a3fe47 Mon Sep 17 00:00:00 2001 From: hecomi Date: Fri, 28 Oct 2016 18:48:53 +0900 Subject: [PATCH] change class names. / add multiple screen example. / performance tuning. --- .../{Scenes.meta => Examples.meta} | 0 .../uDesktopDuplication/Examples/Prefabs.meta | 9 +++++ .../Examples/Prefabs/Monitor.prefab | Bin 0 -> 9416 bytes .../Examples/Prefabs/Monitor.prefab.meta | 8 +++++ .../uDesktopDuplication/Examples/Scenes.meta | 9 +++++ .../Scenes/Multiple Monitors.unity} | Bin 18860 -> 14088 bytes .../Scenes/Multiple Monitors.unity.meta | 8 +++++ .../Examples/Scenes/Primary Monitor.unity | Bin 0 -> 14320 bytes .../Scenes/Primary Monitor.unity.meta} | 0 .../uDesktopDuplication/Examples/Scripts.meta | 9 +++++ .../Scripts/MultipleMonitorCreator.cs | 20 +++++++++++ .../Scripts/MultipleMonitorCreator.cs.meta | 12 +++++++ .../Plugins/uDesktopDuplication.dll | Bin 20480 -> 20480 bytes .../Scripts/{uDD_Cursor.cs => Cursor.cs} | 9 ++--- .../{uDD_Cursor.cs.meta => Cursor.cs.meta} | 0 .../Scripts/{uDD_Lib.cs => Lib.cs} | 4 ++- .../Scripts/{uDD_Lib.cs.meta => Lib.cs.meta} | 0 .../Scripts/{uDD_Manager.cs => Manager.cs} | 31 ++++++++++++------ .../{uDD_Manager.cs.meta => Manager.cs.meta} | 0 .../Scripts/{uDD_Monitor.cs => Monitor.cs} | 27 +++++++-------- .../{uDD_Monitor.cs.meta => Monitor.cs.meta} | 0 .../Scripts/{uDD_Texture.cs => Texture.cs} | 25 +++++++++++--- .../{uDD_Texture.cs.meta => Texture.cs.meta} | 0 .../uDesktopDuplication/main.cpp | 16 ++++++--- 24 files changed, 146 insertions(+), 41 deletions(-) rename Assets/uDesktopDuplication/{Scenes.meta => Examples.meta} (100%) create mode 100644 Assets/uDesktopDuplication/Examples/Prefabs.meta create mode 100644 Assets/uDesktopDuplication/Examples/Prefabs/Monitor.prefab create mode 100644 Assets/uDesktopDuplication/Examples/Prefabs/Monitor.prefab.meta create mode 100644 Assets/uDesktopDuplication/Examples/Scenes.meta rename Assets/uDesktopDuplication/{Scenes/Example.unity => Examples/Scenes/Multiple Monitors.unity} (61%) create mode 100644 Assets/uDesktopDuplication/Examples/Scenes/Multiple Monitors.unity.meta create mode 100644 Assets/uDesktopDuplication/Examples/Scenes/Primary Monitor.unity rename Assets/uDesktopDuplication/{Scenes/Example.unity.meta => Examples/Scenes/Primary Monitor.unity.meta} (100%) create mode 100644 Assets/uDesktopDuplication/Examples/Scripts.meta create mode 100644 Assets/uDesktopDuplication/Examples/Scripts/MultipleMonitorCreator.cs create mode 100644 Assets/uDesktopDuplication/Examples/Scripts/MultipleMonitorCreator.cs.meta rename Assets/uDesktopDuplication/Scripts/{uDD_Cursor.cs => Cursor.cs} (79%) rename Assets/uDesktopDuplication/Scripts/{uDD_Cursor.cs.meta => Cursor.cs.meta} (100%) rename Assets/uDesktopDuplication/Scripts/{uDD_Lib.cs => Lib.cs} (88%) rename Assets/uDesktopDuplication/Scripts/{uDD_Lib.cs.meta => Lib.cs.meta} (100%) rename Assets/uDesktopDuplication/Scripts/{uDD_Manager.cs => Manager.cs} (58%) rename Assets/uDesktopDuplication/Scripts/{uDD_Manager.cs.meta => Manager.cs.meta} (100%) rename Assets/uDesktopDuplication/Scripts/{uDD_Monitor.cs => Monitor.cs} (54%) rename Assets/uDesktopDuplication/Scripts/{uDD_Monitor.cs.meta => Monitor.cs.meta} (100%) rename Assets/uDesktopDuplication/Scripts/{uDD_Texture.cs => Texture.cs} (51%) rename Assets/uDesktopDuplication/Scripts/{uDD_Texture.cs.meta => Texture.cs.meta} (100%) diff --git a/Assets/uDesktopDuplication/Scenes.meta b/Assets/uDesktopDuplication/Examples.meta similarity index 100% rename from Assets/uDesktopDuplication/Scenes.meta rename to Assets/uDesktopDuplication/Examples.meta diff --git a/Assets/uDesktopDuplication/Examples/Prefabs.meta b/Assets/uDesktopDuplication/Examples/Prefabs.meta new file mode 100644 index 0000000..73b3f05 --- /dev/null +++ b/Assets/uDesktopDuplication/Examples/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 678e1de5e6de7914baed516a78940503 +folderAsset: yes +timeCreated: 1477643728 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/uDesktopDuplication/Examples/Prefabs/Monitor.prefab b/Assets/uDesktopDuplication/Examples/Prefabs/Monitor.prefab new file mode 100644 index 0000000000000000000000000000000000000000..d362059836f6f49965fde2c9cc57068bdc3a78b5 GIT binary patch literal 9416 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 F{tcKriy{C3 literal 0 HcmV?d00001 diff --git a/Assets/uDesktopDuplication/Examples/Prefabs/Monitor.prefab.meta b/Assets/uDesktopDuplication/Examples/Prefabs/Monitor.prefab.meta new file mode 100644 index 0000000..940e365 --- /dev/null +++ b/Assets/uDesktopDuplication/Examples/Prefabs/Monitor.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: de6f36e446e5e8a48bf61fe198985bb4 +timeCreated: 1477643732 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/uDesktopDuplication/Examples/Scenes.meta b/Assets/uDesktopDuplication/Examples/Scenes.meta new file mode 100644 index 0000000..f0bb05b --- /dev/null +++ b/Assets/uDesktopDuplication/Examples/Scenes.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0a3456d4b2f59e84f969e31deca4016d +folderAsset: yes +timeCreated: 1477643596 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/uDesktopDuplication/Scenes/Example.unity b/Assets/uDesktopDuplication/Examples/Scenes/Multiple Monitors.unity similarity index 61% rename from Assets/uDesktopDuplication/Scenes/Example.unity rename to Assets/uDesktopDuplication/Examples/Scenes/Multiple Monitors.unity index 368eaa2b24b6dc236e405c0e5ec51ddd36ac58de..69ff890a566aed7070d0bb999b3a4b5974d16916 100644 GIT binary patch delta 563 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 + texture.monitorId = i; + } + } +} + diff --git a/Assets/uDesktopDuplication/Examples/Scripts/MultipleMonitorCreator.cs.meta b/Assets/uDesktopDuplication/Examples/Scripts/MultipleMonitorCreator.cs.meta new file mode 100644 index 0000000..36917ef --- /dev/null +++ b/Assets/uDesktopDuplication/Examples/Scripts/MultipleMonitorCreator.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fb22986017201f74aa864dcbf0cab751 +timeCreated: 1477643778 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/uDesktopDuplication/Plugins/uDesktopDuplication.dll b/Assets/uDesktopDuplication/Plugins/uDesktopDuplication.dll index aa96a8a2ebb9baf0a97c0151f49c2f2e7a475a9d..bf5b12a4c9a83acde9f5bbf76d72ae666f04736e 100644 GIT binary patch delta 6207 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 + texture_ = GetComponent(); } void Update() diff --git a/Assets/uDesktopDuplication/Scripts/uDD_Cursor.cs.meta b/Assets/uDesktopDuplication/Scripts/Cursor.cs.meta similarity index 100% rename from Assets/uDesktopDuplication/Scripts/uDD_Cursor.cs.meta rename to Assets/uDesktopDuplication/Scripts/Cursor.cs.meta diff --git a/Assets/uDesktopDuplication/Scripts/uDD_Lib.cs b/Assets/uDesktopDuplication/Scripts/Lib.cs similarity index 88% rename from Assets/uDesktopDuplication/Scripts/uDD_Lib.cs rename to Assets/uDesktopDuplication/Scripts/Lib.cs index f3b7d71..2016a75 100644 --- a/Assets/uDesktopDuplication/Scripts/uDD_Lib.cs +++ b/Assets/uDesktopDuplication/Scripts/Lib.cs @@ -5,11 +5,13 @@ using System.Runtime.InteropServices; namespace uDesktopDuplication { -public static class uDD_Lib +public static class Lib { [DllImport("uDesktopDuplication")] public static extern int GetMonitorCount(); [DllImport("uDesktopDuplication")] + public static extern void SetTimeout(int timeout); + [DllImport("uDesktopDuplication")] public static extern IntPtr GetRenderEventFunc(); [DllImport("uDesktopDuplication")] public static extern void GetName(int id, StringBuilder buf, int len); diff --git a/Assets/uDesktopDuplication/Scripts/uDD_Lib.cs.meta b/Assets/uDesktopDuplication/Scripts/Lib.cs.meta similarity index 100% rename from Assets/uDesktopDuplication/Scripts/uDD_Lib.cs.meta rename to Assets/uDesktopDuplication/Scripts/Lib.cs.meta diff --git a/Assets/uDesktopDuplication/Scripts/uDD_Manager.cs b/Assets/uDesktopDuplication/Scripts/Manager.cs similarity index 58% rename from Assets/uDesktopDuplication/Scripts/uDD_Manager.cs rename to Assets/uDesktopDuplication/Scripts/Manager.cs index 396a235..0220dde 100644 --- a/Assets/uDesktopDuplication/Scripts/uDD_Manager.cs +++ b/Assets/uDesktopDuplication/Scripts/Manager.cs @@ -5,26 +5,31 @@ using System.Collections.Generic; namespace uDesktopDuplication { -public class uDD_Manager : MonoBehaviour +public class Manager : MonoBehaviour { - private static uDD_Manager instance_; - public static uDD_Manager instance + private static Manager instance_; + public static Manager instance { get { if (instance_) return instance_; var go = new GameObject("uDesktopDuplicationManager"); - return go.AddComponent(); + return go.AddComponent(); } } - private List monitors_ = new List(); - static public List monitors + private List monitors_ = new List(); + static public List monitors { get { return instance.monitors_; } } - static public uDD_Monitor primary + static public int monitorCount + { + get { return instance.monitors_.Count; } + } + + static public Monitor primary { get { @@ -32,6 +37,9 @@ public class uDD_Manager : MonoBehaviour } } + [SerializeField, Tooltip("Set Desktop Duplication API timeout (milliseconds).")] + int timeout = 0; + private Coroutine renderCoroutine_ = null; void Awake() @@ -39,9 +47,11 @@ public class uDD_Manager : MonoBehaviour if (instance_ != null) return; instance_ = this; - for (int i = 0; i < uDD_Monitor.count; ++i) { - monitors.Add(new uDD_Monitor(i)); + for (int i = 0; i < Lib.GetMonitorCount(); ++i) { + monitors.Add(new Monitor(i)); } + + Lib.SetTimeout(timeout); } void OnEnable() @@ -61,7 +71,8 @@ public class uDD_Manager : MonoBehaviour { for (;;) { yield return new WaitForEndOfFrame(); - foreach (var monitor in monitors) { + for (int i = 0; i < monitors.Count; ++i) { + var monitor = monitors[i]; if (monitor.shouldBeUpdated) { monitor.Render(); } diff --git a/Assets/uDesktopDuplication/Scripts/uDD_Manager.cs.meta b/Assets/uDesktopDuplication/Scripts/Manager.cs.meta similarity index 100% rename from Assets/uDesktopDuplication/Scripts/uDD_Manager.cs.meta rename to Assets/uDesktopDuplication/Scripts/Manager.cs.meta diff --git a/Assets/uDesktopDuplication/Scripts/uDD_Monitor.cs b/Assets/uDesktopDuplication/Scripts/Monitor.cs similarity index 54% rename from Assets/uDesktopDuplication/Scripts/uDD_Monitor.cs rename to Assets/uDesktopDuplication/Scripts/Monitor.cs index 800b6f7..db5ac75 100644 --- a/Assets/uDesktopDuplication/Scripts/uDD_Monitor.cs +++ b/Assets/uDesktopDuplication/Scripts/Monitor.cs @@ -3,18 +3,13 @@ namespace uDesktopDuplication { -public class uDD_Monitor +public class Monitor { - public uDD_Monitor(int id) + public Monitor(int id) { this.id = id; } - public static int count - { - get { return uDD_Lib.GetMonitorCount(); } - } - public int id { get; @@ -23,37 +18,37 @@ public class uDD_Monitor public string name { - get { return uDD_Lib.GetName(id); } + get { return Lib.GetName(id); } } public bool isPrimary { - get { return uDD_Lib.IsPrimary(id); } + get { return Lib.IsPrimary(id); } } public int width { - get { return uDD_Lib.GetWidth(id); } + get { return Lib.GetWidth(id); } } public int height { - get { return uDD_Lib.GetHeight(id); } + get { return Lib.GetHeight(id); } } public bool isPointerVisible { - get { return uDD_Lib.IsPointerVisible(id); } + get { return Lib.IsPointerVisible(id); } } public int pointerX { - get { return uDD_Lib.GetPointerX(id); } + get { return Lib.GetPointerX(id); } } public int pointerY { - get { return uDD_Lib.GetPointerY(id); } + get { return Lib.GetPointerY(id); } } public bool shouldBeUpdated @@ -69,7 +64,7 @@ public class uDD_Monitor { if (texture_ == null) { texture_ = new Texture2D(width, height, TextureFormat.BGRA32, false); - uDD_Lib.SetTexturePtr(id, texture_.GetNativeTexturePtr()); + Lib.SetTexturePtr(id, texture_.GetNativeTexturePtr()); } return texture_; } @@ -77,7 +72,7 @@ public class uDD_Monitor public void Render() { - GL.IssuePluginEvent(uDD_Lib.GetRenderEventFunc(), id); + GL.IssuePluginEvent(Lib.GetRenderEventFunc(), id); } } diff --git a/Assets/uDesktopDuplication/Scripts/uDD_Monitor.cs.meta b/Assets/uDesktopDuplication/Scripts/Monitor.cs.meta similarity index 100% rename from Assets/uDesktopDuplication/Scripts/uDD_Monitor.cs.meta rename to Assets/uDesktopDuplication/Scripts/Monitor.cs.meta diff --git a/Assets/uDesktopDuplication/Scripts/uDD_Texture.cs b/Assets/uDesktopDuplication/Scripts/Texture.cs similarity index 51% rename from Assets/uDesktopDuplication/Scripts/uDD_Texture.cs rename to Assets/uDesktopDuplication/Scripts/Texture.cs index 647e584..2f5ba05 100644 --- a/Assets/uDesktopDuplication/Scripts/uDD_Texture.cs +++ b/Assets/uDesktopDuplication/Scripts/Texture.cs @@ -3,9 +3,26 @@ namespace uDesktopDuplication { -public class uDD_Texture : MonoBehaviour +[AddComponentMenu("uDesktopDuplication/Texture")] +public class Texture : MonoBehaviour { - public uDD_Monitor monitor { get; set; } + private Monitor monitor_; + public Monitor monitor + { + get { return monitor_; } + set + { + monitor_ = value; + material_ = GetComponent().material; + material_.mainTexture = monitor_.texture; + } + } + + public int monitorId + { + get { return monitor.id; } + set { monitor = Manager.monitors[Mathf.Clamp(value, 0, Manager.monitorCount - 1)]; } + } public bool invertX = false; public bool invertY = false; @@ -15,10 +32,8 @@ public class uDD_Texture : MonoBehaviour void OnEnable() { if (monitor == null) { - monitor = uDD_Manager.primary; + monitor = Manager.primary; } - material_ = GetComponent().material; - material_.mainTexture = monitor.texture; } void Update() diff --git a/Assets/uDesktopDuplication/Scripts/uDD_Texture.cs.meta b/Assets/uDesktopDuplication/Scripts/Texture.cs.meta similarity index 100% rename from Assets/uDesktopDuplication/Scripts/uDD_Texture.cs.meta rename to Assets/uDesktopDuplication/Scripts/Texture.cs.meta diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp index 22bf2ba..7186f83 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp @@ -26,6 +26,7 @@ namespace }; IUnityInterfaces* g_unity = nullptr; + int g_timeout = 10; std::vector g_monitors; } @@ -113,8 +114,7 @@ extern "C" IDXGIResource* resource = nullptr; DXGI_OUTDUPL_FRAME_INFO frameInfo; - const UINT timeout = 100; // ms - hr = monitor.output->AcquireNextFrame(timeout, &frameInfo, &resource); + hr = monitor.output->AcquireNextFrame(g_timeout, &frameInfo, &resource); switch (hr) { case S_OK: @@ -123,7 +123,7 @@ extern "C" } case DXGI_ERROR_ACCESS_LOST: { - FinalizeDuplication(); + resource->Release(); InitializeDuplication(); return; } @@ -142,16 +142,17 @@ extern "C" if (hr != S_OK) { resource->Release(); + monitor.output->ReleaseFrame(); return; } - resource->Release(); - ID3D11DeviceContext* context; auto device = g_unity->Get()->GetDevice(); device->GetImmediateContext(&context); context->CopyResource(monitor.texture, texture); + resource->Release(); + texture->Release(); monitor.output->ReleaseFrame(); } @@ -165,6 +166,11 @@ extern "C" return g_monitors.size(); } + UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API SetTimeout(int timeout) + { + g_timeout = timeout; + } + UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API GetName(int id, char* buf, int len) { if (!DoesMonitorExist(id)) return;