| 
							- /*
 -   ==============================================================================
 - 
 -    This file is part of the JUCE 7 technical preview.
 -    Copyright (c) 2022 - Raw Material Software Limited
 - 
 -    You may use this code under the terms of the GPL v3
 -    (see www.gnu.org/licenses).
 - 
 -    For the technical preview this file cannot be licensed commercially.
 - 
 -    JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
 -    EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
 -    DISCLAIMED.
 - 
 -   ==============================================================================
 - */
 - 
 - namespace juce
 - {
 - 
 - AudioAppComponent::AudioAppComponent()
 -     : deviceManager (defaultDeviceManager),
 -       usingCustomDeviceManager (false)
 - {
 - }
 - 
 - AudioAppComponent::AudioAppComponent (AudioDeviceManager& adm)
 -     : deviceManager (adm),
 -       usingCustomDeviceManager (true)
 - {
 - }
 - 
 - AudioAppComponent::~AudioAppComponent()
 - {
 -     // If you hit this then your derived class must call shutdown audio in
 -     // destructor!
 -     jassert (audioSourcePlayer.getCurrentSource() == nullptr);
 - }
 - 
 - void AudioAppComponent::setAudioChannels (int numInputChannels, int numOutputChannels, const XmlElement* const xml)
 - {
 -     String audioError;
 - 
 -     if (usingCustomDeviceManager && xml == nullptr)
 -     {
 -         auto setup = deviceManager.getAudioDeviceSetup();
 - 
 -         if (setup.inputChannels.countNumberOfSetBits() != numInputChannels
 -              || setup.outputChannels.countNumberOfSetBits() != numOutputChannels)
 -         {
 -             setup.inputChannels.clear();
 -             setup.outputChannels.clear();
 - 
 -             setup.inputChannels.setRange (0, numInputChannels, true);
 -             setup.outputChannels.setRange (0, numOutputChannels, true);
 - 
 -             audioError = deviceManager.setAudioDeviceSetup (setup, false);
 -         }
 -     }
 -     else
 -     {
 -         audioError = deviceManager.initialise (numInputChannels, numOutputChannels, xml, true);
 -     }
 - 
 -     jassert (audioError.isEmpty());
 - 
 -     deviceManager.addAudioCallback (&audioSourcePlayer);
 -     audioSourcePlayer.setSource (this);
 - }
 - 
 - void AudioAppComponent::shutdownAudio()
 - {
 -     audioSourcePlayer.setSource (nullptr);
 -     deviceManager.removeAudioCallback (&audioSourcePlayer);
 - 
 -     // other audio callbacks may still be using the device
 -     if (! usingCustomDeviceManager)
 -         deviceManager.closeAudioDevice();
 - }
 - 
 - } // namespace juce
 
 
  |