From f654df7f5b019c1d4310956569b6c7f2516740f6 Mon Sep 17 00:00:00 2001 From: hecomi Date: Wed, 9 Nov 2016 21:58:00 +0900 Subject: [PATCH] add debug logs and use safer code. --- .../Plugins/x86_64/uDesktopDuplication.dll | Bin 38912 -> 245248 bytes .../uDesktopDuplication/Common.h | 10 +++ .../uDesktopDuplication/Cursor.cpp | 57 ++++++++++++++++-- .../uDesktopDuplication/Monitor.cpp | 3 +- .../uDesktopDuplication/MonitorManager.cpp | 6 +- 5 files changed, 66 insertions(+), 10 deletions(-) diff --git a/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll b/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll index 1d323d31d36653b9b6a1b45ea2a82ce08c29ae47..8efd3cd13792866cc7a851af644ff4487e72afa4 100644 GIT binary patch literal 245248 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
  • 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 g+q3P~P0md!Yi3OrIk6}y82=d`f$R1P2e?0{{R3 literal 38912 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

    tH73o%Z;+Vhb&I-c}S=F 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 diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/Common.h b/Plugins/uDesktopDuplication/uDesktopDuplication/Common.h index 088026c..f74067f 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/Common.h +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/Common.h @@ -2,6 +2,7 @@ #include #include +#include // Unity interface and ID3D11Device getters @@ -12,6 +13,15 @@ struct ID3D11Device; ID3D11Device* GetDevice(); +// Utility +template +auto MakeUniqueWithReleaser(T* ptr) +{ + const auto deleter = [](T* ptr) { ptr->Release(); }; + return std::unique_ptr(ptr, deleter); +} + + // Manager getter class MonitorManager; const std::unique_ptr& GetMonitorManager(); diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/Cursor.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/Cursor.cpp index a9d03de..ec1ce39 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/Cursor.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/Cursor.cpp @@ -1,5 +1,6 @@ #include #include "Common.h" +#include "Debug.h" #include "MonitorManager.h" #include "Monitor.h" #include "Cursor.h" @@ -53,8 +54,10 @@ void Cursor::UpdateBuffer(const DXGI_OUTDUPL_FRAME_INFO& frameInfo) reinterpret_cast(apiBuffer_.get()), &bufferSize, &shapeInfo_); + if (FAILED(hr)) { + Debug::Error("Cursor::UpdateBuffer() => GetFramePointerShape() failed."); apiBuffer_.reset(); apiBufferSize_ = 0; } @@ -103,8 +106,10 @@ void Cursor::UpdateTexture() hr = GetDevice()->CreateTexture2D(&desc, nullptr, &texture); if (FAILED(hr)) { + Debug::Error("Cursor::UpdateTexture() => GetDevice()->CreateTexture2D() failed."); return; } + const auto textureReleaser = MakeUniqueWithReleaser(texture); D3D11_BOX box; box.front = 0; @@ -114,6 +119,24 @@ void Cursor::UpdateTexture() box.right = x_ + w; box.bottom = y_ + h; + const UINT mw = monitor_->GetWidth(); + const UINT mh = monitor_->GetHeight(); + if (box.left < 0 || box.top < 0 || box.right >= mw || box.bottom >= mh) + { + char buf[256]; + sprintf_s(buf, 256, + "Cursor::UpdateTexture() => D3D11_BOX is out of area (%d, %d) ~ (%d, %d).", + box.left, box.top, box.right, box.bottom); + Debug::Error(buf); + return; + } + + if (monitor_->GetUnityTexture() == nullptr) + { + Debug::Error("Cursor::UpdateTexture() => Monitor::GetUnityTexture() is null."); + return; + } + ID3D11DeviceContext* context; GetDevice()->GetImmediateContext(&context); context->CopySubresourceRegion(texture, 0, 0, 0, 0, monitor_->GetUnityTexture(), 0, &box); @@ -121,17 +144,18 @@ void Cursor::UpdateTexture() IDXGISurface* surface = nullptr; hr = texture->QueryInterface(__uuidof(IDXGISurface), (void**)&surface); - texture->Release(); if (FAILED(hr)) { + Debug::Error("Cursor::UpdateTexture() => texture->QueryInterface() failed."); return; } + const auto surfaceReleaser = MakeUniqueWithReleaser(surface); DXGI_MAPPED_RECT mappedSurface; hr = surface->Map(&mappedSurface, DXGI_MAP_READ); if (FAILED(hr)) { - surface->Release(); + Debug::Error("Cursor::UpdateTexture() => surface->Map() failed."); return; } @@ -184,7 +208,6 @@ void Cursor::UpdateTexture() } hr = surface->Unmap(); - surface->Release(); if (FAILED(hr)) { return; @@ -206,10 +229,34 @@ void Cursor::UpdateTexture() void Cursor::GetTexture(ID3D11Texture2D* texture) { - if (bgra32Buffer_ == nullptr || texture == nullptr) return; + if (bgra32Buffer_ == nullptr) + { + Debug::Error("Cursor::GetTexture() => bgra32Buffer is null."); + return; + } + + if (texture == nullptr) + { + Debug::Error("Cursor::GetTexture() => The given texture is null."); + return; + } + + D3D11_TEXTURE2D_DESC desc; + texture->GetDesc(&desc); + if ((int)desc.Width < GetWidth() || (int)desc.Height < GetHeight()) + { + char buf[256]; + sprintf_s(buf, 256, + "Cursor::GetTexture() => The given texture has smaller width / height.\n" + "Given => (%d, %d) Buffer => (%d, %d)", + desc.Width, desc.Height, GetWidth(), GetHeight()); + Debug::Error(buf); + return; + } + ID3D11DeviceContext* context; GetDevice()->GetImmediateContext(&context); - context->UpdateSubresource(texture, 0, nullptr, bgra32Buffer_.get(), shapeInfo_.Width * 4, 0); + context->UpdateSubresource(texture, 0, nullptr, bgra32Buffer_.get(), GetWidth() * 4, 0); context->Release(); } diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp index 9c1e1ea..d1d4093 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp @@ -98,6 +98,7 @@ void Monitor::Render(UINT timeout) } return; } + const auto resourceReleaser = MakeUniqueWithReleaser(resource); if (unityTexture_) { @@ -108,8 +109,6 @@ void Monitor::Render(UINT timeout) GetDevice()->GetImmediateContext(&context); context->CopyResource(unityTexture_, texture); context->Release(); - - resource->Release(); } cursor_->UpdateBuffer(frameInfo); diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp index e985976..0877fbd 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp @@ -32,24 +32,24 @@ void MonitorManager::Initialize() // Get factory IDXGIFactory1* factory; CreateDXGIFactory1(__uuidof(IDXGIFactory1), reinterpret_cast(&factory)); + const auto factoryReleaser = MakeUniqueWithReleaser(factory); // Check all display adapters int id = 0; IDXGIAdapter1* adapter; for (int i = 0; (factory->EnumAdapters1(i, &adapter) != DXGI_ERROR_NOT_FOUND); ++i) { + const auto adapterReleaser = MakeUniqueWithReleaser(adapter); // Search the main monitor from all outputs IDXGIOutput* output; for (int j = 0; (adapter->EnumOutputs(j, &output) != DXGI_ERROR_NOT_FOUND); ++j) { + const auto outputReleaser = MakeUniqueWithReleaser(output); auto monitor = std::make_shared(id++); monitor->Initialize(output); monitors_.push_back(monitor); - output->Release(); } - adapter->Release(); } - factory->Release(); }