mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
VirtualDesktopManager: Avoid caching COM object which might be invalidated if COM is uninitialised and reinitialised
This commit is contained in:
parent
aeeb06ccb9
commit
c0d0c1f9c6
1 changed files with 9 additions and 15 deletions
|
|
@ -5520,25 +5520,19 @@ bool juce::detail::WindowingHelpers::isWindowOnCurrentVirtualDesktop (void* x)
|
|||
if (x == nullptr)
|
||||
return false;
|
||||
|
||||
static auto* desktopManager = []
|
||||
{
|
||||
JuceIVirtualDesktopManager* result = nullptr;
|
||||
ComSmartPtr<JuceIVirtualDesktopManager> manager;
|
||||
|
||||
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wlanguage-extension-token")
|
||||
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wlanguage-extension-token")
|
||||
manager.CoCreateInstance (__uuidof (JuceVirtualDesktopManager), CLSCTX_ALL);
|
||||
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
|
||||
|
||||
if (SUCCEEDED (CoCreateInstance (__uuidof (JuceVirtualDesktopManager), nullptr, CLSCTX_ALL, IID_PPV_ARGS (&result))))
|
||||
return result;
|
||||
|
||||
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
|
||||
|
||||
return static_cast<JuceIVirtualDesktopManager*> (nullptr);
|
||||
}();
|
||||
if (manager == nullptr)
|
||||
return true;
|
||||
|
||||
BOOL current = false;
|
||||
|
||||
if (auto* dm = desktopManager)
|
||||
if (SUCCEEDED (dm->IsWindowOnCurrentVirtualDesktop (static_cast<HWND> (x), ¤t)))
|
||||
return current != false;
|
||||
if (FAILED (manager->IsWindowOnCurrentVirtualDesktop (static_cast<HWND> (x), ¤t)))
|
||||
return true;
|
||||
|
||||
return true;
|
||||
return current != false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue