diff --git a/juce_amalgamated.cpp b/juce_amalgamated.cpp index ed66f7cd1c..d6798eb579 100644 --- a/juce_amalgamated.cpp +++ b/juce_amalgamated.cpp @@ -14963,11 +14963,15 @@ String XmlDocument::getFileContents (const String& filename) const juce_wchar XmlDocument::readNextChar() noexcept { - if (*input != 0) - return *input++; + const juce_wchar c = input.getAndAdvance(); - outOfData = true; - return 0; + if (c == 0) + { + outOfData = true; + --input; + } + + return c; } int XmlDocument::findNextTokenLength() noexcept @@ -15099,15 +15103,16 @@ void XmlDocument::readQuotedString (String& result) if (c == quote) break; + --input; + if (c == '&') { - --input; readEntity (result); } else { - --input; const String::CharPointerType start (input); + int numChars = 0; for (;;) { @@ -15115,14 +15120,13 @@ void XmlDocument::readQuotedString (String& result) if (character == quote) { - result.appendCharPointer (start, (int) (input.getAddress() - start.getAddress())); + result.appendCharPointer (start, numChars); ++input; - return; } else if (character == '&') { - result.appendCharPointer (start, (int) (input.getAddress() - start.getAddress())); + result.appendCharPointer (start, numChars); break; } else if (character == 0) @@ -15133,6 +15137,7 @@ void XmlDocument::readQuotedString (String& result) } ++input; + ++numChars; } } } @@ -44249,6 +44254,8 @@ Desktop::Desktop() Desktop::~Desktop() { + setScreenSaverEnabled (true); + jassert (instance == this); instance = nullptr; @@ -251328,8 +251335,7 @@ Image::SharedImage* Image::SharedImage::createNativeImage (PixelFormat format, i return createSoftwareImage (format, width, height, clearImage); } -class ScreenSaverDefeater : public Timer, - public DeletedAtShutdown +class ScreenSaverDefeater : public Timer { public: ScreenSaverDefeater() @@ -251359,12 +251365,12 @@ public: } }; -static ScreenSaverDefeater* screenSaverDefeater = nullptr; +static ScopedPointer screenSaverDefeater; void Desktop::setScreenSaverEnabled (const bool isEnabled) { if (isEnabled) - deleteAndZero (screenSaverDefeater); + screenSaverDefeater = nullptr; else if (screenSaverDefeater == nullptr) screenSaverDefeater = new ScreenSaverDefeater(); } @@ -273785,9 +273791,11 @@ Desktop::DisplayOrientation Desktop::getCurrentOrientation() const return upright; } -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 -class ScreenSaverDefeater : public Timer, - public DeletedAtShutdown +#ifndef __POWER__ // Some versions of the SDK omit this function.. + extern "C" { extern OSErr UpdateSystemActivity (UInt8); } +#endif + +class ScreenSaverDefeater : public Timer { public: ScreenSaverDefeater() @@ -273799,61 +273807,25 @@ public: void timerCallback() { if (Process::isForegroundProcess()) - UpdateSystemActivity (UsrActivity); + UpdateSystemActivity (1 /*UsrActivity*/); } }; -static ScreenSaverDefeater* screenSaverDefeater = nullptr; +static ScopedPointer screenSaverDefeater; void Desktop::setScreenSaverEnabled (const bool isEnabled) { if (isEnabled) - deleteAndZero (screenSaverDefeater); + screenSaverDefeater = nullptr; else if (screenSaverDefeater == nullptr) screenSaverDefeater = new ScreenSaverDefeater(); } bool Desktop::isScreenSaverEnabled() { - return screenSaverDefeater == 0; -} - -#else - -static IOPMAssertionID screenSaverDisablerID = 0; - -void Desktop::setScreenSaverEnabled (const bool isEnabled) -{ - if (isEnabled) - { - if (screenSaverDisablerID != 0) - { - IOPMAssertionRelease (screenSaverDisablerID); - screenSaverDisablerID = 0; - } - } - else - { - if (screenSaverDisablerID == 0) - { - #if defined (MAC_OS_X_VERSION_10_6) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 - IOPMAssertionCreateWithName (kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, - CFSTR ("Juce"), &screenSaverDisablerID); - #else - IOPMAssertionCreate (kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, - &screenSaverDisablerID); - #endif - } - } -} - -bool Desktop::isScreenSaverEnabled() -{ - return screenSaverDisablerID == 0; + return screenSaverDefeater == nullptr; } -#endif - class DisplaySettingsChangeCallback : public DeletedAtShutdown { public: diff --git a/juce_amalgamated.h b/juce_amalgamated.h index 95edfabbcd..73a51d66ee 100644 --- a/juce_amalgamated.h +++ b/juce_amalgamated.h @@ -73,7 +73,7 @@ namespace JuceDummyNamespace {} */ #define JUCE_MAJOR_VERSION 1 #define JUCE_MINOR_VERSION 54 -#define JUCE_BUILDNUMBER 4 +#define JUCE_BUILDNUMBER 5 /** Current Juce version number. diff --git a/src/core/juce_StandardHeader.h b/src/core/juce_StandardHeader.h index 9b90ee1874..9206c065c6 100644 --- a/src/core/juce_StandardHeader.h +++ b/src/core/juce_StandardHeader.h @@ -33,7 +33,7 @@ */ #define JUCE_MAJOR_VERSION 1 #define JUCE_MINOR_VERSION 54 -#define JUCE_BUILDNUMBER 4 +#define JUCE_BUILDNUMBER 5 /** Current Juce version number. diff --git a/src/gui/components/juce_Desktop.cpp b/src/gui/components/juce_Desktop.cpp index 404c9bfb0c..6e2e0de600 100644 --- a/src/gui/components/juce_Desktop.cpp +++ b/src/gui/components/juce_Desktop.cpp @@ -47,6 +47,8 @@ Desktop::Desktop() Desktop::~Desktop() { + setScreenSaverEnabled (true); + jassert (instance == this); instance = nullptr; diff --git a/src/native/mac/juce_mac_MiscUtilities.mm b/src/native/mac/juce_mac_MiscUtilities.mm index 2e9ada5d81..27ce426bc8 100644 --- a/src/native/mac/juce_mac_MiscUtilities.mm +++ b/src/native/mac/juce_mac_MiscUtilities.mm @@ -263,9 +263,11 @@ Desktop::DisplayOrientation Desktop::getCurrentOrientation() const } //============================================================================== -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 -class ScreenSaverDefeater : public Timer, - public DeletedAtShutdown +#ifndef __POWER__ // Some versions of the SDK omit this function.. + extern "C" { extern OSErr UpdateSystemActivity (UInt8); } +#endif + +class ScreenSaverDefeater : public Timer { public: ScreenSaverDefeater() @@ -277,61 +279,25 @@ public: void timerCallback() { if (Process::isForegroundProcess()) - UpdateSystemActivity (UsrActivity); + UpdateSystemActivity (1 /*UsrActivity*/); } }; -static ScreenSaverDefeater* screenSaverDefeater = nullptr; +static ScopedPointer screenSaverDefeater; void Desktop::setScreenSaverEnabled (const bool isEnabled) { if (isEnabled) - deleteAndZero (screenSaverDefeater); + screenSaverDefeater = nullptr; else if (screenSaverDefeater == nullptr) screenSaverDefeater = new ScreenSaverDefeater(); } bool Desktop::isScreenSaverEnabled() { - return screenSaverDefeater == 0; + return screenSaverDefeater == nullptr; } -#else -//============================================================================== -static IOPMAssertionID screenSaverDisablerID = 0; - -void Desktop::setScreenSaverEnabled (const bool isEnabled) -{ - if (isEnabled) - { - if (screenSaverDisablerID != 0) - { - IOPMAssertionRelease (screenSaverDisablerID); - screenSaverDisablerID = 0; - } - } - else - { - if (screenSaverDisablerID == 0) - { - #if defined (MAC_OS_X_VERSION_10_6) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 - IOPMAssertionCreateWithName (kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, - CFSTR ("Juce"), &screenSaverDisablerID); - #else - IOPMAssertionCreate (kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, - &screenSaverDisablerID); - #endif - } - } -} - -bool Desktop::isScreenSaverEnabled() -{ - return screenSaverDisablerID == 0; -} - -#endif - //============================================================================== class DisplaySettingsChangeCallback : public DeletedAtShutdown { diff --git a/src/native/windows/juce_win32_Windowing.cpp b/src/native/windows/juce_win32_Windowing.cpp index ee4665b050..33a23a2f09 100644 --- a/src/native/windows/juce_win32_Windowing.cpp +++ b/src/native/windows/juce_win32_Windowing.cpp @@ -2820,8 +2820,7 @@ Image::SharedImage* Image::SharedImage::createNativeImage (PixelFormat format, i } //============================================================================== -class ScreenSaverDefeater : public Timer, - public DeletedAtShutdown +class ScreenSaverDefeater : public Timer { public: ScreenSaverDefeater() @@ -2851,12 +2850,12 @@ public: } }; -static ScreenSaverDefeater* screenSaverDefeater = nullptr; +static ScopedPointer screenSaverDefeater; void Desktop::setScreenSaverEnabled (const bool isEnabled) { if (isEnabled) - deleteAndZero (screenSaverDefeater); + screenSaverDefeater = nullptr; else if (screenSaverDefeater == nullptr) screenSaverDefeater = new ScreenSaverDefeater(); } diff --git a/src/text/juce_XmlDocument.cpp b/src/text/juce_XmlDocument.cpp index 1ad152e4cd..0cf960881f 100644 --- a/src/text/juce_XmlDocument.cpp +++ b/src/text/juce_XmlDocument.cpp @@ -179,11 +179,15 @@ String XmlDocument::getFileContents (const String& filename) const juce_wchar XmlDocument::readNextChar() noexcept { - if (*input != 0) - return *input++; + const juce_wchar c = input.getAndAdvance(); - outOfData = true; - return 0; + if (c == 0) + { + outOfData = true; + --input; + } + + return c; } int XmlDocument::findNextTokenLength() noexcept @@ -315,15 +319,16 @@ void XmlDocument::readQuotedString (String& result) if (c == quote) break; + --input; + if (c == '&') { - --input; readEntity (result); } else { - --input; const String::CharPointerType start (input); + int numChars = 0; for (;;) { @@ -331,14 +336,13 @@ void XmlDocument::readQuotedString (String& result) if (character == quote) { - result.appendCharPointer (start, (int) (input.getAddress() - start.getAddress())); + result.appendCharPointer (start, numChars); ++input; - return; } else if (character == '&') { - result.appendCharPointer (start, (int) (input.getAddress() - start.getAddress())); + result.appendCharPointer (start, numChars); break; } else if (character == 0) @@ -349,6 +353,7 @@ void XmlDocument::readQuotedString (String& result) } ++input; + ++numChars; } } }