diff --git a/extras/Projucer/Source/Licenses/jucer_LicenseController.h b/extras/Projucer/Source/Licenses/jucer_LicenseController.h index d970d2968b..8070027cea 100644 --- a/extras/Projucer/Source/Licenses/jucer_LicenseController.h +++ b/extras/Projucer/Source/Licenses/jucer_LicenseController.h @@ -103,9 +103,6 @@ private: #if ! JUCER_ENABLE_GPL_MODE //============================================================================== struct ModalCompletionCallback; - friend struct ModalCompletionCallback; - - friend struct ContainerDeletePolicy; friend struct LicenseThread; //============================================================================== diff --git a/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h b/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h index adbfa99fdb..c8a262fbc3 100644 --- a/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h +++ b/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h @@ -504,8 +504,6 @@ private: //============================================================================== class CallbackHandler; - friend class CallbackHandler; - friend struct ContainerDeletePolicy; std::unique_ptr callbackHandler; void audioDeviceIOCallbackInt (const float** inputChannelData, int totalNumInputChannels, diff --git a/modules/juce_audio_devices/native/juce_linux_Midi.cpp b/modules/juce_audio_devices/native/juce_linux_Midi.cpp index ad33f5517e..3e446a0765 100644 --- a/modules/juce_audio_devices/native/juce_linux_Midi.cpp +++ b/modules/juce_audio_devices/native/juce_linux_Midi.cpp @@ -38,6 +38,37 @@ namespace class AlsaClient : public ReferenceCountedObject { public: + AlsaClient() + { + jassert (instance == nullptr); + + snd_seq_open (&handle, "default", SND_SEQ_OPEN_DUPLEX, 0); + + if (handle != nullptr) + { + snd_seq_nonblock (handle, SND_SEQ_NONBLOCK); + snd_seq_set_client_name (handle, JUCE_ALSA_MIDI_NAME); + clientId = snd_seq_client_id (handle); + + // It's good idea to pre-allocate a good number of elements + ports.ensureStorageAllocated (32); + } + } + + ~AlsaClient() + { + jassert (instance != nullptr); + instance = nullptr; + + if (handle != nullptr) + snd_seq_close (handle); + + jassert (activeCallbacks.get() == 0); + + if (inputThread) + inputThread->stopThread (3000); + } + using Ptr = ReferenceCountedObjectPtr; //============================================================================== @@ -251,42 +282,6 @@ private: static AlsaClient* instance; - //============================================================================== - friend class ReferenceCountedObjectPtr; - friend struct ContainerDeletePolicy; - - AlsaClient() - { - jassert (instance == nullptr); - - snd_seq_open (&handle, "default", SND_SEQ_OPEN_DUPLEX, 0); - - if (handle != nullptr) - { - snd_seq_nonblock (handle, SND_SEQ_NONBLOCK); - snd_seq_set_client_name (handle, JUCE_ALSA_MIDI_NAME); - clientId = snd_seq_client_id (handle); - - // It's good idea to pre-allocate a good number of elements - ports.ensureStorageAllocated (32); - } - } - - ~AlsaClient() - { - jassert (instance != nullptr); - - instance = nullptr; - - if (handle != nullptr) - snd_seq_close (handle); - - jassert (activeCallbacks.get() == 0); - - if (inputThread) - inputThread->stopThread (3000); - } - //============================================================================== class MidiInputThread : public Thread { diff --git a/modules/juce_audio_formats/format/juce_AudioFormatWriter.h b/modules/juce_audio_formats/format/juce_AudioFormatWriter.h index 3231dc87c2..16f699b295 100644 --- a/modules/juce_audio_formats/format/juce_AudioFormatWriter.h +++ b/modules/juce_audio_formats/format/juce_AudioFormatWriter.h @@ -240,7 +240,6 @@ public: private: class Buffer; - friend struct ContainerDeletePolicy; std::unique_ptr buffer; }; diff --git a/modules/juce_audio_processors/scanning/juce_PluginListComponent.h b/modules/juce_audio_processors/scanning/juce_PluginListComponent.h index d7d71ffb77..53a228ff43 100644 --- a/modules/juce_audio_processors/scanning/juce_PluginListComponent.h +++ b/modules/juce_audio_processors/scanning/juce_PluginListComponent.h @@ -113,8 +113,6 @@ private: std::unique_ptr tableModel; class Scanner; - friend class Scanner; - friend struct ContainerDeletePolicy; std::unique_ptr currentScanner; void scanFinished (const StringArray&); diff --git a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h index ed9557541c..3730bc95c4 100644 --- a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h +++ b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h @@ -197,7 +197,6 @@ public: private: struct Pimpl; - friend struct ContainerDeletePolicy; std::unique_ptr pimpl; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SliderAttachment) }; @@ -226,7 +225,6 @@ public: private: struct Pimpl; - friend struct ContainerDeletePolicy; std::unique_ptr pimpl; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ComboBoxAttachment) }; @@ -250,7 +248,6 @@ public: private: struct Pimpl; - friend struct ContainerDeletePolicy; std::unique_ptr pimpl; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ButtonAttachment) }; diff --git a/modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h b/modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h index cca1367565..b74019dda1 100644 --- a/modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h +++ b/modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h @@ -162,7 +162,6 @@ private: AudioCDBurner (const int deviceIndex); class Pimpl; - friend struct ContainerDeletePolicy; std::unique_ptr pimpl; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioCDBurner) diff --git a/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h b/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h index f57fc69358..a589f9c415 100644 --- a/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h +++ b/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h @@ -105,7 +105,6 @@ private: const bool hideAdvancedOptionsWithButton; class MidiInputSelectorComponentListBox; - friend struct ContainerDeletePolicy; std::unique_ptr midiInputsList; std::unique_ptr midiOutputSelector; std::unique_ptr