diff --git a/Assets/uDesktopDuplication/Examples/Scenes/Toggle Monitors.unity b/Assets/uDesktopDuplication/Examples/Scenes/Toggle Monitors.unity index a9cf932..8ba0857 100644 Binary files a/Assets/uDesktopDuplication/Examples/Scenes/Toggle Monitors.unity and b/Assets/uDesktopDuplication/Examples/Scenes/Toggle Monitors.unity differ diff --git a/Assets/uDesktopDuplication/Plugins/uDesktopDuplication.dll b/Assets/uDesktopDuplication/Plugins/uDesktopDuplication.dll index bf5b12a..91125cb 100644 Binary files a/Assets/uDesktopDuplication/Plugins/uDesktopDuplication.dll and b/Assets/uDesktopDuplication/Plugins/uDesktopDuplication.dll differ diff --git a/Assets/uDesktopDuplication/Scripts/Lib.cs b/Assets/uDesktopDuplication/Scripts/Lib.cs index 2016a75..9a5564c 100644 --- a/Assets/uDesktopDuplication/Scripts/Lib.cs +++ b/Assets/uDesktopDuplication/Scripts/Lib.cs @@ -29,6 +29,8 @@ public static class Lib public static extern int GetPointerY(int id); [DllImport("uDesktopDuplication")] public static extern int SetTexturePtr(int id, IntPtr ptr); + [DllImport("uDesktopDuplication")] + public static extern int GetErrorCode(); public static string GetName(int id) { diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp index 7186f83..612bd42 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp @@ -27,6 +27,7 @@ namespace IUnityInterfaces* g_unity = nullptr; int g_timeout = 10; + HRESULT g_errorCode = 0; std::vector g_monitors; } @@ -110,12 +111,11 @@ extern "C" if (monitor.output == nullptr || monitor.texture == nullptr) return; - HRESULT hr; IDXGIResource* resource = nullptr; DXGI_OUTDUPL_FRAME_INFO frameInfo; - hr = monitor.output->AcquireNextFrame(g_timeout, &frameInfo, &resource); - switch (hr) + g_errorCode = monitor.output->AcquireNextFrame(g_timeout, &frameInfo, &resource); + switch (g_errorCode) { case S_OK: { @@ -138,8 +138,8 @@ extern "C" monitor.pointerY = frameInfo.PointerPosition.Position.y; ID3D11Texture2D* texture; - hr = resource->QueryInterface(__uuidof(ID3D11Texture2D), reinterpret_cast(&texture)); - if (hr != S_OK) + g_errorCode = resource->QueryInterface(__uuidof(ID3D11Texture2D), reinterpret_cast(&texture)); + if (g_errorCode != S_OK) { resource->Release(); monitor.output->ReleaseFrame(); @@ -218,4 +218,9 @@ extern "C" if (!DoesMonitorExist(id)) return; g_monitors[id].texture = reinterpret_cast(texture); } + + UNITY_INTERFACE_EXPORT int UNITY_INTERFACE_API GetErrorCode() + { + return static_cast(g_errorCode); + } } \ No newline at end of file