From 2e763d994d67fac0ad9cebd7806e54533cff1f27 Mon Sep 17 00:00:00 2001 From: hecomi Date: Fri, 4 Nov 2016 19:11:17 +0900 Subject: [PATCH] prevent screen lost after admin screen. --- .../Plugins/uDesktopDuplication.dll | Bin 141312 -> 166400 bytes Assets/uDesktopDuplication/Scripts/Lib.cs | 16 +++++ Assets/uDesktopDuplication/Scripts/Manager.cs | 56 ++++++++++++++-- Assets/uDesktopDuplication/Scripts/Monitor.cs | 36 +++++++++-- .../uDesktopDuplication/Common.h | 9 ++- .../uDesktopDuplication/Monitor.cpp | 45 +++++++++++-- .../uDesktopDuplication/MonitorManager.cpp | 20 +++++- .../uDesktopDuplication/MonitorManager.h | 5 ++ .../uDesktopDuplication/main.cpp | 60 +++++++++++++++++- 9 files changed, 230 insertions(+), 17 deletions(-) diff --git a/Assets/uDesktopDuplication/Plugins/uDesktopDuplication.dll b/Assets/uDesktopDuplication/Plugins/uDesktopDuplication.dll index 5964779dabf7a4613901f0d5d50e08b87047ef08..2da96d20aa7a794515b148dda78a504085e1a160 100644 GIT binary patch literal 166400 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 F{}&%2l=lDt literal 141312 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%0DnD* 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 diff --git a/Assets/uDesktopDuplication/Scripts/Lib.cs b/Assets/uDesktopDuplication/Scripts/Lib.cs index 2445604..21ef19d 100644 --- a/Assets/uDesktopDuplication/Scripts/Lib.cs +++ b/Assets/uDesktopDuplication/Scripts/Lib.cs @@ -5,6 +5,12 @@ using System.Runtime.InteropServices; namespace uDesktopDuplication { +public enum Message +{ + None = -1, + Reinitialized = 0, +} + public enum CursorShapeType { MonoChrome = 1, @@ -14,6 +20,16 @@ public enum CursorShapeType public static class Lib { + public delegate void MessageHandler(Message message); + + [DllImport("uDesktopDuplication")] + public static extern void Initialize(); + [DllImport("uDesktopDuplication")] + public static extern void Finalize(); + [DllImport("uDesktopDuplication")] + public static extern void Update(); + [DllImport("uDesktopDuplication")] + public static extern Message PopMessage(); [DllImport("uDesktopDuplication")] public static extern int GetMonitorCount(); [DllImport("uDesktopDuplication")] diff --git a/Assets/uDesktopDuplication/Scripts/Manager.cs b/Assets/uDesktopDuplication/Scripts/Manager.cs index 0220dde..968ce67 100644 --- a/Assets/uDesktopDuplication/Scripts/Manager.cs +++ b/Assets/uDesktopDuplication/Scripts/Manager.cs @@ -26,7 +26,7 @@ public class Manager : MonoBehaviour static public int monitorCount { - get { return instance.monitors_.Count; } + get { return Lib.GetMonitorCount(); } } static public Monitor primary @@ -41,19 +41,25 @@ public class Manager : MonoBehaviour int timeout = 0; private Coroutine renderCoroutine_ = null; + Message message_ = Message.None; void Awake() { + Lib.Initialize(); + if (instance_ != null) return; instance_ = this; - for (int i = 0; i < Lib.GetMonitorCount(); ++i) { - monitors.Add(new Monitor(i)); - } + CreateMonitors(); Lib.SetTimeout(timeout); } + void OnApplicationQuit() + { + Lib.Finalize(); + } + void OnEnable() { renderCoroutine_ = StartCoroutine(OnRender()); @@ -67,6 +73,26 @@ public class Manager : MonoBehaviour } } + void Update() + { + Lib.Update(); + + var message = Lib.PopMessage(); + while (message != Message.None) { + switch (message) { + case Message.Reinitialized: + Debug.Log("Reinitialize"); + Reinitialize(); + break; + default: + break; + } + message = Lib.PopMessage(); + } + + message_ = Message.None; + } + IEnumerator OnRender() { for (;;) { @@ -80,6 +106,28 @@ public class Manager : MonoBehaviour } } } + + void CreateMonitors() + { + for (int i = 0; i < monitorCount; ++i) { + monitors.Add(new Monitor(i)); + } + } + + void OnMessage(Message message) + { + message_ = message; + } + + void Reinitialize() + { + for (int i = 0; i < monitorCount; ++i) { + if (i == monitors.Count) { + monitors.Add(new Monitor(i)); + } + monitors[i].Reinitialize(); + } + } } } \ No newline at end of file diff --git a/Assets/uDesktopDuplication/Scripts/Monitor.cs b/Assets/uDesktopDuplication/Scripts/Monitor.cs index f886f6b..9ee82d4 100644 --- a/Assets/uDesktopDuplication/Scripts/Monitor.cs +++ b/Assets/uDesktopDuplication/Scripts/Monitor.cs @@ -16,6 +16,11 @@ public class Monitor private set; } + public bool exists + { + get { return id < Manager.monitorCount; } + } + public string name { get { return Lib.GetName(id); } @@ -93,10 +98,7 @@ public class Monitor get { if (texture_ == null) { - var w = isHorizontal ? width : height; - var h = isHorizontal ? height : width; - texture_ = new Texture2D(w, h, TextureFormat.BGRA32, false); - Lib.SetTexturePtr(id, texture_.GetNativeTexturePtr()); + CreateTexture(); } return texture_; } @@ -104,6 +106,7 @@ public class Monitor public void Render() { + Lib.SetTexturePtr(id, texture_.GetNativeTexturePtr()); GL.IssuePluginEvent(Lib.GetRenderEventFunc(), id); } @@ -111,6 +114,31 @@ public class Monitor { Lib.UpdateCursorTexture(id, ptr); } + + void CreateTexture() + { + var w = isHorizontal ? width : height; + var h = isHorizontal ? height : width; + bool shouldCreate = true; + + if (texture_) { + if (texture_.width != w || texture_.height != h) { + if (texture_) Object.DestroyImmediate(texture_); + shouldCreate = true; + } else { + shouldCreate = false; + } + } + + if (shouldCreate) { + texture_ = new Texture2D(w, h, TextureFormat.BGRA32, false); + } + } + + public void Reinitialize() + { + CreateTexture(); + } } } \ No newline at end of file diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/Common.h b/Plugins/uDesktopDuplication/uDesktopDuplication/Common.h index ade96bf..5367cbe 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/Common.h +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/Common.h @@ -5,4 +5,11 @@ class MonitorManager; IUnityInterfaces* GetUnity(); ID3D11Device* GetDevice(); -const std::unique_ptr& GetMonitorManager(); \ No newline at end of file +const std::unique_ptr& GetMonitorManager(); + +enum class Message +{ + None = -1, + Reinitialized = 0, +}; +void SendMessageToUnity(Message message); \ No newline at end of file diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp index 5883d6b..bff7928 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp @@ -8,27 +8,64 @@ Monitor::Monitor(int id, IDXGIOutput* output) : id_(id) { - // MEMO: 'output' will be released automatically after this ctor. output->GetDesc(&outputDesc_); monitorInfo_.cbSize = sizeof(MONITORINFOEX); GetMonitorInfo(outputDesc_.Monitor, &monitorInfo_); auto output1 = reinterpret_cast(output); - output1->DuplicateOutput(GetDevice(), &deskDupl_); + const auto hr = output1->DuplicateOutput(GetDevice(), &deskDupl_); + + auto error = 0; + + // TODO: error check + switch (hr) + { + case S_OK: + break; + case E_INVALIDARG: + error = 1; + break; + case E_ACCESSDENIED: + error = 2; + // For example, when the user presses Ctrl + Alt + Delete and the screen + // switches to admin screen, this error occurs. + break; + case DXGI_ERROR_UNSUPPORTED: + error = 3; + break; + case DXGI_ERROR_NOT_CURRENTLY_AVAILABLE: + error = 4; + // Other application use Desktop Duplication API... + break; + case DXGI_ERROR_SESSION_DISCONNECTED: + error = 5; + break; + } cursor_ = std::make_unique(this); + + // MEMO: 'output' will be released automatically after this ctor. } Monitor::~Monitor() { - deskDupl_->Release(); + if (deskDupl_ != nullptr) + { + deskDupl_->Release(); + } } HRESULT Monitor::Render(UINT timeout) { - if (deskDupl_ == nullptr || unityTexture_ == nullptr) return 0; + if (deskDupl_ == nullptr) + { + GetMonitorManager()->RequireReinitilization(); + return 0; + } + + if (unityTexture_ == nullptr) return 0; IDXGIResource* resource = nullptr; DXGI_OUTDUPL_FRAME_INFO frameInfo; diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp index 8f9b2dc..d4a4f5a 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp @@ -6,6 +6,7 @@ #include "IUnityInterface.h" #include "IUnityGraphicsD3D11.h" +#include "Common.h" #include "Monitor.h" #include "Cursor.h" #include "MonitorManager.h" @@ -56,6 +57,13 @@ void MonitorManager::Finalize() } +void MonitorManager::Reinitialize() +{ + Initialize(); + SendMessageToUnity(Message::Reinitialized); +} + + std::shared_ptr MonitorManager::GetMonitor(int id) const { if (id >= 0 && id < monitors_.size()) @@ -66,6 +74,16 @@ std::shared_ptr MonitorManager::GetMonitor(int id) const } +void MonitorManager::Update() +{ + if (isReinitializationRequired_) + { + Reinitialize(); + isReinitializationRequired_ = false; + } +} + + void MonitorManager::OnRender(int id) { if (auto monitor = GetMonitor(id)) @@ -75,7 +93,7 @@ void MonitorManager::OnRender(int id) const auto hr = monitor->Render(timeout_); if (hr == DXGI_ERROR_ACCESS_LOST) { - Initialize(); + isReinitializationRequired_ = true; } } } diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.h b/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.h index 08b9e9b..efa03ab 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.h +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.h @@ -14,6 +14,8 @@ public: explicit MonitorManager(); ~MonitorManager(); + void RequireReinitilization() { isReinitializationRequired_ = true; } + void SetCursorMonitorId(int id) { cursorMonitorId_ = id; } int GetCursorMonitorId() const { return cursorMonitorId_; } std::shared_ptr GetMonitor(int id) const; @@ -21,10 +23,12 @@ public: private: void Initialize(); void Finalize(); + void Reinitialize(); // Setters from Unity public: void OnRender(int id); + void Update(); void UpdateCursorTexture(int id, ID3D11Texture2D* ptr); void SetTimeout(int timeout); void SetTexturePtr(int id, void* texture); @@ -49,4 +53,5 @@ private: std::vector> monitors_; std::shared_ptr cursor_; int cursorMonitorId_ = -1; + bool isReinitializationRequired_ = false; }; \ No newline at end of file diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp index 03f5d78..ee035b1 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "IUnityInterface.h" #include "IUnityGraphics.h" @@ -18,6 +19,7 @@ namespace { IUnityInterfaces* g_unity = nullptr; std::unique_ptr g_manager; + std::queue g_messages; } @@ -32,27 +34,49 @@ ID3D11Device* GetDevice() return GetUnity()->Get()->GetDevice(); } + const std::unique_ptr& GetMonitorManager() { return g_manager; } +void SendMessageToUnity(Message message) +{ + g_messages.push(message); +} + + extern "C" { + UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API Initialize() + { + if (g_unity && !g_manager) + { + g_manager = std::make_unique(); + } + } + + UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API Finalize() + { + g_manager.reset(); + } + UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API UnityPluginLoad(IUnityInterfaces* unityInterfaces) { g_unity = unityInterfaces; - g_manager = std::make_unique(); + Initialize(); } UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API UnityPluginUnload() { - g_manager.reset(); + g_unity = nullptr; + Finalize(); } void UNITY_INTERFACE_API OnRenderEvent(int id) { + if (!g_manager) return; g_manager->OnRender(id); } @@ -61,78 +85,108 @@ extern "C" return OnRenderEvent; } + UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API Update() + { + if (!g_manager) return; + g_manager->Update(); + } + + UNITY_INTERFACE_EXPORT Message PopMessage() + { + if (g_messages.empty()) return Message::None; + + const auto message = g_messages.front(); + g_messages.pop(); + return message; + } + UNITY_INTERFACE_EXPORT size_t UNITY_INTERFACE_API GetMonitorCount() { + if (!g_manager) return 0; return g_manager->GetMonitorCount(); } UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API SetTimeout(int timeout) { + if (!g_manager) return; g_manager->SetTimeout(timeout); } UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API GetName(int id, char* buf, int len) { + if (!g_manager) return; g_manager->GetName(id, buf, len); } UNITY_INTERFACE_EXPORT bool UNITY_INTERFACE_API IsPrimary(int id) { + if (!g_manager) return false; return g_manager->IsPrimary(id); } UNITY_INTERFACE_EXPORT int UNITY_INTERFACE_API GetWidth(int id) { + if (!g_manager) return -1; return g_manager->GetWidth(id); } UNITY_INTERFACE_EXPORT int UNITY_INTERFACE_API GetHeight(int id) { + if (!g_manager) return -1; return g_manager->GetHeight(id); } - UNITY_INTERFACE_EXPORT int UNITY_INTERFACE_API IsCursorVisible(int id) + UNITY_INTERFACE_EXPORT bool UNITY_INTERFACE_API IsCursorVisible(int id) { + if (!g_manager) return false; return g_manager->IsCursorVisible(id); } UNITY_INTERFACE_EXPORT int UNITY_INTERFACE_API GetCursorX(int id) { + if (!g_manager) return -1; return g_manager->GetCursorX(id); } UNITY_INTERFACE_EXPORT int UNITY_INTERFACE_API GetCursorY(int id) { + if (!g_manager) return -1; return g_manager->GetCursorY(id); } UNITY_INTERFACE_EXPORT int UNITY_INTERFACE_API GetCursorShapeWidth(int id) { + if (!g_manager) return -1; return g_manager->GetCursorShapeWidth(id); } UNITY_INTERFACE_EXPORT int UNITY_INTERFACE_API GetCursorShapeHeight(int id) { + if (!g_manager) return -1; return g_manager->GetCursorShapeHeight(id); } UNITY_INTERFACE_EXPORT int UNITY_INTERFACE_API GetCursorShapePitch(int id) { + if (!g_manager) return -1; return g_manager->GetCursorShapePitch(id); } UNITY_INTERFACE_EXPORT int UNITY_INTERFACE_API GetCursorShapeType(int id) { + if (!g_manager) return -1; return g_manager->GetCursorShapeType(id); } UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API UpdateCursorTexture(int id, ID3D11Texture2D* ptr) { + if (!g_manager) return; g_manager->UpdateCursorTexture(id, ptr); } UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API SetTexturePtr(int id, void* texture) { + if (!g_manager) return; g_manager->SetTexturePtr(id, texture); } } \ No newline at end of file