From f866008bc69771824813ec64d2024a3fa670b238 Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 29 Oct 2008 22:10:57 +0000 Subject: [PATCH] --- .../wrapper/formats/VST/juce_VstWrapper.cpp | 24 ++++++++----------- juce_amalgamated.cpp | 2 +- juce_amalgamated.h | 2 +- .../events/juce_MessageManager.cpp | 2 +- .../events/juce_MessageManager.h | 2 +- 5 files changed, 14 insertions(+), 18 deletions(-) diff --git a/extras/audio plugins/wrapper/formats/VST/juce_VstWrapper.cpp b/extras/audio plugins/wrapper/formats/VST/juce_VstWrapper.cpp index dd90fa1793..6afb979d9d 100644 --- a/extras/audio plugins/wrapper/formats/VST/juce_VstWrapper.cpp +++ b/extras/audio plugins/wrapper/formats/VST/juce_VstWrapper.cpp @@ -210,15 +210,8 @@ public: ~SharedMessageThread() { signalThreadShouldExit(); - - const int quitMessageId = 0xfffff321; - Message* const m = new Message (quitMessageId, 1, 0, 0); - - if (! juce_postMessageToSystemQueue (m)) - delete m; - + JUCEApplication::quit(); waitForThreadToExit (5000); - clearSingletonInstance(); } @@ -226,11 +219,10 @@ public: { MessageManager* const messageManager = MessageManager::getInstance(); - const int originalThreadId = messageManager->getCurrentMessageThread(); - messageManager->setCurrentMessageThread (getThreadId()); + const int64 originalThreadId = messageManager->getCurrentMessageThread(); + messageManager->setCurrentMessageThread (Thread::getCurrentThreadId()); - while (! threadShouldExit() - && messageManager->dispatchNextMessage()) + while ((! threadShouldExit()) && messageManager->runDispatchLoopUntil (250)) { } @@ -238,9 +230,8 @@ public: } juce_DeclareSingleton (SharedMessageThread, false) -}; +}; -juce_ImplementSingleton (SharedMessageThread); #endif @@ -444,6 +435,10 @@ public: { if (editorComp == 0) { +#if JUCE_LINUX + const MessageManagerLock mml; +#endif + AudioProcessorEditor* const ed = filter->createEditorIfNeeded(); if (ed != 0) @@ -451,6 +446,7 @@ public: else cEffect.flags &= ~effFlagsHasEditor; + filter->editorBeingDeleted (ed); delete ed; } diff --git a/juce_amalgamated.cpp b/juce_amalgamated.cpp index 5f9bf72bc4..1154c8b9eb 100644 --- a/juce_amalgamated.cpp +++ b/juce_amalgamated.cpp @@ -35941,7 +35941,7 @@ bool MessageManager::isThisTheMessageThread() const throw() return Thread::getCurrentThreadId() == messageThreadId; } -void MessageManager::setCurrentMessageThread (const int threadId) throw() +void MessageManager::setCurrentMessageThread (const int64 threadId) throw() { messageThreadId = threadId; } diff --git a/juce_amalgamated.h b/juce_amalgamated.h index 5f5bd1b8ed..f6f614ad75 100644 --- a/juce_amalgamated.h +++ b/juce_amalgamated.h @@ -37274,7 +37274,7 @@ public: (Best to ignore this method unless you really know what you're doing..) @see getCurrentMessageThread */ - void setCurrentMessageThread (const int threadId) throw(); + void setCurrentMessageThread (const int64 threadId) throw(); /** Returns the ID of the current message thread, as set by setCurrentMessageThread(). diff --git a/src/juce_appframework/events/juce_MessageManager.cpp b/src/juce_appframework/events/juce_MessageManager.cpp index 914ef368f6..6ca13be4a2 100644 --- a/src/juce_appframework/events/juce_MessageManager.cpp +++ b/src/juce_appframework/events/juce_MessageManager.cpp @@ -177,7 +177,7 @@ bool MessageManager::isThisTheMessageThread() const throw() return Thread::getCurrentThreadId() == messageThreadId; } -void MessageManager::setCurrentMessageThread (const int threadId) throw() +void MessageManager::setCurrentMessageThread (const int64 threadId) throw() { messageThreadId = threadId; } diff --git a/src/juce_appframework/events/juce_MessageManager.h b/src/juce_appframework/events/juce_MessageManager.h index 0a9287e91f..987e3acda7 100644 --- a/src/juce_appframework/events/juce_MessageManager.h +++ b/src/juce_appframework/events/juce_MessageManager.h @@ -107,7 +107,7 @@ public: (Best to ignore this method unless you really know what you're doing..) @see getCurrentMessageThread */ - void setCurrentMessageThread (const int threadId) throw(); + void setCurrentMessageThread (const int64 threadId) throw(); /** Returns the ID of the current message thread, as set by setCurrentMessageThread().