Browse Source

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

tags/2021-05-28
Julian Storer 14 years ago
parent
commit
640ad3ac7b
7 changed files with 58 additions and 114 deletions
  1. +28
    -56
      juce_amalgamated.cpp
  2. +1
    -1
      juce_amalgamated.h
  3. +1
    -1
      src/core/juce_StandardHeader.h
  4. +2
    -0
      src/gui/components/juce_Desktop.cpp
  5. +9
    -43
      src/native/mac/juce_mac_MiscUtilities.mm
  6. +3
    -4
      src/native/windows/juce_win32_Windowing.cpp
  7. +14
    -9
      src/text/juce_XmlDocument.cpp

+ 28
- 56
juce_amalgamated.cpp 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;
}

#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:


+ 1
- 1
juce_amalgamated.h 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.



+ 1
- 1
src/core/juce_StandardHeader.h 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.


+ 2
- 0
src/gui/components/juce_Desktop.cpp View File

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


+ 9
- 43
src/native/mac/juce_mac_MiscUtilities.mm 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
{


+ 3
- 4
src/native/windows/juce_win32_Windowing.cpp 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();
}


+ 14
- 9
src/text/juce_XmlDocument.cpp 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;
}
}
}


Loading…
Cancel
Save