diff --git a/Assets/uDesktopDuplication/Plugins/uDesktopDuplication.dll b/Assets/uDesktopDuplication/Plugins/uDesktopDuplication.dll index c6dce65..70c3a9a 100644 Binary files a/Assets/uDesktopDuplication/Plugins/uDesktopDuplication.dll and b/Assets/uDesktopDuplication/Plugins/uDesktopDuplication.dll differ diff --git a/Assets/uDesktopDuplication/Resources.meta b/Assets/uDesktopDuplication/Resources.meta new file mode 100644 index 0000000..b7c92e3 --- /dev/null +++ b/Assets/uDesktopDuplication/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b281589e6b8e27b4fbf0509d620b7871 +folderAsset: yes +timeCreated: 1478354860 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/uDesktopDuplication/Resources/uDesktopDuplication.meta b/Assets/uDesktopDuplication/Resources/uDesktopDuplication.meta new file mode 100644 index 0000000..7252115 --- /dev/null +++ b/Assets/uDesktopDuplication/Resources/uDesktopDuplication.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e36cd526b654d024e875d5110a1b0442 +folderAsset: yes +timeCreated: 1478354877 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/uDesktopDuplication/Textures.meta b/Assets/uDesktopDuplication/Resources/uDesktopDuplication/Textures.meta similarity index 100% rename from Assets/uDesktopDuplication/Textures.meta rename to Assets/uDesktopDuplication/Resources/uDesktopDuplication/Textures.meta diff --git a/Assets/uDesktopDuplication/Textures/NotAvailable.png b/Assets/uDesktopDuplication/Resources/uDesktopDuplication/Textures/NotAvailable.png similarity index 100% rename from Assets/uDesktopDuplication/Textures/NotAvailable.png rename to Assets/uDesktopDuplication/Resources/uDesktopDuplication/Textures/NotAvailable.png diff --git a/Assets/uDesktopDuplication/Textures/NotAvailable.png.meta b/Assets/uDesktopDuplication/Resources/uDesktopDuplication/Textures/NotAvailable.png.meta similarity index 100% rename from Assets/uDesktopDuplication/Textures/NotAvailable.png.meta rename to Assets/uDesktopDuplication/Resources/uDesktopDuplication/Textures/NotAvailable.png.meta diff --git a/Assets/uDesktopDuplication/Scripts/Lib.cs b/Assets/uDesktopDuplication/Scripts/Lib.cs index 149dd5a..a7004e5 100644 --- a/Assets/uDesktopDuplication/Scripts/Lib.cs +++ b/Assets/uDesktopDuplication/Scripts/Lib.cs @@ -50,6 +50,8 @@ public static class Lib [DllImport("uDesktopDuplication")] public static extern IntPtr GetRenderEventFunc(); [DllImport("uDesktopDuplication")] + public static extern bool IsAvailable(); + [DllImport("uDesktopDuplication")] public static extern void GetName(int id, StringBuilder buf, int len); [DllImport("uDesktopDuplication")] public static extern int GetLeft(int id); diff --git a/Assets/uDesktopDuplication/Scripts/Monitor.cs b/Assets/uDesktopDuplication/Scripts/Monitor.cs index 961bb8e..553e6c1 100644 --- a/Assets/uDesktopDuplication/Scripts/Monitor.cs +++ b/Assets/uDesktopDuplication/Scripts/Monitor.cs @@ -21,6 +21,11 @@ public class Monitor get { return id < Manager.monitorCount; } } + public bool available + { + get { return Lib.IsAvailable(); } + } + public string name { get { return Lib.GetName(id); } @@ -122,6 +127,9 @@ public class Monitor { get { + if (!available) { + return Resources.Load("uDesktopDuplication/Textures/NotAvailable"); + } if (texture_ == null) { CreateTexture(); } @@ -131,7 +139,7 @@ public class Monitor public void Render() { - if (texture_) { + if (texture_ && available) { Lib.SetTexturePtr(id, texture_.GetNativeTexturePtr()); GL.IssuePluginEvent(Lib.GetRenderEventFunc(), id); } @@ -144,6 +152,8 @@ public class Monitor void CreateTexture() { + if (!available) return; + var w = isHorizontal ? width : height; var h = isHorizontal ? height : width; bool shouldCreate = true; diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp index 5682225..0719706 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp @@ -126,6 +126,16 @@ extern "C" g_manager->SetTimeout(timeout); } + UNITY_INTERFACE_EXPORT bool UNITY_INTERFACE_API IsAvailable(int id) + { + if (!g_manager) return false; + if (auto monitor = g_manager->GetMonitor(id)) + { + return monitor->IsAvailable(); + } + return false; + } + UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API GetName(int id, char* buf, int len) { if (!g_manager) return;