upgrade to JUCE 5.4.3. Remove (probably) unused JUCE modules. Remove VST2 target (it's been end-of-life'd by Steinberg and by JUCE)
This commit is contained in:
		@ -104,7 +104,6 @@ public:
 | 
			
		||||
private:
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    class ActiveProcess;
 | 
			
		||||
    friend struct ContainerDeletePolicy<ActiveProcess>;
 | 
			
		||||
    std::unique_ptr<ActiveProcess> activeProcess;
 | 
			
		||||
 | 
			
		||||
    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ChildProcess)
 | 
			
		||||
 | 
			
		||||
@ -90,13 +90,13 @@ public:
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    /** Provides the type of scoped lock to use with a CriticalSection. */
 | 
			
		||||
    typedef GenericScopedLock <CriticalSection>       ScopedLockType;
 | 
			
		||||
    using ScopedLockType = GenericScopedLock<CriticalSection>;
 | 
			
		||||
 | 
			
		||||
    /** Provides the type of scoped unlocker to use with a CriticalSection. */
 | 
			
		||||
    typedef GenericScopedUnlock <CriticalSection>     ScopedUnlockType;
 | 
			
		||||
    using ScopedUnlockType = GenericScopedUnlock<CriticalSection>;
 | 
			
		||||
 | 
			
		||||
    /** Provides the type of scoped try-locker to use with a CriticalSection. */
 | 
			
		||||
    typedef GenericScopedTryLock <CriticalSection>    ScopedTryLockType;
 | 
			
		||||
    using ScopedTryLockType = GenericScopedTryLock<CriticalSection>;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
@ -133,8 +133,8 @@ private:
 | 
			
		||||
class JUCE_API  DummyCriticalSection
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    inline DummyCriticalSection() noexcept      {}
 | 
			
		||||
    inline ~DummyCriticalSection() noexcept     {}
 | 
			
		||||
    inline DummyCriticalSection() = default;
 | 
			
		||||
    inline ~DummyCriticalSection() = default;
 | 
			
		||||
 | 
			
		||||
    inline void enter() const noexcept          {}
 | 
			
		||||
    inline bool tryEnter() const noexcept       { return true; }
 | 
			
		||||
@ -148,7 +148,7 @@ public:
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    /** A dummy scoped-unlocker type to use with a dummy critical section. */
 | 
			
		||||
    typedef ScopedLockType ScopedUnlockType;
 | 
			
		||||
    using ScopedUnlockType = ScopedLockType;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    JUCE_DECLARE_NON_COPYABLE (DummyCriticalSection)
 | 
			
		||||
@ -183,7 +183,7 @@ private:
 | 
			
		||||
 | 
			
		||||
    @see CriticalSection, ScopedUnlock
 | 
			
		||||
*/
 | 
			
		||||
typedef CriticalSection::ScopedLockType  ScopedLock;
 | 
			
		||||
using ScopedLock = CriticalSection::ScopedLockType;
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
/**
 | 
			
		||||
@ -223,7 +223,7 @@ typedef CriticalSection::ScopedLockType  ScopedLock;
 | 
			
		||||
 | 
			
		||||
    @see CriticalSection, ScopedLock
 | 
			
		||||
*/
 | 
			
		||||
typedef CriticalSection::ScopedUnlockType  ScopedUnlock;
 | 
			
		||||
using ScopedUnlock = CriticalSection::ScopedUnlockType;
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
/**
 | 
			
		||||
@ -257,6 +257,6 @@ typedef CriticalSection::ScopedUnlockType  ScopedUnlock;
 | 
			
		||||
 | 
			
		||||
    @see CriticalSection::tryEnter, ScopedLock, ScopedUnlock, ScopedReadLock
 | 
			
		||||
*/
 | 
			
		||||
typedef CriticalSection::ScopedTryLockType  ScopedTryLock;
 | 
			
		||||
using ScopedTryLock = CriticalSection::ScopedTryLockType;
 | 
			
		||||
 | 
			
		||||
} // namespace juce
 | 
			
		||||
 | 
			
		||||
