@@ -431,4 +431,13 @@ const String AudioCDBurner::burn (JUCE_NAMESPACE::AudioCDBurner::BurnProgressLis | |||
return error; | |||
} | |||
//============================================================================== | |||
void AudioCDReader::ejectDisk() | |||
{ | |||
const ScopedAutoReleasePool p; | |||
[[NSWorkspace sharedWorkspace] unmountAndEjectDeviceAtPath: juceStringToNS (volumeDir.getFullPathName())]; | |||
} | |||
#endif |
@@ -166,7 +166,6 @@ public: | |||
{ | |||
if (activeInputChans[chanNum]) | |||
{ | |||
inputChannelInfo [activeChans].sourceChannelNum = chanNum; | |||
inputChannelInfo [activeChans].streamNum = i; | |||
inputChannelInfo [activeChans].dataOffsetSamples = j; | |||
inputChannelInfo [activeChans].dataStrideSamples = b.mNumberChannels; | |||
@@ -180,7 +179,6 @@ public: | |||
{ | |||
if (activeOutputChans[chanNum]) | |||
{ | |||
outputChannelInfo [activeChans].sourceChannelNum = chanNum; | |||
outputChannelInfo [activeChans].streamNum = i; | |||
outputChannelInfo [activeChans].dataOffsetSamples = j; | |||
outputChannelInfo [activeChans].dataStrideSamples = b.mNumberChannels; | |||
@@ -583,7 +581,7 @@ public: | |||
for (i = numInputChans; --i >= 0;) | |||
{ | |||
const CallbackDetailsForChannel& info = inputChannelInfo[i]; | |||
float* dest = tempInputBuffers [info.sourceChannelNum]; | |||
float* dest = tempInputBuffers [i]; | |||
const float* src = ((const float*) inInputData->mBuffers[info.streamNum].mData) | |||
+ info.dataOffsetSamples; | |||
const int stride = info.dataStrideSamples; | |||
@@ -755,7 +753,6 @@ private: | |||
struct CallbackDetailsForChannel | |||
{ | |||
int sourceChannelNum; | |||
int streamNum; | |||
int dataOffsetSamples; | |||
int dataStrideSamples; | |||
@@ -279,7 +279,7 @@ bool MessageManager::runDispatchLoopUntil (int millisecondsToRunFor) | |||
uint32 endTime = Time::getMillisecondCounter() + millisecondsToRunFor; | |||
NSDate* endDate = [NSDate dateWithTimeIntervalSinceNow: millisecondsToRunFor * 0.001]; | |||
while (Time::getMillisecondCounter() < endTime) | |||
while (Time::getMillisecondCounter() < endTime && ! quitMessagePosted) | |||
{ | |||
const ScopedAutoReleasePool pool; | |||
@@ -51,6 +51,21 @@ void PlatformUtilities::beep() | |||
NSBeep(); | |||
} | |||
//============================================================================== | |||
void PlatformUtilities::addItemToDock (const File& file) | |||
{ | |||
// check that it's not already there... | |||
if (! juce_getOutputFromCommand ("defaults read com.apple.dock persistent-apps") | |||
.containsIgnoreCase (file.getFullPathName())) | |||
{ | |||
juce_runSystemCommand ("defaults write com.apple.dock persistent-apps -array-add \"<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>" | |||
+ file.getFullPathName() + "</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>\""); | |||
juce_runSystemCommand ("osascript -e \"tell application \\\"Dock\\\" to quit\""); | |||
} | |||
} | |||
//============================================================================== | |||
#if ! JUCE_ONLY_BUILD_CORE_LIBRARY | |||
@@ -243,6 +258,7 @@ void juce_updateMultiMonitorInfo (Array <Rectangle>& monitorCoords, const bool c | |||
jassert (monitorCoords.size() > 0); | |||
} | |||
#endif | |||
#endif |
@@ -70,6 +70,7 @@ BEGIN_JUCE_NAMESPACE | |||
#include "../../../src/juce_appframework/gui/components/special/juce_WebBrowserComponent.h" | |||
#include "../../../src/juce_appframework/gui/components/filebrowser/juce_FileChooser.h" | |||
#include "../../../src/juce_appframework/audio/audio_file_formats/juce_AudioCDBurner.h" | |||
#include "../../../src/juce_appframework/audio/audio_file_formats/juce_AudioCDReader.h" | |||
#include "../../../src/juce_appframework/audio/audio_sources/juce_AudioSource.h" | |||
#include "../../../src/juce_appframework/audio/dsp/juce_AudioDataConverters.h" | |||
#include "../../../src/juce_appframework/audio/devices/juce_AudioIODeviceType.h" | |||
@@ -390,6 +390,26 @@ const String juce_getVolumeLabel (const String& filenameOnVolume, | |||
return String::empty; | |||
} | |||
//============================================================================== | |||
void juce_runSystemCommand (const String& command) | |||
{ | |||
system ((const char*) command.toUTF8()); | |||
} | |||
const String juce_getOutputFromCommand (const String& command) | |||
{ | |||
// slight bodge here, as we just pipe the output into a temp file and read it... | |||
const File tempFile (File::getSpecialLocation (File::tempDirectory) | |||
.getNonexistentChildFile (String::toHexString (Random::getSystemRandom().nextInt()), ".tmp", false)); | |||
juce_runSystemCommand (command + " > " + tempFile.getFullPathName()); | |||
String result (tempFile.loadFileAsString()); | |||
tempFile.deleteFile(); | |||
return result; | |||
} | |||
//============================================================================== | |||
#if JUCE_64BIT | |||
#define filedesc ((long long) internal) | |||
@@ -36933,7 +36933,13 @@ bool MessageManager::runDispatchLoopUntil (int millisecondsToRunFor) | |||
{ | |||
JUCE_TRY | |||
{ | |||
juce_dispatchNextMessageOnSystemQueue (millisecondsToRunFor >= 0); | |||
if (! juce_dispatchNextMessageOnSystemQueue (millisecondsToRunFor >= 0)) | |||
{ | |||
const int msToWait = (int) (endTime - Time::currentTimeMillis()); | |||
if (msToWait > 0) | |||
Thread::sleep (jmin (5, msToWait)); | |||
} | |||
} | |||
JUCE_CATCH_EXCEPTION | |||
} | |||
@@ -43768,7 +43774,7 @@ void Label::showEditor() | |||
if (editor == 0) | |||
{ | |||
addAndMakeVisible (editor = createEditorComponent()); | |||
editor->setText (getText()); | |||
editor->setText (getText(), false); | |||
editor->addListener (this); | |||
editor->grabKeyboardFocus(); | |||
editor->setHighlightedRegion (0, text.length()); | |||
@@ -60972,8 +60978,10 @@ void LookAndFeel::drawPopupMenuBackground (Graphics& g, int width, int height) | |||
for (int i = 0; i < height; i += 3) | |||
g.fillRect (0, i, width, 1); | |||
#if ! JUCE_MAC | |||
g.setColour (findColour (PopupMenu::textColourId).withAlpha (0.6f)); | |||
g.drawRect (0, 0, width, height); | |||
#endif | |||
} | |||
void LookAndFeel::drawPopupMenuUpDownArrow (Graphics& g, | |||
@@ -255314,6 +255322,24 @@ const String juce_getVolumeLabel (const String& filenameOnVolume, | |||
return String::empty; | |||
} | |||
void juce_runSystemCommand (const String& command) | |||
{ | |||
system ((const char*) command.toUTF8()); | |||
} | |||
const String juce_getOutputFromCommand (const String& command) | |||
{ | |||
// slight bodge here, as we just pipe the output into a temp file and read it... | |||
const File tempFile (File::getSpecialLocation (File::tempDirectory) | |||
.getNonexistentChildFile (String::toHexString (Random::getSystemRandom().nextInt()), ".tmp", false)); | |||
juce_runSystemCommand (command + " > " + tempFile.getFullPathName()); | |||
String result (tempFile.loadFileAsString()); | |||
tempFile.deleteFile(); | |||
return result; | |||
} | |||
#if JUCE_64BIT | |||
#define filedesc ((long long) internal) | |||
#else | |||
@@ -265350,6 +265376,24 @@ const String juce_getVolumeLabel (const String& filenameOnVolume, | |||
return String::empty; | |||
} | |||
void juce_runSystemCommand (const String& command) | |||
{ | |||
system ((const char*) command.toUTF8()); | |||
} | |||
const String juce_getOutputFromCommand (const String& command) | |||
{ | |||
// slight bodge here, as we just pipe the output into a temp file and read it... | |||
const File tempFile (File::getSpecialLocation (File::tempDirectory) | |||
.getNonexistentChildFile (String::toHexString (Random::getSystemRandom().nextInt()), ".tmp", false)); | |||
juce_runSystemCommand (command + " > " + tempFile.getFullPathName()); | |||
String result (tempFile.loadFileAsString()); | |||
tempFile.deleteFile(); | |||
return result; | |||
} | |||
#if JUCE_64BIT | |||
#define filedesc ((long long) internal) | |||
#else | |||
@@ -266036,6 +266080,19 @@ void PlatformUtilities::beep() | |||
NSBeep(); | |||
} | |||
void PlatformUtilities::addItemToDock (const File& file) | |||
{ | |||
// check that it's not already there... | |||
if (! juce_getOutputFromCommand ("defaults read com.apple.dock persistent-apps") | |||
.containsIgnoreCase (file.getFullPathName())) | |||
{ | |||
juce_runSystemCommand ("defaults write com.apple.dock persistent-apps -array-add \"<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>" | |||
+ file.getFullPathName() + "</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>\""); | |||
juce_runSystemCommand ("osascript -e \"tell application \\\"Dock\\\" to quit\""); | |||
} | |||
} | |||
#if ! JUCE_ONLY_BUILD_CORE_LIBRARY | |||
bool AlertWindow::showNativeDialogBox (const String& title, | |||
@@ -269801,6 +269858,12 @@ const String AudioCDBurner::burn (JUCE_NAMESPACE::AudioCDBurner::BurnProgressLis | |||
return error; | |||
} | |||
void AudioCDReader::ejectDisk() | |||
{ | |||
const ScopedAutoReleasePool p; | |||
[[NSWorkspace sharedWorkspace] unmountAndEjectDeviceAtPath: juceStringToNS (volumeDir.getFullPathName())]; | |||
} | |||
#endif | |||
/********* End of inlined file: juce_mac_AudioCDBurner.mm *********/ | |||
@@ -270378,7 +270441,7 @@ bool MessageManager::runDispatchLoopUntil (int millisecondsToRunFor) | |||
uint32 endTime = Time::getMillisecondCounter() + millisecondsToRunFor; | |||
NSDate* endDate = [NSDate dateWithTimeIntervalSinceNow: millisecondsToRunFor * 0.001]; | |||
while (Time::getMillisecondCounter() < endTime) | |||
while (Time::getMillisecondCounter() < endTime && ! quitMessagePosted) | |||
{ | |||
const ScopedAutoReleasePool pool; | |||
@@ -270850,7 +270913,6 @@ public: | |||
{ | |||
if (activeInputChans[chanNum]) | |||
{ | |||
inputChannelInfo [activeChans].sourceChannelNum = chanNum; | |||
inputChannelInfo [activeChans].streamNum = i; | |||
inputChannelInfo [activeChans].dataOffsetSamples = j; | |||
inputChannelInfo [activeChans].dataStrideSamples = b.mNumberChannels; | |||
@@ -270864,7 +270926,6 @@ public: | |||
{ | |||
if (activeOutputChans[chanNum]) | |||
{ | |||
outputChannelInfo [activeChans].sourceChannelNum = chanNum; | |||
outputChannelInfo [activeChans].streamNum = i; | |||
outputChannelInfo [activeChans].dataOffsetSamples = j; | |||
outputChannelInfo [activeChans].dataStrideSamples = b.mNumberChannels; | |||
@@ -271265,7 +271326,7 @@ public: | |||
for (i = numInputChans; --i >= 0;) | |||
{ | |||
const CallbackDetailsForChannel& info = inputChannelInfo[i]; | |||
float* dest = tempInputBuffers [info.sourceChannelNum]; | |||
float* dest = tempInputBuffers [i]; | |||
const float* src = ((const float*) inInputData->mBuffers[info.streamNum].mData) | |||
+ info.dataOffsetSamples; | |||
const int stride = info.dataStrideSamples; | |||
@@ -271436,7 +271497,6 @@ private: | |||
struct CallbackDetailsForChannel | |||
{ | |||
int sourceChannelNum; | |||
int streamNum; | |||
int dataOffsetSamples; | |||
int dataStrideSamples; | |||
@@ -13121,6 +13121,8 @@ public: | |||
/** MAC ONLY - Returns true if this file is actually a bundle. */ | |||
static bool isBundle (const String& filename); | |||
/** MAC ONLY - Adds an item to the dock */ | |||
static void addItemToDock (const File& file); | |||
#endif | |||
#if JUCE_WIN32 || DOXYGEN | |||
@@ -163,7 +163,13 @@ bool MessageManager::runDispatchLoopUntil (int millisecondsToRunFor) | |||
{ | |||
JUCE_TRY | |||
{ | |||
juce_dispatchNextMessageOnSystemQueue (millisecondsToRunFor >= 0); | |||
if (! juce_dispatchNextMessageOnSystemQueue (millisecondsToRunFor >= 0)) | |||
{ | |||
const int msToWait = (int) (endTime - Time::currentTimeMillis()); | |||
if (msToWait > 0) | |||
Thread::sleep (jmin (5, msToWait)); | |||
} | |||
} | |||
JUCE_CATCH_EXCEPTION | |||
} | |||
@@ -203,7 +203,7 @@ void Label::showEditor() | |||
if (editor == 0) | |||
{ | |||
addAndMakeVisible (editor = createEditorComponent()); | |||
editor->setText (getText()); | |||
editor->setText (getText(), false); | |||
editor->addListener (this); | |||
editor->grabKeyboardFocus(); | |||
editor->setHighlightedRegion (0, text.length()); | |||
@@ -961,8 +961,10 @@ void LookAndFeel::drawPopupMenuBackground (Graphics& g, int width, int height) | |||
for (int i = 0; i < height; i += 3) | |||
g.fillRect (0, i, width, 1); | |||
#if ! JUCE_MAC | |||
g.setColour (findColour (PopupMenu::textColourId).withAlpha (0.6f)); | |||
g.drawRect (0, 0, width, height); | |||
#endif | |||
} | |||
void LookAndFeel::drawPopupMenuUpDownArrow (Graphics& g, | |||
@@ -77,6 +77,8 @@ public: | |||
/** MAC ONLY - Returns true if this file is actually a bundle. */ | |||
static bool isBundle (const String& filename); | |||
/** MAC ONLY - Adds an item to the dock */ | |||
static void addItemToDock (const File& file); | |||
#endif | |||