1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Fixes for mac screen-saver disabling and XML extended utf-8 character parsing.

This commit is contained in:
Julian Storer 2011-06-28 18:00:57 +01:00
parent 18c9aa8e62
commit 640ad3ac7b
7 changed files with 58 additions and 114 deletions

View file

@ -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;
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
{
public:

View file

@ -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.

View file

@ -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.

View file

@ -47,6 +47,8 @@ Desktop::Desktop()
Desktop::~Desktop()
{
setScreenSaverEnabled (true);
jassert (instance == this);
instance = nullptr;

View file

@ -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
{

View file

@ -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();
}

View file

@ -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;
}
}
}