@ -38,7 +38,7 @@ public:
 | 
			
		||||
    /** Creates an unopened DynamicLibrary object.
 | 
			
		||||
        Call open() to actually open one.
 | 
			
		||||
    */
 | 
			
		||||
    DynamicLibrary() noexcept {}
 | 
			
		||||
    DynamicLibrary() = default;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
    */
 | 
			
		||||
 | 
			
		||||
@ -94,8 +94,6 @@ public:
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    struct Pimpl;
 | 
			
		||||
    friend struct Pimpl;
 | 
			
		||||
    friend struct ContainerDeletePolicy<Pimpl>;
 | 
			
		||||
    std::unique_ptr<Pimpl> pimpl;
 | 
			
		||||
 | 
			
		||||
    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (HighResolutionTimer)
 | 
			
		||||
 | 
			
		||||
@ -110,7 +110,6 @@ public:
 | 
			
		||||
private:
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    class Pimpl;
 | 
			
		||||
    friend struct ContainerDeletePolicy<Pimpl>;
 | 
			
		||||
    std::unique_ptr<Pimpl> pimpl;
 | 
			
		||||
 | 
			
		||||
    CriticalSection lock;
 | 
			
		||||
 | 
			
		||||
@ -24,9 +24,6 @@ namespace juce
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
ReadWriteLock::ReadWriteLock() noexcept
 | 
			
		||||
    : numWaitingWriters (0),
 | 
			
		||||
      numWriters (0),
 | 
			
		||||
      writerThreadId (0)
 | 
			
		||||
{
 | 
			
		||||
    readerThreads.ensureStorageAllocated (16);
 | 
			
		||||
}
 | 
			
		||||
