1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-02-04 03:40:07 +00:00

macOS: Removed static display change callback

This commit is contained in:
ed 2021-03-25 10:02:48 +00:00
parent 675d93315f
commit 762cf327be

View file

@ -441,30 +441,30 @@ struct DisplaySettingsChangeCallback : private DeletedAtShutdown
{
DisplaySettingsChangeCallback()
{
CGDisplayRegisterReconfigurationCallback (displayReconfigurationCallback, nullptr);
CGDisplayRegisterReconfigurationCallback (displayReconfigurationCallback, this);
}
~DisplaySettingsChangeCallback()
{
CGDisplayRemoveReconfigurationCallback (displayReconfigurationCallback, nullptr);
CGDisplayRemoveReconfigurationCallback (displayReconfigurationCallback, this);
clearSingletonInstance();
}
static void displayReconfigurationCallback (CGDirectDisplayID, CGDisplayChangeSummaryFlags, void*)
static void displayReconfigurationCallback (CGDirectDisplayID, CGDisplayChangeSummaryFlags, void* userInfo)
{
if (forceDisplayUpdate != nullptr)
forceDisplayUpdate();
if (auto* thisPtr = static_cast<DisplaySettingsChangeCallback*> (userInfo))
if (thisPtr->forceDisplayUpdate != nullptr)
thisPtr->forceDisplayUpdate();
}
static std::function<void()> forceDisplayUpdate;
std::function<void()> forceDisplayUpdate;
JUCE_DECLARE_SINGLETON_SINGLETHREADED_MINIMAL (DisplaySettingsChangeCallback)
JUCE_DECLARE_SINGLETON (DisplaySettingsChangeCallback, false)
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DisplaySettingsChangeCallback)
};
JUCE_IMPLEMENT_SINGLETON (DisplaySettingsChangeCallback)
std::function<void()> DisplaySettingsChangeCallback::forceDisplayUpdate = nullptr;
static Rectangle<int> convertDisplayRect (NSRect r, CGFloat mainScreenBottom)
{
@ -498,10 +498,8 @@ void Displays::findDisplays (const float masterScale)
{
JUCE_AUTORELEASEPOOL
{
auto& settingsChangeCallback = *DisplaySettingsChangeCallback::getInstance();
if (settingsChangeCallback.forceDisplayUpdate == nullptr)
settingsChangeCallback.forceDisplayUpdate = [this] { refresh(); };
if (DisplaySettingsChangeCallback::getInstanceWithoutCreating() == nullptr)
DisplaySettingsChangeCallback::getInstance()->forceDisplayUpdate = [this] { refresh(); };
CGFloat mainScreenBottom = 0;