diff --git a/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll b/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll index 985283d..b4f2dec 100644 Binary files a/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll and b/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll differ diff --git a/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.pdb b/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.pdb new file mode 100644 index 0000000..555ef6c Binary files /dev/null and b/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.pdb differ diff --git a/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.pdb.meta b/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.pdb.meta new file mode 100644 index 0000000..a84015c --- /dev/null +++ b/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.pdb.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 00f741c3c7535be4bac52836e999f293 +timeCreated: 1483616285 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/Cursor.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/Cursor.cpp index 7f44afe..1ac6054 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/Cursor.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/Cursor.cpp @@ -3,7 +3,6 @@ #include "Cursor.h" #include "Debug.h" -#include "MonitorManager.h" #include "Monitor.h" #include "Duplicator.h" @@ -32,11 +31,6 @@ void Cursor::UpdateBuffer(Duplicator* duplicator) } isVisible_ = frameInfo.PointerPosition.Visible != 0; - if (isVisible_) - { - GetMonitorManager()->SetCursorMonitorId(monitor->GetId()); - } - x_ = frameInfo.PointerPosition.Position.x; y_ = frameInfo.PointerPosition.Position.y; timestamp_ = frameInfo.LastMouseUpdateTime; diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/Duplicator.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/Duplicator.cpp index 92c88cc..85bec14 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/Duplicator.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/Duplicator.cpp @@ -307,16 +307,7 @@ bool Duplicator::Duplicate() } UpdateMetadata(); - - if (frameInfo.PointerPosition.Visible) - { - GetMonitorManager()->SetCursorMonitorId(monitor_->GetId()); - } - - if (GetMonitorManager()->GetCursorMonitorId() == monitor_->GetId()) - { - UpdateCursor(); - } + UpdateCursor(); return true; } @@ -324,9 +315,20 @@ bool Duplicator::Duplicate() void Duplicator::UpdateCursor() { - auto cursor = GetMonitorManager()->GetCursor(); - cursor->UpdateBuffer(this); - cursor->Draw(this); + auto& manager = GetMonitorManager(); + if (!manager) return; + + if (lastFrame_.info.PointerPosition.Visible) + { + manager->SetCursorMonitorId(monitor_->GetId()); + } + + if (monitor_->GetId() == manager->GetCursorMonitorId()) + { + auto cursor = GetMonitorManager()->GetCursor(); + cursor->UpdateBuffer(this); + cursor->Draw(this); + } } diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp index c6e99d8..bf6bf5b 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp @@ -21,6 +21,7 @@ Monitor::Monitor(int id) Monitor::~Monitor() { + duplicator_->Stop(); } @@ -65,6 +66,12 @@ void Monitor::Initialize( } +void Monitor::Finalize() +{ + duplicator_->Stop(); +} + + void Monitor::Render() { const auto& frame = duplicator_->GetFrame(); diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.h b/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.h index cf8c2ac..003022d 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.h +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.h @@ -22,6 +22,7 @@ public: void Initialize( const Microsoft::WRL::ComPtr &adapter, const Microsoft::WRL::ComPtr &output); + void Finalize(); void Render(); public: diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp index 1a383b5..ae35287 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp @@ -63,6 +63,11 @@ void MonitorManager::Initialize() void MonitorManager::Finalize() { + for (const auto& monitor : monitors_) + { + monitor->Finalize(); + } + monitors_.clear(); }