@ -141,7 +138,7 @@ void ReadWriteLock::exitWrite() const noexcept
 | 
			
		||||
 | 
			
		||||
    if (--numWriters == 0)
 | 
			
		||||
    {
 | 
			
		||||
        writerThreadId = 0;
 | 
			
		||||
        writerThreadId = {};
 | 
			
		||||
        waitEvent.signal();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -127,8 +127,8 @@ private:
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    SpinLock accessLock;
 | 
			
		||||
    WaitableEvent waitEvent;
 | 
			
		||||
    mutable int numWaitingWriters, numWriters;
 | 
			
		||||
    mutable Thread::ThreadID writerThreadId;
 | 
			
		||||
    mutable int numWaitingWriters = 0, numWriters = 0;
 | 
			
		||||
    mutable Thread::ThreadID writerThreadId = {};
 | 
			
		||||
 | 
			
		||||
    struct ThreadRecursionCount
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -41,8 +41,8 @@ namespace juce
 | 
			
		||||
class JUCE_API  SpinLock
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    inline SpinLock() noexcept {}
 | 
			
		||||
    inline ~SpinLock() noexcept {}
 | 
			
		||||
    inline SpinLock() = default;
 | 
			
		||||
    inline ~SpinLock() = default;
 | 
			
		||||
 | 
			
		||||
    /** Acquires the lock.
 | 
			
		||||
        This will block until the lock has been successfully acquired by this thread.
 | 
			
		||||
@ -70,10 +70,10 @@ public:
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    /** Provides the type of scoped lock to use for locking a SpinLock. */
 | 
			
		||||
    typedef GenericScopedLock <SpinLock>       ScopedLockType;
 | 
			
		||||
    using ScopedLockType = GenericScopedLock<SpinLock>;
 | 
			
		||||
 | 
			
		||||
    /** Provides the type of scoped unlocker to use with a SpinLock. */
 | 
			
		||||
    typedef GenericScopedUnlock <SpinLock>     ScopedUnlockType;
 | 
			
		||||
    using ScopedUnlockType = GenericScopedUnlock<SpinLock>;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
 | 
			
		||||
@ -195,7 +195,7 @@ bool Thread::currentThreadShouldExit()
 | 
			
		||||
bool Thread::waitForThreadToExit (const int timeOutMilliseconds) const
 | 
			
		||||
{
 | 
			
		||||
    // Doh! So how exactly do you expect this thread to wait for itself to stop??
 | 
			
		||||
    jassert (getThreadId() != getCurrentThreadId() || getCurrentThreadId() == 0);
 | 
			
		||||
    jassert (getThreadId() != getCurrentThreadId() || getCurrentThreadId() == ThreadID());
 | 
			
		||||
 | 
			
		||||
    auto timeoutEnd = Time::getMillisecondCounter() + (uint32) timeOutMilliseconds;
 | 
			
		||||
 | 
			
		||||
@ -236,7 +236,7 @@ bool Thread::stopThread (const int timeOutMilliseconds)
 | 
			
		||||
            killThread();
 | 
			
		||||
 | 
			
		||||
            threadHandle = nullptr;
 | 
			
		||||
            threadId = 0;
 | 
			
		||||
            threadId = {};
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@ -288,7 +288,7 @@ bool Thread::setPriority (int newPriority)
 | 
			
		||||
 | 
			
		||||
bool Thread::setCurrentThreadPriority (const int newPriority)
 | 
			
		||||
{
 | 
			
		||||
    return setThreadPriority (0, newPriority);
 | 
			
		||||
    return setThreadPriority ({}, newPriority);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Thread::setAffinityMask (const uint32 newAffinityMask)
 | 
			
		||||
 | 
			
		||||
@ -105,7 +105,7 @@ public:
 | 
			
		||||
        the stopThread method will wait for a given time-period for this to
 | 
			
		||||
        happen.
 | 
			
		||||
 | 
			
		||||
        If the thread is stuck and fails to respond after the time-out, it gets
 | 
			
		||||
        If the thread is stuck and fails to respond after the timeout, it gets
 | 
			
		||||
        forcibly killed, which is a very bad thing to happen, as it could still
 | 
			
		||||
        be holding locks, etc. which are needed by other parts of your program.
 | 
			
		||||
 | 
			
		||||
@ -120,10 +120,12 @@ public:
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    /** Invokes a lambda or function on its own thread.
 | 
			
		||||
 | 
			
		||||
        This will spin up a Thread object which calls the function and then exits.
 | 
			
		||||
        Bear in mind that starting and stopping a thread can be a fairly heavyweight
 | 
			
		||||
        operation, so you might prefer to use a ThreadPool if you're kicking off a lot
 | 
			
		||||
        of short background tasks.
 | 
			
		||||
 | 
			
		||||
        Also note that using an anonymous thread makes it very difficult to interrupt
 | 
			
		||||
        the function when you need to stop it, e.g. when your app quits. So it's up to
 | 
			
		||||
        you to deal with situations where the function may fail to stop in time.
 | 
			
		||||
@ -143,8 +145,7 @@ public:
 | 
			
		||||
        this method, to interrupt any waits that might be in progress, and allow it
 | 
			
		||||
        to reach a point where it can exit.
 | 
			
		||||
 | 
			
		||||
        @see threadShouldExit
 | 
			
		||||
        @see waitForThreadToExit
 | 
			
		||||
        @see threadShouldExit, waitForThreadToExit
 | 
			
		||||
    */
 | 
			
		||||
    void signalThreadShouldExit();
 | 
			
		||||
 | 
			
		||||
@ -179,7 +180,7 @@ public:
 | 
			
		||||
    class JUCE_API Listener
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual ~Listener() {}
 | 
			
		||||
        virtual ~Listener() = default;
 | 
			
		||||
 | 
			
		||||
        /** Called if Thread::signalThreadShouldExit was called.
 | 
			
		||||
            @see Thread::threadShouldExit, Thread::addListener, Thread::removeListener
 | 
			
		||||
@ -189,6 +190,7 @@ public:
 | 
			
		||||
 | 
			
		||||
    /** Add a listener to this thread which will receive a callback when
 | 
			
		||||
        signalThreadShouldExit was called on this thread.
 | 
			
		||||
 | 
			
		||||
        @see signalThreadShouldExit, removeListener
 | 
			
		||||
    */
 | 
			
		||||
    void addListener (Listener*);
 | 
			
		||||
@ -223,11 +225,11 @@ public:
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    /** Changes the thread's priority.
 | 
			
		||||
 | 
			
		||||
        May return false if for some reason the priority can't be changed.
 | 
			
		||||
 | 
			
		||||
        @param priority     the new priority, in the range 0 (lowest) to 10 (highest). A priority
 | 
			
		||||
                            of 5 is normal.
 | 
			
		||||
 | 
			
		||||
        @see realtimeAudioPriority
 | 
			
		||||
    */
 | 
			
		||||
    bool setPriority (int priority);
 | 
			
		||||
@ -252,25 +254,35 @@ public:
 | 
			
		||||
    void setAffinityMask (uint32 affinityMask);
 | 
			
		||||
 | 
			
		||||
    /** Changes the affinity mask for the caller thread.
 | 
			
		||||
 | 
			
		||||
        This will change the affinity mask for the thread that calls this static method.
 | 
			
		||||
 | 
			
		||||
        @see setAffinityMask
 | 
			
		||||
    */
 | 
			
		||||
    static void JUCE_CALLTYPE setCurrentThreadAffinityMask (uint32 affinityMask);
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    // this can be called from any thread that needs to pause..
 | 
			
		||||
    /** Suspends the execution of the current thread until the specified timeout period
 | 
			
		||||
        has elapsed (note that this may not be exact).
 | 
			
		||||
 | 
			
		||||
        The timeout period must not be negative and whilst sleeping the thread cannot
 | 
			
		||||
        be woken up so it should only be used for short periods of time and when other
 | 
			
		||||
        methods such as using a WaitableEvent or CriticalSection are not possible.
 | 
			
		||||
    */
 | 
			
		||||
    static void JUCE_CALLTYPE sleep (int milliseconds);
 | 
			
		||||
 | 
			
		||||
    /** Yields the calling thread's current time-slot. */
 | 
			
		||||
    /** Yields the current thread's CPU time-slot and allows a new thread to run.
 | 
			
		||||
 | 
			
		||||
        If there are no other threads of equal or higher priority currently running then
 | 
			
		||||
        this will return immediately and the current thread will continue to run.
 | 
			
		||||
    */
 | 
			
		||||
    static void JUCE_CALLTYPE yield();
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    /** Makes the thread wait for a notification.
 | 
			
		||||
    /** Suspends the execution of this thread until either the specified timeout period
 | 
			
		||||
        has elapsed, or another thread calls the notify() method to wake it up.
 | 
			
		||||
 | 
			
		||||
        This puts the thread to sleep until either the timeout period expires, or
 | 
			
		||||
        another thread calls the notify() method to wake it up.
 | 
			
		||||
 | 
			
		||||
        A negative time-out value means that the method will wait indefinitely.
 | 
			
		||||
        A negative timeout value means that the method will wait indefinitely.
 | 
			
		||||
 | 
			
		||||
        @returns    true if the event has been signalled, false if the timeout expires.
 | 
			
		||||
    */
 | 
			
		||||
@ -286,9 +298,10 @@ public:
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    /** A value type used for thread IDs.
 | 
			
		||||
 | 
			
		||||
        @see getCurrentThreadId(), getThreadId()
 | 
			
		||||
    */
 | 
			
		||||
    typedef void* ThreadID;
 | 
			
		||||
    using ThreadID = void*;
 | 
			
		||||
 | 
			
		||||
    /** Returns an id that identifies the caller thread.
 | 
			
		||||
 | 
			
		||||
@ -307,23 +320,65 @@ public:
 | 
			
		||||
    static Thread* JUCE_CALLTYPE getCurrentThread();
 | 
			
		||||
 | 
			
		||||
    /** Returns the ID of this thread.
 | 
			
		||||
 | 
			
		||||
        That means the ID of this thread object - not of the thread that's calling the method.
 | 
			
		||||
        This can change when the thread is started and stopped, and will be invalid if the
 | 
			
		||||
        thread's not actually running.
 | 
			
		||||
 | 
			
		||||
        @see getCurrentThreadId
 | 
			
		||||
    */
 | 
			
		||||
    ThreadID getThreadId() const noexcept;
 | 
			
		||||
 | 
			
		||||
    /** Returns the name of the thread.
 | 
			
		||||
        This is the name that gets set in the constructor.
 | 
			
		||||
    */
 | 
			
		||||
    /** Returns the name of the thread. This is the name that gets set in the constructor. */
 | 
			
		||||
    const String& getThreadName() const noexcept                    { return threadName; }
 | 
			
		||||
 | 
			
		||||
    /** Changes the name of the caller thread.
 | 
			
		||||
 | 
			
		||||
        Different OSes may place different length or content limits on this name.
 | 
			
		||||
    */
 | 
			
		||||
    static void JUCE_CALLTYPE setCurrentThreadName (const String& newThreadName);
 | 
			
		||||
 | 
			
		||||
   #if JUCE_ANDROID || defined (DOXYGEN)
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    /** Initialises the JUCE subsystem for projects not created by the Projucer
 | 
			
		||||
 | 
			
		||||
        On Android, JUCE needs to be initialised once before it is used. The Projucer
 | 
			
		||||
        will automatically generate the necessary java code to do this. However, if
 | 
			
		||||
        you are using JUCE without the Projucer or are creating a library made with
 | 
			
		||||
        JUCE intended for use in non-JUCE apks, then you must call this method
 | 
			
		||||
        manually once on apk startup.
 | 
			
		||||
 | 
			
		||||
        You can call this method from C++ or directly from java by calling the
 | 
			
		||||
        following java method:
 | 
			
		||||
 | 
			
		||||
        @code
 | 
			
		||||
        com.roli.juce.Java.initialiseJUCE (myContext);
 | 
			
		||||
        @endcode
 | 
			
		||||
 | 
			
		||||
        Note that the above java method is only available in Android Studio projects
 | 
			
		||||
        created by the Projucer. If you need to call this from another type of project
 | 
			
		||||
        then you need to add the following java file to
 | 
			
		||||
        your project:
 | 
			
		||||
 | 
			
		||||
        @code
 | 
			
		||||
        package com.roli.juce;
 | 
			
		||||
 | 
			
		||||
        public class Java
 | 
			
		||||
        {
 | 
			
		||||
            static { System.loadLibrary ("juce_jni"); }
 | 
			
		||||
            public native static void initialiseJUCE (Context context);
 | 
			
		||||
        }
 | 
			
		||||
        @endcode
 | 
			
		||||
 | 
			
		||||
        @param jniEnv   this is a pointer to JNI's JNIEnv variable. Any callback
 | 
			
		||||
                        from Java into C++ will have this passed in as it's first
 | 
			
		||||
                        parameter.
 | 
			
		||||
        @param jContext this is a jobject referring to your app/service/receiver/
 | 
			
		||||
                        provider's Context. JUCE needs this for many of it's internal
 | 
			
		||||
                        functions.
 | 
			
		||||
    */
 | 
			
		||||
    static void initialiseJUCE (void* jniEnv, void* jContext);
 | 
			
		||||
   #endif
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
 | 
			
		||||
@ -48,9 +48,7 @@ class ThreadLocalValue
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    /** */
 | 
			
		||||
    ThreadLocalValue() noexcept
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
    ThreadLocalValue() = default;
 | 
			
		||||
 | 
			
		||||
    /** Destructor.
 | 
			
		||||
        When this object is deleted, all the value objects for all threads will be deleted.
 | 
			
		||||
 | 
			
		||||
@ -90,7 +90,7 @@ ThreadPoolJob* ThreadPoolJob::getCurrentThreadPoolJob()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//==============================================================================
 | 
			
		||||
ThreadPool::ThreadPool (const int numThreads, size_t threadStackSize)
 | 
			
		||||
ThreadPool::ThreadPool (int numThreads, size_t threadStackSize)
 | 
			
		||||
{
 | 
			
		||||
    jassert (numThreads > 0); // not much point having a pool without any threads!
 | 
			
		||||
 | 
			
		||||
@ -126,7 +126,7 @@ void ThreadPool::stopThreads()
 | 
			
		||||
        t->stopThread (500);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ThreadPool::addJob (ThreadPoolJob* const job, const bool deleteJobWhenFinished)
 | 
			
		||||
void ThreadPool::addJob (ThreadPoolJob* job, bool deleteJobWhenFinished)
 | 
			
		||||
{
 | 
			
		||||
    jassert (job != nullptr);
 | 
			
		||||
    jassert (job->pool == nullptr);
 | 
			
		||||
@ -190,13 +190,13 @@ ThreadPoolJob* ThreadPool::getJob (int index) const noexcept
 | 
			
		||||
    return jobs [index];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ThreadPool::contains (const ThreadPoolJob* const job) const noexcept
 | 
			
		||||
bool ThreadPool::contains (const ThreadPoolJob* job) const noexcept
 | 
			
		||||
{
 | 
			
		||||
    const ScopedLock sl (lock);
 | 
			
		||||
    return jobs.contains (const_cast<ThreadPoolJob*> (job));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ThreadPool::isJobRunning (const ThreadPoolJob* const job) const noexcept
 | 
			
		||||
bool ThreadPool::isJobRunning (const ThreadPoolJob* job) const noexcept
 | 
			
		||||
{
 | 
			
		||||
    const ScopedLock sl (lock);
 | 
			
		||||
    return jobs.contains (const_cast<ThreadPoolJob*> (job)) && job->isActive;
 | 
			
		||||
@ -212,7 +212,7 @@ void ThreadPool::moveJobToFront (const ThreadPoolJob* job) noexcept
 | 
			
		||||
        jobs.move (index, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ThreadPool::waitForJobToFinish (const ThreadPoolJob* const job, const int timeOutMs) const
 | 
			
		||||
bool ThreadPool::waitForJobToFinish (const ThreadPoolJob* job, int timeOutMs) const
 | 
			
		||||
{
 | 
			
		||||
    if (job != nullptr)
 | 
			
		||||
    {
 | 
			
		||||
@ -230,9 +230,7 @@ bool ThreadPool::waitForJobToFinish (const ThreadPoolJob* const job, const int t
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ThreadPool::removeJob (ThreadPoolJob* const job,
 | 
			
		||||
                            const bool interruptIfRunning,
 | 
			
		||||
                            const int timeOutMs)
 | 
			
		||||
bool ThreadPool::removeJob (ThreadPoolJob* job, bool interruptIfRunning, int timeOutMs)
 | 
			
		||||
{
 | 
			
		||||
    bool dontWait = true;
 | 
			
		||||
    OwnedArray<ThreadPoolJob> deletionList;
 | 
			
		||||
@ -261,8 +259,8 @@ bool ThreadPool::removeJob (ThreadPoolJob* const job,
 | 
			
		||||
    return dontWait || waitForJobToFinish (job, timeOutMs);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ThreadPool::removeAllJobs (const bool interruptRunningJobs, const int timeOutMs,
 | 
			
		||||
                                ThreadPool::JobSelector* const selectedJobsToRemove)
 | 
			
		||||
bool ThreadPool::removeAllJobs (bool interruptRunningJobs, int timeOutMs,
 | 
			
		||||
                                ThreadPool::JobSelector* selectedJobsToRemove)
 | 
			
		||||
{
 | 
			
		||||
    Array<ThreadPoolJob*> jobsToWaitFor;
 | 
			
		||||
 | 
			
		||||
@ -319,7 +317,7 @@ bool ThreadPool::removeAllJobs (const bool interruptRunningJobs, const int timeO
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
StringArray ThreadPool::getNamesOfAllJobs (const bool onlyReturnActiveJobs) const
 | 
			
		||||
StringArray ThreadPool::getNamesOfAllJobs (bool onlyReturnActiveJobs) const
 | 
			
		||||
{
 | 
			
		||||
    StringArray s;
 | 
			
		||||
    const ScopedLock sl (lock);
 | 
			
		||||
@ -331,7 +329,7 @@ StringArray ThreadPool::getNamesOfAllJobs (const bool onlyReturnActiveJobs) cons
 | 
			
		||||
    return s;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ThreadPool::setThreadPriorities (const int newPriority)
 | 
			
		||||
bool ThreadPool::setThreadPriorities (int newPriority)
 | 
			
		||||
{
 | 
			
		||||
    bool ok = true;
 | 
			
		||||
 | 
			
		||||
@ -421,7 +419,7 @@ bool ThreadPool::runNextJob (ThreadPoolThread& thread)
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ThreadPool::addToDeleteList (OwnedArray<ThreadPoolJob>& deletionList, ThreadPoolJob* const job) const
 | 
			
		||||
void ThreadPool::addToDeleteList (OwnedArray<ThreadPoolJob>& deletionList, ThreadPoolJob* job) const
 | 
			
		||||
{
 | 
			
		||||
    job->shouldStop = true;
 | 
			
		||||
    job->pool = nullptr;
 | 
			
		||||
 | 
			
		||||
@ -134,7 +134,7 @@ private:
 | 
			
		||||
    friend class ThreadPool;
 | 
			
		||||
    String jobName;
 | 
			
		||||
    ThreadPool* pool = nullptr;
 | 
			
		||||
    bool shouldStop = false, isActive = false, shouldBeDeleted = false;
 | 
			
		||||
    std::atomic<bool> shouldStop { false }, isActive { false }, shouldBeDeleted { false };
 | 
			
		||||
    ListenerList<Thread::Listener, Array<Thread::Listener*, CriticalSection>> listeners;
 | 
			
		||||
 | 
			
		||||
    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ThreadPoolJob)
 | 
			
		||||
@ -191,7 +191,7 @@ public:
 | 
			
		||||
    class JUCE_API  JobSelector
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual ~JobSelector() {}
 | 
			
		||||
        virtual ~JobSelector() = default;
 | 
			
		||||
 | 
			
		||||
        /** Should return true if the specified thread matches your criteria for whatever
 | 
			
		||||
            operation that this object is being used for.
 | 
			
		||||
@ -322,8 +322,6 @@ private:
 | 
			
		||||
 | 
			
		||||
    struct ThreadPoolThread;
 | 
			
		||||
    friend class ThreadPoolJob;
 | 
			
		||||
    friend struct ThreadPoolThread;
 | 
			
		||||
    friend struct ContainerDeletePolicy<ThreadPoolThread>;
 | 
			
		||||
    OwnedArray<ThreadPoolThread> threads;
 | 
			
		||||
 | 
			
		||||
    CriticalSection lock;
 | 
			
		||||
 | 
			
		||||
@ -44,7 +44,7 @@ class JUCE_API  TimeSliceClient
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    /** Destructor. */
 | 
			
		||||
    virtual ~TimeSliceClient()   {}
 | 
			
		||||
    virtual ~TimeSliceClient() = default;
 | 
			
		||||
 | 
			
		||||
    /** Called back by a TimeSliceThread.
 | 
			
		||||
 | 
			
		||||
@ -98,7 +98,7 @@ public:
 | 
			
		||||
        should always call stopThread() with a decent timeout before deleting,
 | 
			
		||||
        to avoid the thread being forcibly killed (which is a Bad Thing).
 | 
			
		||||
    */
 | 
			
		||||
    ~TimeSliceThread();
 | 
			
		||||
    ~TimeSliceThread() override;
 | 
			
		||||
 | 
			
		||||
    //==============================================================================
 | 
			
		||||
    /** Adds a client to the list.
 | 
			
		||||
 | 
			
		||||
@ -27,9 +27,8 @@ namespace juce
 | 
			
		||||
/**
 | 
			
		||||
    Allows threads to wait for events triggered by other threads.
 | 
			
		||||
 | 
			
		||||
    A thread can call wait() on a WaitableObject, and this will suspend the
 | 
			
		||||
    calling thread until another thread wakes it up by calling the signal()
 | 
			
		||||
    method.
 | 
			
		||||
    A thread can call WaitableEvent::wait() to suspend the calling thread until
 | 
			
		||||
    another thread wakes it up by calling the WaitableEvent::signal() method.
 | 
			
		||||
 | 
			
		||||
    @tags{Core}
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user