Skip to content

Commit

Permalink
macOS: Removed static display change callback
Browse files Browse the repository at this point in the history
  • Loading branch information
ed95 committed Mar 29, 2021
1 parent 675d933 commit 762cf32
Showing 1 changed file with 10 additions and 12 deletions.
22 changes: 10 additions & 12 deletions modules/juce_gui_basics/native/juce_mac_Windowing.mm
Expand Up @@ -441,30 +441,30 @@ void timerCallback() override
{
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)
{
Expand Down Expand Up @@ -498,10 +498,8 @@ static void displayReconfigurationCallback (CGDirectDisplayID, CGDisplayChangeSu
{
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;

Expand Down

0 comments on commit 762cf32

Please sign in to comment.