diff --git a/juce_amalgamated.cpp b/juce_amalgamated.cpp index efd585412f..033e6de10b 100644 --- a/juce_amalgamated.cpp +++ b/juce_amalgamated.cpp @@ -19520,7 +19520,7 @@ void AudioSourcePlayer::audioDeviceIOCallback (const float** inputChannelData, source->getNextAudioBlock (info); - for (int i = info.buffer->getNumChannels(); --i >= 0;) + for (i = info.buffer->getNumChannels(); --i >= 0;) info.buffer->applyGainRamp (i, info.startSample, info.numSamples, lastGain, gain); lastGain = gain; @@ -31709,7 +31709,8 @@ void AudioProcessorGraph::processBlock (AudioSampleBuffer& buffer, MidiBuffer& m currentMidiInputBuffer = &midiMessages; currentMidiOutputBuffer.clear(); - for (int i = 0; i < renderingOps.size(); ++i) + int i; + for (i = 0; i < renderingOps.size(); ++i) { GraphRenderingOps::AudioGraphRenderingOp* const op = (GraphRenderingOps::AudioGraphRenderingOp*) renderingOps.getUnchecked(i); @@ -31717,7 +31718,7 @@ void AudioProcessorGraph::processBlock (AudioSampleBuffer& buffer, MidiBuffer& m op->perform (renderingBuffers, midiBuffers, numSamples); } - for (int i = 0; i < buffer.getNumChannels(); ++i) + for (i = 0; i < buffer.getNumChannels(); ++i) buffer.copyFrom (i, 0, currentAudioOutputBuffer, i, 0, numSamples); } @@ -66661,8 +66662,6 @@ void MidiKeyboardComponent::setMidiChannelsToDisplay (const int midiChannelMask) void MidiKeyboardComponent::setVelocity (const float velocity_) { - jassert (velocity > 0 && velocity <= 1.0f); - velocity = jlimit (0.0f, 1.0f, velocity_); } @@ -236887,8 +236886,6 @@ const String DSoundAudioIODevice::openDevice (const BitArray& inputChannels, { closeDevice(); totalSamplesOut = 0; - enabledInputs.clear(); - enabledOutputs.clear(); sampleRate = sampleRate_; @@ -236901,20 +236898,24 @@ const String DSoundAudioIODevice::openDevice (const BitArray& inputChannels, dlh.scanForDevices(); enabledInputs = inputChannels; - numInputBuffers = inputChannels.countNumberOfSetBits(); + enabledInputs.setRange (inChannels.size(), + enabledInputs.getHighestBit() + 1 - inChannels.size(), + false); + + numInputBuffers = enabledInputs.countNumberOfSetBits(); inputBuffers = new float* [numInputBuffers + 2]; zeromem (inputBuffers, sizeof (inputBuffers)); int i, numIns = 0; - for (i = 0; i < inputChannels.getHighestBit(); i += 2) + for (i = 0; i <= enabledInputs.getHighestBit(); i += 2) { float* left = 0; float* right = 0; - if (inputChannels[i]) + if (enabledInputs[i]) left = inputBuffers[numIns++] = (float*) juce_calloc ((bufferSizeSamples + 16) * sizeof (float)); - if (inputChannels[i + 1]) + if (enabledInputs[i + 1]) right = inputBuffers[numIns++] = (float*) juce_calloc ((bufferSizeSamples + 16) * sizeof (float)); if (left != 0 || right != 0) @@ -236925,20 +236926,24 @@ const String DSoundAudioIODevice::openDevice (const BitArray& inputChannels, } enabledOutputs = outputChannels; - numOutputBuffers = outputChannels.countNumberOfSetBits(); + enabledOutputs.setRange (outChannels.size(), + enabledOutputs.getHighestBit() + 1 - outChannels.size(), + false); + + numOutputBuffers = enabledOutputs.countNumberOfSetBits(); outputBuffers = new float* [numOutputBuffers + 2]; zeromem (outputBuffers, sizeof (outputBuffers)); int numOuts = 0; - for (i = 0; i < outputChannels.getHighestBit(); i += 2) + for (i = 0; i <= enabledOutputs.getHighestBit(); i += 2) { float* left = 0; float* right = 0; - if (inputChannels[i]) + if (enabledOutputs[i]) left = outputBuffers[numOuts++] = (float*) juce_calloc ((bufferSizeSamples + 16) * sizeof (float)); - if (inputChannels[i + 1]) + if (enabledOutputs[i + 1]) right = outputBuffers[numOuts++] = (float*) juce_calloc ((bufferSizeSamples + 16) * sizeof (float)); if (left != 0 || right != 0) @@ -244281,7 +244286,6 @@ int juce_seekInInternetFile (void* handle, int newPosition) return 0; } - /********* End of inlined file: juce_mac_HTTPStream.h *********/ int SystemStats::getMACAddresses (int64* addresses, int maxNum, const bool littleEndian) throw() @@ -252712,7 +252716,6 @@ int juce_seekInInternetFile (void* handle, int newPosition) return 0; } - /********* End of inlined file: juce_mac_HTTPStream.h *********/ static bool GetEthernetIterator (io_iterator_t* matchingServices) throw() @@ -255128,6 +255131,9 @@ void FileChooser::showPlatformDialog (OwnedArray& results, options.clientName = PlatformUtilities::juceStringToCFString (name); CFStringRef message = PlatformUtilities::juceStringToCFString (title); + if (userInfo.defaultLocationValid) + options.saveFileName = PlatformUtilities::juceStringToCFString (currentFileOrDirectory.getFileName()); + // nasty layout bug if the message text is set for a directory browser.. if (selectsDirectory) options.windowTitle = message; diff --git a/juce_amalgamated.h b/juce_amalgamated.h index dd7151ee77..b03fe807f5 100644 --- a/juce_amalgamated.h +++ b/juce_amalgamated.h @@ -41,8 +41,8 @@ ============================================================================== */ -#ifndef __ALL_JUCE_HEADERS_H__ -#define __ALL_JUCE_HEADERS_H__ +#ifndef __JUCE_AMALGAMATED_TEMPLATE_JUCEHEADER__ +#define __JUCE_AMALGAMATED_TEMPLATE_JUCEHEADER__ #define DONT_AUTOLINK_TO_JUCE_LIBRARY 1 @@ -201,7 +201,7 @@ /** Enabling this builds support for AudioUnit audio plugins. @see AudioUnitPluginFormat, AudioPluginFormat, AudioPluginFormatManager, JUCE_PLUGINHOST_VST */ -#define JUCE_PLUGINHOST_AU 1 +//#define JUCE_PLUGINHOST_AU 1 /** Disabling this will avoid linking to any UI code. This is handy for writing command-line utilities, e.g. on linux boxes which don't have some @@ -2721,8 +2721,7 @@ protected: /** Destructor. */ ~ArrayAllocationBase() throw() { - if (elements != 0) - juce_free (elements); + delete[] elements; } /** Changes the amount of storage allocated. @@ -2736,23 +2735,26 @@ protected: { if (numAllocated != numElements) { - numAllocated = numElements; - if (numElements > 0) { - if (elements == 0) - elements = (ElementType*) juce_malloc (sizeof (ElementType) * numElements); - else - elements = (ElementType*) juce_realloc (elements, sizeof (ElementType) * numElements); + ElementType* const newElements = new ElementType [numElements]; + + const int itemsToRetain = jmin (numElements, numAllocated); + + for (int i = 0; i < itemsToRetain; ++i) + newElements[i] = elements[i]; + + delete[] elements; + elements = newElements; + } - else + else if (elements != 0) { - if (elements != 0) - { - juce_free (elements); - elements = 0; - } + delete[] elements; + elements = 0; } + + numAllocated = numElements; } } @@ -12271,6 +12273,9 @@ public: for lengthy POST operations, so that you can provide user feedback. @param progressCallbackContext if a callback is specified, this value will be passed to the function + @param extraHeaders if not empty, this string is appended onto the headers that + are used for the request. It must therefore be a valid set of HTML + header directives, separated by newlines. */ InputStream* createInputStream (const bool usePostCommand, OpenStreamProgressCallback* const progressCallback = 0, @@ -41062,6 +41067,7 @@ public: dragged. @param sourceDescription the description string passed into DragAndDropContainer::startDragging() + @param sourceComponent the component that was passed into DragAndDropContainer::startDragging() @returns true if this component wants to receive the other callbacks regarging this type of object; if it returns false, no other callbacks will be made. */ @@ -41077,7 +41083,7 @@ public: user feedback about whether the item can be dropped here or not. @param sourceDescription the description string passed into DragAndDropContainer::startDragging() - @param sourceComponent the component passed into DragAndDropContainer::startDragging() + @param sourceComponent the component that was passed into DragAndDropContainer::startDragging() @param x the mouse x position, relative to this component @param y the mouse y position, relative to this component @see itemDragExit @@ -41094,7 +41100,7 @@ public: this lets you know what happens in-between. @param sourceDescription the description string passed into DragAndDropContainer::startDragging() - @param sourceComponent the component passed into DragAndDropContainer::startDragging() + @param sourceComponent the component that was passed into DragAndDropContainer::startDragging() @param x the mouse x position, relative to this component @param y the mouse y position, relative to this component */ @@ -41112,7 +41118,7 @@ public: as a signal to repaint it in its normal state. @param sourceDescription the description string passed into DragAndDropContainer::startDragging() - @param sourceComponent the component passed into DragAndDropContainer::startDragging() + @param sourceComponent the component that was passed into DragAndDropContainer::startDragging() @see itemDragEnter */ virtual void itemDragExit (const String& sourceDescription, @@ -41127,7 +41133,7 @@ public: clean up in here if there's anything you need to do when the drag finishes. @param sourceDescription the description string passed into DragAndDropContainer::startDragging() - @param sourceComponent the component passed into DragAndDropContainer::startDragging() + @param sourceComponent the component that was passed into DragAndDropContainer::startDragging() @param x the mouse x position, relative to this component @param y the mouse y position, relative to this component */ @@ -44363,6 +44369,8 @@ public: to be treated as a movement @param offset values greater than 0.0 increase the minimum speed that will be used when the threshold is reached + @param userCanPressKeyToSwapMode if true, then the user can hold down the ctrl or command + key to toggle velocity-sensitive mode */ void setVelocityModeParameters (const double sensitivity = 1.0, const int threshold = 1.0, @@ -50231,6 +50239,8 @@ public: @param timeOutMsWhenCancelling when 'cancel' is pressed, this is how long to wait for the thread to stop before killing it forcibly (see Thread::stopThread() ) + @param cancelButtonText the text that should be shown in the cancel button + (if it has one) */ ThreadWithProgressWindow (const String& windowTitle, const bool hasProgressBar, @@ -53356,4 +53366,4 @@ END_JUCE_NAMESPACE #endif // __JUCE_JUCEHEADER__ /********* End of inlined file: juce.h *********/ -#endif +#endif // __JUCE_AMALGAMATED_TEMPLATE_JUCEHEADER__ diff --git a/src/juce_appframework/audio/audio_sources/juce_AudioSourcePlayer.cpp b/src/juce_appframework/audio/audio_sources/juce_AudioSourcePlayer.cpp index b6025d6495..27c00e980a 100644 --- a/src/juce_appframework/audio/audio_sources/juce_AudioSourcePlayer.cpp +++ b/src/juce_appframework/audio/audio_sources/juce_AudioSourcePlayer.cpp @@ -162,7 +162,7 @@ void AudioSourcePlayer::audioDeviceIOCallback (const float** inputChannelData, source->getNextAudioBlock (info); - for (int i = info.buffer->getNumChannels(); --i >= 0;) + for (i = info.buffer->getNumChannels(); --i >= 0;) info.buffer->applyGainRamp (i, info.startSample, info.numSamples, lastGain, gain); lastGain = gain; diff --git a/src/juce_appframework/audio/processors/juce_AudioProcessorGraph.cpp b/src/juce_appframework/audio/processors/juce_AudioProcessorGraph.cpp index 3dbb44fd43..a36718b8dc 100644 --- a/src/juce_appframework/audio/processors/juce_AudioProcessorGraph.cpp +++ b/src/juce_appframework/audio/processors/juce_AudioProcessorGraph.cpp @@ -1101,7 +1101,8 @@ void AudioProcessorGraph::processBlock (AudioSampleBuffer& buffer, MidiBuffer& m currentMidiInputBuffer = &midiMessages; currentMidiOutputBuffer.clear(); - for (int i = 0; i < renderingOps.size(); ++i) + int i; + for (i = 0; i < renderingOps.size(); ++i) { GraphRenderingOps::AudioGraphRenderingOp* const op = (GraphRenderingOps::AudioGraphRenderingOp*) renderingOps.getUnchecked(i); @@ -1109,7 +1110,7 @@ void AudioProcessorGraph::processBlock (AudioSampleBuffer& buffer, MidiBuffer& m op->perform (renderingBuffers, midiBuffers, numSamples); } - for (int i = 0; i < buffer.getNumChannels(); ++i) + for (i = 0; i < buffer.getNumChannels(); ++i) buffer.copyFrom (i, 0, currentAudioOutputBuffer, i, 0, numSamples); }