| @@ -365,11 +365,14 @@ public: | |||||
| ScopedPointer <Project> newProj (NewProjectWizard::runNewProjectWizard (mw)); | ScopedPointer <Project> newProj (NewProjectWizard::runNewProjectWizard (mw)); | ||||
| if (newProj != 0) | if (newProj != 0) | ||||
| { | |||||
| mw->setProject (newProj.release()); | mw->setProject (newProj.release()); | ||||
| mw->setVisible (true); | |||||
| } | |||||
| else | else | ||||
| { | |||||
| closeWindow (mw); | closeWindow (mw); | ||||
| mw->setVisible (true); | |||||
| } | |||||
| } | } | ||||
| void askUserToOpenFile() | void askUserToOpenFile() | ||||
| @@ -0,0 +1,104 @@ | |||||
| # Automatically generated makefile, created by the Jucer | |||||
| # Don't edit this file! Your changes will be overwritten when you re-save the Jucer project! | |||||
| ifndef CONFIG | |||||
| CONFIG=Debug | |||||
| endif | |||||
| ifeq ($(TARGET_ARCH),) | |||||
| TARGET_ARCH := -march=native | |||||
| endif | |||||
| # (this disables dependency generation if multiple architectures are set) | |||||
| DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD) | |||||
| ifeq ($(CONFIG),Debug) | |||||
| BINDIR := build | |||||
| LIBDIR := build | |||||
| OBJDIR := build/intermediate/Debug | |||||
| OUTDIR := build | |||||
| CPPFLAGS := $(DEPFLAGS) -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -I "../../JuceLibraryCode" -I "~/SDKs/vstsdk2.4" -I "/usr/include" -I "/usr/include/freetype2" | |||||
| CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -fPIC -O0 | |||||
| CXXFLAGS += $(CFLAGS) | |||||
| LDFLAGS += -L$(BINDIR) -L$(LIBDIR) -shared -L"/usr/X11R6/lib/" -L"../../../../../../juce/bin" -lfreetype -lpthread -lrt -lX11 -lGL -lGLU -lXinerama -lasound | |||||
| LDDEPS := | |||||
| RESFLAGS := -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -I "../../JuceLibraryCode" -I "~/SDKs/vstsdk2.4" -I "/usr/include" -I "/usr/include/freetype2" | |||||
| TARGET := JuceDemoPlugin.so | |||||
| BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH) | |||||
| endif | |||||
| ifeq ($(CONFIG),Release) | |||||
| BINDIR := build | |||||
| LIBDIR := build | |||||
| OBJDIR := build/intermediate/Release | |||||
| OUTDIR := build | |||||
| CPPFLAGS := $(DEPFLAGS) -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "LINUX=1" -D "NDEBUG=1" -I "../../JuceLibraryCode" -I "~/SDKs/vstsdk2.4" -I "/usr/include" -I "/usr/include/freetype2" | |||||
| CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -fPIC -Os | |||||
| CXXFLAGS += $(CFLAGS) | |||||
| LDFLAGS += -L$(BINDIR) -L$(LIBDIR) -shared -L"/usr/X11R6/lib/" -L"../../../../../../juce/bin" -lfreetype -lpthread -lrt -lX11 -lGL -lGLU -lXinerama -lasound | |||||
| LDDEPS := | |||||
| RESFLAGS := -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "LINUX=1" -D "NDEBUG=1" -I "../../JuceLibraryCode" -I "~/SDKs/vstsdk2.4" -I "/usr/include" -I "/usr/include/freetype2" | |||||
| TARGET := JuceDemoPlugin.so | |||||
| BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH) | |||||
| endif | |||||
| OBJECTS := \ | |||||
| $(OBJDIR)/PluginProcessor_a059e380.o \ | |||||
| $(OBJDIR)/PluginEditor_94d4fb09.o \ | |||||
| $(OBJDIR)/JuceLibraryCode1_682c927f.o \ | |||||
| $(OBJDIR)/JuceLibraryCode2_683aaa00.o \ | |||||
| $(OBJDIR)/JuceLibraryCode3_6848c181.o \ | |||||
| $(OBJDIR)/JuceLibraryCode4_6856d902.o \ | |||||
| $(OBJDIR)/juce_VST_Wrapper_eb4c8b25.o \ | |||||
| .PHONY: clean | |||||
| $(OUTDIR)/$(TARGET): $(OBJECTS) $(LDDEPS) $(RESOURCES) | |||||
| @echo Linking JuceDemoPlugin | |||||
| -@mkdir -p $(BINDIR) | |||||
| -@mkdir -p $(LIBDIR) | |||||
| -@mkdir -p $(OUTDIR) | |||||
| @$(BLDCMD) | |||||
| clean: | |||||
| @echo Cleaning JuceDemoPlugin | |||||
| -@rm -f $(OUTDIR)/$(TARGET) | |||||
| -@rm -rf $(OBJDIR)/* | |||||
| -@rm -rf $(OBJDIR) | |||||
| $(OBJDIR)/PluginProcessor_a059e380.o: ../../Source/PluginProcessor.cpp | |||||
| -@mkdir -p $(OBJDIR) | |||||
| @echo "Compiling PluginProcessor.cpp" | |||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
| $(OBJDIR)/PluginEditor_94d4fb09.o: ../../Source/PluginEditor.cpp | |||||
| -@mkdir -p $(OBJDIR) | |||||
| @echo "Compiling PluginEditor.cpp" | |||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
| $(OBJDIR)/JuceLibraryCode1_682c927f.o: ../../JuceLibraryCode/JuceLibraryCode1.cpp | |||||
| -@mkdir -p $(OBJDIR) | |||||
| @echo "Compiling JuceLibraryCode1.cpp" | |||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
| $(OBJDIR)/JuceLibraryCode2_683aaa00.o: ../../JuceLibraryCode/JuceLibraryCode2.cpp | |||||
| -@mkdir -p $(OBJDIR) | |||||
| @echo "Compiling JuceLibraryCode2.cpp" | |||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
| $(OBJDIR)/JuceLibraryCode3_6848c181.o: ../../JuceLibraryCode/JuceLibraryCode3.cpp | |||||
| -@mkdir -p $(OBJDIR) | |||||
| @echo "Compiling JuceLibraryCode3.cpp" | |||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
| $(OBJDIR)/JuceLibraryCode4_6856d902.o: ../../JuceLibraryCode/JuceLibraryCode4.cpp | |||||
| -@mkdir -p $(OBJDIR) | |||||
| @echo "Compiling JuceLibraryCode4.cpp" | |||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
| $(OBJDIR)/juce_VST_Wrapper_eb4c8b25.o: ../../../../../../juce/extras/audio\ plugins/wrapper/VST/juce_VST_Wrapper.cpp | |||||
| -@mkdir -p $(OBJDIR) | |||||
| @echo "Compiling juce_VST_Wrapper.cpp" | |||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
| -include $(OBJECTS:%.o=%.d) | |||||
| @@ -16,6 +16,7 @@ | |||||
| rtasFolder="c:\SDKs\PT_80_SDK" juceFolder="../../.." libraryType="1"/> | rtasFolder="c:\SDKs\PT_80_SDK" juceFolder="../../.." libraryType="1"/> | ||||
| <VS2008 targetFolder="Builds/VisualStudio2008" vstFolder="c:\SDKs\vstsdk2.4" | <VS2008 targetFolder="Builds/VisualStudio2008" vstFolder="c:\SDKs\vstsdk2.4" | ||||
| rtasFolder="c:\SDKs\PT_80_SDK" juceFolder="../../.." libraryType="1"/> | rtasFolder="c:\SDKs\PT_80_SDK" juceFolder="../../.." libraryType="1"/> | ||||
| <LINUX_MAKE targetFolder="Builds/Linux" vstFolder="~/SDKs/vstsdk2.4" juceFolder="../../.."/> | |||||
| </EXPORTFORMATS> | </EXPORTFORMATS> | ||||
| <CONFIGURATIONS> | <CONFIGURATIONS> | ||||
| <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="JuceDemoPlugin" | <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="JuceDemoPlugin" | ||||
| @@ -244,7 +244,7 @@ public: | |||||
| if (PlatformUtilities::getOSXMinorVersionNumber() > 4) | if (PlatformUtilities::getOSXMinorVersionNumber() > 4) | ||||
| #endif | #endif | ||||
| { | { | ||||
| const ScopedAutoReleasePool pool; | |||||
| JUCE_AUTORELEASEPOOL | |||||
| AudioUnitCocoaViewInfo* info = (AudioUnitCocoaViewInfo*) outData; | AudioUnitCocoaViewInfo* info = (AudioUnitCocoaViewInfo*) outData; | ||||
| @@ -1155,7 +1155,7 @@ public: | |||||
| ComponentResult CreateUI (Float32 /*inXOffset*/, Float32 /*inYOffset*/) | ComponentResult CreateUI (Float32 /*inXOffset*/, Float32 /*inYOffset*/) | ||||
| { | { | ||||
| const ScopedAutoReleasePool pool; | |||||
| JUCE_AUTORELEASEPOOL | |||||
| if (juceFilter == 0) | if (juceFilter == 0) | ||||
| { | { | ||||
| @@ -1220,7 +1220,7 @@ private: | |||||
| : parentView (parentHIView), | : parentView (parentHIView), | ||||
| recursive (false) | recursive (false) | ||||
| { | { | ||||
| const ScopedAutoReleasePool pool; | |||||
| JUCE_AUTORELEASEPOOL | |||||
| jassert (contentComp != 0); | jassert (contentComp != 0); | ||||
| addAndMakeVisible (contentComp); | addAndMakeVisible (contentComp); | ||||
| @@ -1278,7 +1278,7 @@ private: | |||||
| if (comp != 0) | if (comp != 0) | ||||
| comp->removeComponentListener (this); | comp->removeComponentListener (this); | ||||
| const ScopedAutoReleasePool pool; | |||||
| JUCE_AUTORELEASEPOOL | |||||
| NSWindow* pluginWindow = [((NSView*) getWindowHandle()) window]; | NSWindow* pluginWindow = [((NSView*) getWindowHandle()) window]; | ||||
| [hostWindow removeChildWindow: pluginWindow]; | [hostWindow removeChildWindow: pluginWindow]; | ||||
| @@ -50,7 +50,7 @@ void initialiseMacRTAS() | |||||
| void* attachSubWindow (void* hostWindowRef, Component* comp) | void* attachSubWindow (void* hostWindowRef, Component* comp) | ||||
| { | { | ||||
| const ScopedAutoReleasePool pool; | |||||
| JUCE_AUTORELEASEPOOL | |||||
| NSWindow* hostWindow = [[NSWindow alloc] initWithWindowRef: hostWindowRef]; | NSWindow* hostWindow = [[NSWindow alloc] initWithWindowRef: hostWindowRef]; | ||||
| [hostWindow retain]; | [hostWindow retain]; | ||||
| @@ -103,7 +103,7 @@ void* attachSubWindow (void* hostWindowRef, Component* comp) | |||||
| void removeSubWindow (void* nsWindow, Component* comp) | void removeSubWindow (void* nsWindow, Component* comp) | ||||
| { | { | ||||
| const ScopedAutoReleasePool pool; | |||||
| JUCE_AUTORELEASEPOOL | |||||
| NSView* pluginView = (NSView*) comp->getWindowHandle(); | NSView* pluginView = (NSView*) comp->getWindowHandle(); | ||||
| NSWindow* hostWindow = (NSWindow*) nsWindow; | NSWindow* hostWindow = (NSWindow*) nsWindow; | ||||
| @@ -170,6 +170,8 @@ public: | |||||
| ~JucePlugInProcess() | ~JucePlugInProcess() | ||||
| { | { | ||||
| JUCE_AUTORELEASEPOOL | |||||
| if (mLoggedIn) | if (mLoggedIn) | ||||
| MIDILogOut(); | MIDILogOut(); | ||||
| @@ -255,6 +257,7 @@ public: | |||||
| { | { | ||||
| if (port != 0) | if (port != 0) | ||||
| { | { | ||||
| JUCE_AUTORELEASEPOOL | |||||
| updateSize(); | updateSize(); | ||||
| #if JUCE_WINDOWS | #if JUCE_WINDOWS | ||||
| @@ -302,9 +305,7 @@ public: | |||||
| { | { | ||||
| if (editorComp != 0 || wrapper != 0) | if (editorComp != 0 || wrapper != 0) | ||||
| { | { | ||||
| #if JUCE_MAC | |||||
| const ScopedAutoReleasePool pool; | |||||
| #endif | |||||
| JUCE_AUTORELEASEPOOL | |||||
| PopupMenu::dismissAllActiveMenus(); | PopupMenu::dismissAllActiveMenus(); | ||||
| JUCE_NAMESPACE::Component* const modalComponent = JUCE_NAMESPACE::Component::getCurrentlyModalComponent(); | JUCE_NAMESPACE::Component* const modalComponent = JUCE_NAMESPACE::Component::getCurrentlyModalComponent(); | ||||
| @@ -153,7 +153,7 @@ BEGIN_JUCE_NAMESPACE | |||||
| extern void initialiseMac(); | extern void initialiseMac(); | ||||
| extern void* attachComponentToWindowRef (Component* component, void* windowRef); | extern void* attachComponentToWindowRef (Component* component, void* windowRef); | ||||
| extern void detachComponentFromWindowRef (Component* component, void* nsWindow); | extern void detachComponentFromWindowRef (Component* component, void* nsWindow); | ||||
| extern void setNativeHostWindowSize (void* nsWindow, Component* editorComp, int newWidth, int newHeight); | |||||
| extern void setNativeHostWindowSize (void* nsWindow, Component* editorComp, int newWidth, int newHeight, const PluginHostType& host); | |||||
| extern void checkWindowVisibility (void* nsWindow, Component* component); | extern void checkWindowVisibility (void* nsWindow, Component* component); | ||||
| extern void forwardCurrentKeyEventToHost (Component* component); | extern void forwardCurrentKeyEventToHost (Component* component); | ||||
| #endif | #endif | ||||
| @@ -323,6 +323,8 @@ public: | |||||
| ~JuceVSTWrapper() | ~JuceVSTWrapper() | ||||
| { | { | ||||
| JUCE_AUTORELEASEPOOL | |||||
| stopTimer(); | stopTimer(); | ||||
| deleteEditor (false); | deleteEditor (false); | ||||
| @@ -350,6 +352,7 @@ public: | |||||
| void open() | void open() | ||||
| { | { | ||||
| JUCE_AUTORELEASEPOOL | |||||
| if (editorComp == 0) | if (editorComp == 0) | ||||
| { | { | ||||
| checkWhetherWavelabHasChangedThread(); | checkWhetherWavelabHasChangedThread(); | ||||
| @@ -371,6 +374,7 @@ public: | |||||
| void close() | void close() | ||||
| { | { | ||||
| JUCE_AUTORELEASEPOOL | |||||
| const NonWavelabMMLock mmLock; | const NonWavelabMMLock mmLock; | ||||
| jassert (! recursionCheck); | jassert (! recursionCheck); | ||||
| @@ -1224,7 +1228,7 @@ public: | |||||
| { | { | ||||
| // some hosts don't support the sizeWindow call, so do it manually.. | // some hosts don't support the sizeWindow call, so do it manually.. | ||||
| #if JUCE_MAC | #if JUCE_MAC | ||||
| setNativeHostWindowSize (hostWindow, editorComp, newWidth, newHeight); | |||||
| setNativeHostWindowSize (hostWindow, editorComp, newWidth, newHeight, getHostType()); | |||||
| #elif JUCE_LINUX | #elif JUCE_LINUX | ||||
| Window root; | Window root; | ||||
| int x, y; | int x, y; | ||||
| @@ -1442,7 +1446,31 @@ private: | |||||
| static void checkWhetherWavelabHasChangedThread() | static void checkWhetherWavelabHasChangedThread() | ||||
| { | { | ||||
| MessageManager::getInstance()->setCurrentThreadAsMessageThread(); | |||||
| if (getHostType().isWavelab() || getHostType().isCubaseBridged()) | |||||
| { | |||||
| static bool messageThreadIsDefinitelyCorrect = false; | |||||
| if (! messageThreadIsDefinitelyCorrect) | |||||
| { | |||||
| MessageManager::getInstance()->setCurrentThreadAsMessageThread(); | |||||
| class MessageThreadCallback : public CallbackMessage | |||||
| { | |||||
| public: | |||||
| MessageThreadCallback (bool& triggered_) : triggered (triggered_) {} | |||||
| void messageCallback() | |||||
| { | |||||
| triggered = true; | |||||
| } | |||||
| private: | |||||
| bool& triggered; | |||||
| }; | |||||
| (new MessageThreadCallback (messageThreadIsDefinitelyCorrect))->post(); | |||||
| } | |||||
| } | |||||
| } | } | ||||
| #else | #else | ||||
| typedef MessageManagerLock NonWavelabMMLock; | typedef MessageManagerLock NonWavelabMMLock; | ||||
| @@ -1490,6 +1518,7 @@ extern AudioProcessor* JUCE_CALLTYPE createPluginFilter(); | |||||
| //============================================================================== | //============================================================================== | ||||
| static AEffect* pluginEntryPoint (audioMasterCallback audioMaster) | static AEffect* pluginEntryPoint (audioMasterCallback audioMaster) | ||||
| { | { | ||||
| JUCE_AUTORELEASEPOOL | |||||
| initialiseJuce_GUI(); | initialiseJuce_GUI(); | ||||
| try | try | ||||
| @@ -32,6 +32,7 @@ | |||||
| #include <Carbon/Carbon.h> | #include <Carbon/Carbon.h> | ||||
| #include "../juce_PluginHeaders.h" | #include "../juce_PluginHeaders.h" | ||||
| #include "../juce_PluginHostType.h" | |||||
| #define ADD_CARBON_BODGE 1 // see note below.. | #define ADD_CARBON_BODGE 1 // see note below.. | ||||
| @@ -97,7 +98,7 @@ void initialiseMac() | |||||
| void* attachComponentToWindowRef (Component* comp, void* windowRef) | void* attachComponentToWindowRef (Component* comp, void* windowRef) | ||||
| { | { | ||||
| const ScopedAutoReleasePool pool; | |||||
| JUCE_AUTORELEASEPOOL | |||||
| NSWindow* hostWindow = [[NSWindow alloc] initWithWindowRef: windowRef]; | NSWindow* hostWindow = [[NSWindow alloc] initWithWindowRef: windowRef]; | ||||
| [hostWindow retain]; | [hostWindow retain]; | ||||
| @@ -184,7 +185,7 @@ void* attachComponentToWindowRef (Component* comp, void* windowRef) | |||||
| void detachComponentFromWindowRef (Component* comp, void* nsWindow) | void detachComponentFromWindowRef (Component* comp, void* nsWindow) | ||||
| { | { | ||||
| { | { | ||||
| const ScopedAutoReleasePool pool; | |||||
| JUCE_AUTORELEASEPOOL | |||||
| EventHandlerRef ref = (EventHandlerRef) (void*) (pointer_sized_int) | EventHandlerRef ref = (EventHandlerRef) (void*) (pointer_sized_int) | ||||
| comp->getProperties() ["boundsEventRef"].toString().getHexValue64(); | comp->getProperties() ["boundsEventRef"].toString().getHexValue64(); | ||||
| @@ -221,12 +222,12 @@ void detachComponentFromWindowRef (Component* comp, void* nsWindow) | |||||
| MessageManager::getInstance()->runDispatchLoopUntil (1); | MessageManager::getInstance()->runDispatchLoopUntil (1); | ||||
| } | } | ||||
| void setNativeHostWindowSize (void* nsWindow, Component* component, int newWidth, int newHeight) | |||||
| void setNativeHostWindowSize (void* nsWindow, Component* component, int newWidth, int newHeight, const PluginHostType& host) | |||||
| { | { | ||||
| NSWindow* hostWindow = (NSWindow*) nsWindow; | NSWindow* hostWindow = (NSWindow*) nsWindow; | ||||
| if (hostWindow != 0) | if (hostWindow != 0) | ||||
| { | { | ||||
| ScopedAutoReleasePool pool; | |||||
| JUCE_AUTORELEASEPOOL | |||||
| // Can't use the cocoa NSWindow resizing code, or it messes up in Live. | // Can't use the cocoa NSWindow resizing code, or it messes up in Live. | ||||
| Rect r; | Rect r; | ||||
| @@ -237,7 +238,6 @@ void setNativeHostWindowSize (void* nsWindow, Component* component, int newWidth | |||||
| r.left = r.top = 0; | r.left = r.top = 0; | ||||
| InvalWindowRect ((WindowRef) [hostWindow windowRef], &r); | InvalWindowRect ((WindowRef) [hostWindow windowRef], &r); | ||||
| //[[hostWindow contentView] setNeedsDisplay: YES]; | |||||
| } | } | ||||
| } | } | ||||
| @@ -55,6 +55,7 @@ public: | |||||
| SteinbergCubaseGeneric, | SteinbergCubaseGeneric, | ||||
| SteinbergWavelab5, | SteinbergWavelab5, | ||||
| SteinbergWavelab6, | SteinbergWavelab6, | ||||
| SteinbergWavelab7, | |||||
| SteinbergWavelabGeneric, | SteinbergWavelabGeneric, | ||||
| MuseReceptorGeneric | MuseReceptorGeneric | ||||
| }; | }; | ||||
| @@ -94,7 +95,7 @@ public: | |||||
| bool isWavelab() const throw() | bool isWavelab() const throw() | ||||
| { | { | ||||
| return type == SteinbergWavelabGeneric || type == SteinbergWavelab5 || type == SteinbergWavelab6; | |||||
| return type == SteinbergWavelabGeneric || type == SteinbergWavelab5 || type == SteinbergWavelab6 || type == SteinbergWavelab7; | |||||
| } | } | ||||
| bool isReceptor() const throw() | bool isReceptor() const throw() | ||||
| @@ -117,6 +118,8 @@ private: | |||||
| if (hostFilename.containsIgnoreCase ("Pro Tools")) return DigidesignProTools; | if (hostFilename.containsIgnoreCase ("Pro Tools")) return DigidesignProTools; | ||||
| if (hostFilename.containsIgnoreCase ("Cubase 4")) return SteinbergCubase4; | if (hostFilename.containsIgnoreCase ("Cubase 4")) return SteinbergCubase4; | ||||
| if (hostFilename.containsIgnoreCase ("Cubase 5")) return SteinbergCubase5; | if (hostFilename.containsIgnoreCase ("Cubase 5")) return SteinbergCubase5; | ||||
| if (hostFilename.containsIgnoreCase ("Wavelab 7" )) return SteinbergWavelab7; | |||||
| if (hostFilename.containsIgnoreCase ("Wavelab")) return SteinbergWavelabGeneric; | |||||
| if (hostFilename.contains ("Logic")) return AppleLogic; | if (hostFilename.contains ("Logic")) return AppleLogic; | ||||
| #elif JUCE_WINDOWS | #elif JUCE_WINDOWS | ||||
| @@ -135,6 +138,7 @@ private: | |||||
| if (hostFilename.containsIgnoreCase ("Cubase")) return SteinbergCubaseGeneric; | if (hostFilename.containsIgnoreCase ("Cubase")) return SteinbergCubaseGeneric; | ||||
| if (hostFilename.containsIgnoreCase ("Wavelab 5")) return SteinbergWavelab5; | if (hostFilename.containsIgnoreCase ("Wavelab 5")) return SteinbergWavelab5; | ||||
| if (hostFilename.containsIgnoreCase ("Wavelab 6" )) return SteinbergWavelab6; | if (hostFilename.containsIgnoreCase ("Wavelab 6" )) return SteinbergWavelab6; | ||||
| if (hostFilename.containsIgnoreCase ("Wavelab 7" )) return SteinbergWavelab7; | |||||
| if (hostFilename.containsIgnoreCase ("Wavelab")) return SteinbergWavelabGeneric; | if (hostFilename.containsIgnoreCase ("Wavelab")) return SteinbergWavelabGeneric; | ||||
| if (hostFilename.containsIgnoreCase ("reaper")) return Reaper; | if (hostFilename.containsIgnoreCase ("reaper")) return Reaper; | ||||
| if (hostFilename.containsIgnoreCase ("Logic")) return EmagicLogic; | if (hostFilename.containsIgnoreCase ("Logic")) return EmagicLogic; | ||||
| @@ -238017,7 +238017,7 @@ int SystemStats::getMemorySizeInMegabytes() | |||||
| uint32 juce_millisecondsSinceStartup() throw() | uint32 juce_millisecondsSinceStartup() throw() | ||||
| { | { | ||||
| return (uint32) GetTickCount(); | |||||
| return (uint32) timeGetTime(); | |||||
| } | } | ||||
| int64 Time::getHighResolutionTicks() throw() | int64 Time::getHighResolutionTicks() throw() | ||||
| @@ -259188,9 +259188,12 @@ public: | |||||
| { | { | ||||
| const XKeyEvent* const keyEvent = (const XKeyEvent*) &event->xkey; | const XKeyEvent* const keyEvent = (const XKeyEvent*) &event->xkey; | ||||
| updateKeyStates (keyEvent->keycode, false); | updateKeyStates (keyEvent->keycode, false); | ||||
| KeySym sym; | |||||
| ScopedXLock xlock; | |||||
| KeySym sym = XKeycodeToKeysym (display, keyEvent->keycode, 0); | |||||
| { | |||||
| ScopedXLock xlock; | |||||
| sym = XKeycodeToKeysym (display, keyEvent->keycode, 0); | |||||
| } | |||||
| const ModifierKeys oldMods (currentModifiers); | const ModifierKeys oldMods (currentModifiers); | ||||
| const bool keyDownChange = (sym != NoSymbol) && ! updateKeyModifiersFromSym (sym, false); | const bool keyDownChange = (sym != NoSymbol) && ! updateKeyModifiersFromSym (sym, false); | ||||
| @@ -265385,77 +265388,54 @@ const File File::getSpecialLocation (const SpecialLocationType type) | |||||
| switch (type) | switch (type) | ||||
| { | { | ||||
| case userHomeDirectory: | |||||
| resultPath = nsStringToJuce (NSHomeDirectory()); | |||||
| break; | |||||
| case userDocumentsDirectory: | |||||
| resultPath = "~/Documents"; | |||||
| break; | |||||
| case userDesktopDirectory: | |||||
| resultPath = "~/Desktop"; | |||||
| break; | |||||
| case userApplicationDataDirectory: | |||||
| resultPath = "~/Library"; | |||||
| break; | |||||
| case commonApplicationDataDirectory: | |||||
| resultPath = "/Library"; | |||||
| break; | |||||
| case userHomeDirectory: resultPath = nsStringToJuce (NSHomeDirectory()); break; | |||||
| case userDocumentsDirectory: resultPath = "~/Documents"; break; | |||||
| case userDesktopDirectory: resultPath = "~/Desktop"; break; | |||||
| case userApplicationDataDirectory: resultPath = "~/Library"; break; | |||||
| case commonApplicationDataDirectory: resultPath = "/Library"; break; | |||||
| case globalApplicationsDirectory: resultPath = "/Applications"; break; | |||||
| case userMusicDirectory: resultPath = "~/Music"; break; | |||||
| case userMoviesDirectory: resultPath = "~/Movies"; break; | |||||
| case globalApplicationsDirectory: | |||||
| resultPath = "/Applications"; | |||||
| break; | |||||
| case userMusicDirectory: | |||||
| resultPath = "~/Music"; | |||||
| break; | |||||
| case userMoviesDirectory: | |||||
| resultPath = "~/Movies"; | |||||
| break; | |||||
| case tempDirectory: | |||||
| { | |||||
| File tmp ("~/Library/Caches/" + juce_getExecutableFile().getFileNameWithoutExtension()); | |||||
| case tempDirectory: | |||||
| { | |||||
| File tmp ("~/Library/Caches/" + juce_getExecutableFile().getFileNameWithoutExtension()); | |||||
| tmp.createDirectory(); | |||||
| return tmp.getFullPathName(); | |||||
| } | |||||
| tmp.createDirectory(); | |||||
| return tmp.getFullPathName(); | |||||
| } | |||||
| case invokedExecutableFile: | |||||
| if (juce_Argv0 != 0) | |||||
| return File (String::fromUTF8 (juce_Argv0)); | |||||
| // deliberate fall-through... | |||||
| case invokedExecutableFile: | |||||
| if (juce_Argv0 != 0) | |||||
| return File (String::fromUTF8 (juce_Argv0)); | |||||
| // deliberate fall-through... | |||||
| case currentExecutableFile: | |||||
| return juce_getExecutableFile(); | |||||
| case currentExecutableFile: | |||||
| return juce_getExecutableFile(); | |||||
| case currentApplicationFile: | |||||
| { | |||||
| const File exe (juce_getExecutableFile()); | |||||
| const File parent (exe.getParentDirectory()); | |||||
| case currentApplicationFile: | |||||
| { | |||||
| const File exe (juce_getExecutableFile()); | |||||
| const File parent (exe.getParentDirectory()); | |||||
| return parent.getFullPathName().endsWithIgnoreCase ("Contents/MacOS") | |||||
| ? parent.getParentDirectory().getParentDirectory() | |||||
| : exe; | |||||
| } | |||||
| return parent.getFullPathName().endsWithIgnoreCase ("Contents/MacOS") | |||||
| ? parent.getParentDirectory().getParentDirectory() | |||||
| : exe; | |||||
| } | |||||
| case hostApplicationPath: | |||||
| { | |||||
| unsigned int size = 8192; | |||||
| HeapBlock<char> buffer; | |||||
| buffer.calloc (size + 8); | |||||
| case hostApplicationPath: | |||||
| { | |||||
| unsigned int size = 8192; | |||||
| HeapBlock<char> buffer; | |||||
| buffer.calloc (size + 8); | |||||
| _NSGetExecutablePath (buffer.getData(), &size); | |||||
| return String::fromUTF8 (buffer, size); | |||||
| } | |||||
| _NSGetExecutablePath (buffer.getData(), &size); | |||||
| return String::fromUTF8 (buffer, size); | |||||
| } | |||||
| default: | |||||
| jassertfalse; // unknown type? | |||||
| break; | |||||
| default: | |||||
| jassertfalse; // unknown type? | |||||
| break; | |||||
| } | } | ||||
| if (resultPath.isNotEmpty()) | if (resultPath.isNotEmpty()) | ||||
| @@ -265489,7 +265469,7 @@ const String File::getVersion() const | |||||
| const File File::getLinkedTarget() const | const File File::getLinkedTarget() const | ||||
| { | { | ||||
| #if JUCE_IOS || (defined (MAC_OS_X_VERSION_10_5) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) | |||||
| #if JUCE_IOS || (defined (MAC_OS_X_VERSION_10_5) && MAC_OS_X_VERSION_MIN_ALLOWED >= MAC_OS_X_VERSION_10_5) | |||||
| NSString* dest = [[NSFileManager defaultManager] destinationOfSymbolicLinkAtPath: juceStringToNS (getFullPathName()) error: nil]; | NSString* dest = [[NSFileManager defaultManager] destinationOfSymbolicLinkAtPath: juceStringToNS (getFullPathName()) error: nil]; | ||||
| #else | #else | ||||
| @@ -265701,7 +265681,7 @@ OSType PlatformUtilities::getTypeOfFile (const String& filename) | |||||
| { | { | ||||
| const ScopedAutoReleasePool pool; | const ScopedAutoReleasePool pool; | ||||
| #if JUCE_IOS || (defined (MAC_OS_X_VERSION_10_5) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) | |||||
| #if JUCE_IOS || (defined (MAC_OS_X_VERSION_10_5) && MAC_OS_X_VERSION_MIN_ALLOWED >= MAC_OS_X_VERSION_10_5) | |||||
| NSDictionary* fileDict = [[NSFileManager defaultManager] attributesOfItemAtPath: juceStringToNS (filename) error: nil]; | NSDictionary* fileDict = [[NSFileManager defaultManager] attributesOfItemAtPath: juceStringToNS (filename) error: nil]; | ||||
| #else | #else | ||||
| NSDictionary* fileDict = [[NSFileManager defaultManager] fileAttributesAtPath: juceStringToNS (filename) traverseLink: NO]; | NSDictionary* fileDict = [[NSFileManager defaultManager] fileAttributesAtPath: juceStringToNS (filename) traverseLink: NO]; | ||||
| @@ -64,7 +64,7 @@ | |||||
| */ | */ | ||||
| #define JUCE_MAJOR_VERSION 1 | #define JUCE_MAJOR_VERSION 1 | ||||
| #define JUCE_MINOR_VERSION 52 | #define JUCE_MINOR_VERSION 52 | ||||
| #define JUCE_BUILDNUMBER 63 | |||||
| #define JUCE_BUILDNUMBER 64 | |||||
| /** Current Juce version number. | /** Current Juce version number. | ||||
| @@ -33,7 +33,7 @@ | |||||
| */ | */ | ||||
| #define JUCE_MAJOR_VERSION 1 | #define JUCE_MAJOR_VERSION 1 | ||||
| #define JUCE_MINOR_VERSION 52 | #define JUCE_MINOR_VERSION 52 | ||||
| #define JUCE_BUILDNUMBER 63 | |||||
| #define JUCE_BUILDNUMBER 64 | |||||
| /** Current Juce version number. | /** Current Juce version number. | ||||
| @@ -1328,9 +1328,12 @@ public: | |||||
| { | { | ||||
| const XKeyEvent* const keyEvent = (const XKeyEvent*) &event->xkey; | const XKeyEvent* const keyEvent = (const XKeyEvent*) &event->xkey; | ||||
| updateKeyStates (keyEvent->keycode, false); | updateKeyStates (keyEvent->keycode, false); | ||||
| KeySym sym; | |||||
| ScopedXLock xlock; | |||||
| KeySym sym = XKeycodeToKeysym (display, keyEvent->keycode, 0); | |||||
| { | |||||
| ScopedXLock xlock; | |||||
| sym = XKeycodeToKeysym (display, keyEvent->keycode, 0); | |||||
| } | |||||
| const ModifierKeys oldMods (currentModifiers); | const ModifierKeys oldMods (currentModifiers); | ||||
| const bool keyDownChange = (sym != NoSymbol) && ! updateKeyModifiersFromSym (sym, false); | const bool keyDownChange = (sym != NoSymbol) && ! updateKeyModifiersFromSym (sym, false); | ||||
| @@ -147,77 +147,54 @@ const File File::getSpecialLocation (const SpecialLocationType type) | |||||
| switch (type) | switch (type) | ||||
| { | { | ||||
| case userHomeDirectory: | |||||
| resultPath = nsStringToJuce (NSHomeDirectory()); | |||||
| break; | |||||
| case userDocumentsDirectory: | |||||
| resultPath = "~/Documents"; | |||||
| break; | |||||
| case userDesktopDirectory: | |||||
| resultPath = "~/Desktop"; | |||||
| break; | |||||
| case userApplicationDataDirectory: | |||||
| resultPath = "~/Library"; | |||||
| break; | |||||
| case commonApplicationDataDirectory: | |||||
| resultPath = "/Library"; | |||||
| break; | |||||
| case globalApplicationsDirectory: | |||||
| resultPath = "/Applications"; | |||||
| break; | |||||
| case userMusicDirectory: | |||||
| resultPath = "~/Music"; | |||||
| break; | |||||
| case userMoviesDirectory: | |||||
| resultPath = "~/Movies"; | |||||
| break; | |||||
| case tempDirectory: | |||||
| { | |||||
| File tmp ("~/Library/Caches/" + juce_getExecutableFile().getFileNameWithoutExtension()); | |||||
| case userHomeDirectory: resultPath = nsStringToJuce (NSHomeDirectory()); break; | |||||
| case userDocumentsDirectory: resultPath = "~/Documents"; break; | |||||
| case userDesktopDirectory: resultPath = "~/Desktop"; break; | |||||
| case userApplicationDataDirectory: resultPath = "~/Library"; break; | |||||
| case commonApplicationDataDirectory: resultPath = "/Library"; break; | |||||
| case globalApplicationsDirectory: resultPath = "/Applications"; break; | |||||
| case userMusicDirectory: resultPath = "~/Music"; break; | |||||
| case userMoviesDirectory: resultPath = "~/Movies"; break; | |||||
| case tempDirectory: | |||||
| { | |||||
| File tmp ("~/Library/Caches/" + juce_getExecutableFile().getFileNameWithoutExtension()); | |||||
| tmp.createDirectory(); | |||||
| return tmp.getFullPathName(); | |||||
| } | |||||
| tmp.createDirectory(); | |||||
| return tmp.getFullPathName(); | |||||
| } | |||||
| case invokedExecutableFile: | |||||
| if (juce_Argv0 != 0) | |||||
| return File (String::fromUTF8 (juce_Argv0)); | |||||
| // deliberate fall-through... | |||||
| case invokedExecutableFile: | |||||
| if (juce_Argv0 != 0) | |||||
| return File (String::fromUTF8 (juce_Argv0)); | |||||
| // deliberate fall-through... | |||||
| case currentExecutableFile: | |||||
| return juce_getExecutableFile(); | |||||
| case currentExecutableFile: | |||||
| return juce_getExecutableFile(); | |||||
| case currentApplicationFile: | |||||
| { | |||||
| const File exe (juce_getExecutableFile()); | |||||
| const File parent (exe.getParentDirectory()); | |||||
| case currentApplicationFile: | |||||
| { | |||||
| const File exe (juce_getExecutableFile()); | |||||
| const File parent (exe.getParentDirectory()); | |||||
| return parent.getFullPathName().endsWithIgnoreCase ("Contents/MacOS") | |||||
| ? parent.getParentDirectory().getParentDirectory() | |||||
| : exe; | |||||
| } | |||||
| return parent.getFullPathName().endsWithIgnoreCase ("Contents/MacOS") | |||||
| ? parent.getParentDirectory().getParentDirectory() | |||||
| : exe; | |||||
| } | |||||
| case hostApplicationPath: | |||||
| { | |||||
| unsigned int size = 8192; | |||||
| HeapBlock<char> buffer; | |||||
| buffer.calloc (size + 8); | |||||
| case hostApplicationPath: | |||||
| { | |||||
| unsigned int size = 8192; | |||||
| HeapBlock<char> buffer; | |||||
| buffer.calloc (size + 8); | |||||
| _NSGetExecutablePath (buffer.getData(), &size); | |||||
| return String::fromUTF8 (buffer, size); | |||||
| } | |||||
| _NSGetExecutablePath (buffer.getData(), &size); | |||||
| return String::fromUTF8 (buffer, size); | |||||
| } | |||||
| default: | |||||
| jassertfalse; // unknown type? | |||||
| break; | |||||
| default: | |||||
| jassertfalse; // unknown type? | |||||
| break; | |||||
| } | } | ||||
| if (resultPath.isNotEmpty()) | if (resultPath.isNotEmpty()) | ||||
| @@ -253,7 +230,7 @@ const String File::getVersion() const | |||||
| //============================================================================== | //============================================================================== | ||||
| const File File::getLinkedTarget() const | const File File::getLinkedTarget() const | ||||
| { | { | ||||
| #if JUCE_IOS || (defined (MAC_OS_X_VERSION_10_5) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) | |||||
| #if JUCE_IOS || (defined (MAC_OS_X_VERSION_10_5) && MAC_OS_X_VERSION_MIN_ALLOWED >= MAC_OS_X_VERSION_10_5) | |||||
| NSString* dest = [[NSFileManager defaultManager] destinationOfSymbolicLinkAtPath: juceStringToNS (getFullPathName()) error: nil]; | NSString* dest = [[NSFileManager defaultManager] destinationOfSymbolicLinkAtPath: juceStringToNS (getFullPathName()) error: nil]; | ||||
| #else | #else | ||||
| @@ -471,7 +448,7 @@ OSType PlatformUtilities::getTypeOfFile (const String& filename) | |||||
| { | { | ||||
| const ScopedAutoReleasePool pool; | const ScopedAutoReleasePool pool; | ||||
| #if JUCE_IOS || (defined (MAC_OS_X_VERSION_10_5) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) | |||||
| #if JUCE_IOS || (defined (MAC_OS_X_VERSION_10_5) && MAC_OS_X_VERSION_MIN_ALLOWED >= MAC_OS_X_VERSION_10_5) | |||||
| NSDictionary* fileDict = [[NSFileManager defaultManager] attributesOfItemAtPath: juceStringToNS (filename) error: nil]; | NSDictionary* fileDict = [[NSFileManager defaultManager] attributesOfItemAtPath: juceStringToNS (filename) error: nil]; | ||||
| #else | #else | ||||
| NSDictionary* fileDict = [[NSFileManager defaultManager] fileAttributesAtPath: juceStringToNS (filename) traverseLink: NO]; | NSDictionary* fileDict = [[NSFileManager defaultManager] fileAttributesAtPath: juceStringToNS (filename) traverseLink: NO]; | ||||
| @@ -220,7 +220,7 @@ int SystemStats::getMemorySizeInMegabytes() | |||||
| //============================================================================== | //============================================================================== | ||||
| uint32 juce_millisecondsSinceStartup() throw() | uint32 juce_millisecondsSinceStartup() throw() | ||||
| { | { | ||||
| return (uint32) GetTickCount(); | |||||
| return (uint32) timeGetTime(); | |||||
| } | } | ||||
| int64 Time::getHighResolutionTicks() throw() | int64 Time::getHighResolutionTicks() throw() | ||||