| @@ -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> 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> 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: | |||
| @@ -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. | |||
| @@ -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. | |||
| @@ -47,6 +47,8 @@ Desktop::Desktop() | |||
| Desktop::~Desktop() | |||
| { | |||
| setScreenSaverEnabled (true); | |||
| jassert (instance == this); | |||
| instance = nullptr; | |||
| @@ -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> 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 | |||
| { | |||
| @@ -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> screenSaverDefeater; | |||
| void Desktop::setScreenSaverEnabled (const bool isEnabled) | |||
| { | |||
| if (isEnabled) | |||
| deleteAndZero (screenSaverDefeater); | |||
| screenSaverDefeater = nullptr; | |||
| else if (screenSaverDefeater == nullptr) | |||
| screenSaverDefeater = new ScreenSaverDefeater(); | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| } | |||