Where’s the copying mode button? I don’t want an extra copy of JUCE sources in my repository, I’ve already added JUCE using git-subtree.
Oops! Looks like it got nudged off the bottom of the panel… Thanks, I’ve put it back now!
i just downloaded the introjucer to check the new changes, i run it in the debug mode, load an old project into ijucer, is it just me or - the gui feels ultra sluggish. Can it be - it constantly create deep-copies of the whole project value-tree each time a button is pressed or something (only an assumption after pressing pause in the debugger, while gui not responding, whatching stack traces. )
> Introjucer.exe!_heap_alloc_dbg_impl(unsigned int nSize=40, int nBlockUse=1, const char * szFileName=0x00000000, int nLine=0, int * errno_tmp=0x00c1eecc) Line 427 + 0x9 bytes C++
Introjucer.exe!_nh_malloc_dbg_impl(unsigned int nSize=40, int nhFlag=0, int nBlockUse=1, const char * szFileName=0x00000000, int nLine=0, int * errno_tmp=0x00c1eecc) Line 239 + 0x19 bytes C++
Introjucer.exe!_nh_malloc_dbg(unsigned int nSize=40, int nhFlag=0, int nBlockUse=1, const char * szFileName=0x00000000, int nLine=0) Line 296 + 0x1d bytes C++
Introjucer.exe!malloc(unsigned int nSize=40) Line 56 + 0x15 bytes C++
Introjucer.exe!operator new(unsigned int size=40) Line 59 + 0x9 bytes C++
Introjucer.exe!juce::LinkedListPointer<juce::NamedValueSet::NamedValue>::addCopyOfList(const juce::LinkedListPointer<juce::NamedValueSet::NamedValue> & other={...}) Line 246 + 0x7 bytes C++
Introjucer.exe!juce::NamedValueSet::NamedValueSet(const juce::NamedValueSet & other={...}) Line 82 C++
Introjucer.exe!juce::ValueTree::SharedObject::SharedObject(const juce::ValueTree::SharedObject & other={...}) Line 38 + 0x6b bytes C++
Introjucer.exe!juce::ValueTree::SharedObject::SharedObject(const juce::ValueTree::SharedObject & other={...}) Line 41 + 0x2f bytes C++
Introjucer.exe!juce::ValueTree::SharedObject::SharedObject(const juce::ValueTree::SharedObject & other={...}) Line 41 + 0x2f bytes C++
Introjucer.exe!juce::ValueTree::SharedObject::SharedObject(const juce::ValueTree::SharedObject & other={...}) Line 41 + 0x2f bytes C++
Introjucer.exe!juce::createCopyIfNotNull<juce::ValueTree::SharedObject>(juce::ValueTree::SharedObject * pointer=0x029ab440) Line 68 + 0x54 bytes C++
Introjucer.exe!juce::ValueTree::createCopy() Line 713 + 0xe bytes C++
Introjucer.exe!Project::Item::createCopy() Line 431 + 0x51 bytes C++
Introjucer.exe!ProjectExporter::ProjectExporter(Project & project_={...}, const juce::ValueTree & settings_={...}) Line 142 + 0x37 bytes C++
Introjucer.exe!XCodeProjectExporter::XCodeProjectExporter(Project & project_={...}, const juce::ValueTree & settings_={...}, const bool iOS_=false) Line 59 + 0x3e bytes C++
Introjucer.exe!XCodeProjectExporter::createForSettings(Project & project={...}, const juce::ValueTree & settings={...}) Line 69 + 0x2f bytes C++
Introjucer.exe!ProjectExporter::createExporter(Project & project={...}, const juce::ValueTree & settings={...}) Line 99 + 0x13 bytes C++
Introjucer.exe!Project::createExporter(int index=1) Line 918 + 0x58 bytes C++
Introjucer.exe!Project::ExporterIterator::next() Line 958 + 0x12 bytes C++
Introjucer.exe!ProjectExporter::createPlatformDefaultExporter(Project & project={...}) Line 112 + 0x18 bytes C++
Introjucer.exe!ProjectContentComponent::canProjectBeLaunched() Line 409 + 0xf bytes C++
Introjucer.exe!ProjectContentComponent::getCommandInfo(const int commandID=2097267, juce::ApplicationCommandInfo & result={...}) Line 523 + 0xb bytes C++
Introjucer.exe!juce::ApplicationCommandManager::getTargetForCommand(const int commandID=2097267, juce::ApplicationCommandInfo & upToDateInfo={...}) Line 222 C++
Introjucer.exe!juce::Button::applicationCommandListChanged() Line 520 + 0x16 bytes C++
Introjucer.exe!juce::ListenerList<juce::ApplicationCommandManagerListener,juce::Array<juce::ApplicationCommandManagerListener *,juce::DummyCriticalSection> >::callChecked<juce::ListenerList<juce::ApplicationCommandManagerListener,juce::Array<juce::ApplicationCommandManagerListener *,juce::DummyCriticalSection> >::DummyBailOutChecker>(const juce::ListenerList<juce::ApplicationCommandManagerListener,juce::Array<juce::ApplicationCommandManagerListener *,juce::DummyCriticalSection> >::DummyBailOutChecker & bailOutChecker={...}, void (void)* callbackFunction=0x004d0f9e) Line 159 + 0xd bytes C++
Introjucer.exe!juce::ListenerList<juce::ApplicationCommandManagerListener,juce::Array<juce::ApplicationCommandManagerListener *,juce::DummyCriticalSection> >::call(void (void)* callbackFunction=0x004d0f9e) Line 150 C++
Introjucer.exe!juce::ApplicationCommandManager::handleAsyncUpdate() Line 306 C++
Introjucer.exe!juce::AsyncUpdater::AsyncUpdaterMessage::messageCallback() Line 38 C++
Introjucer.exe!juce::WindowsMessageHelpers::dispatchMessageFromLParam(long lParam=43087912) Line 50 C++
Introjucer.exe!juce::MessageManager::dispatchNextMessageOnSystemQueue(const bool returnIfNoPendingMessages=false) Line 111 + 0x9 bytes C++
Introjucer.exe!juce::MessageManager::runDispatchLoopUntil(int millisecondsToRunFor=-1) Line 120 + 0x10 bytes C++
Introjucer.exe!juce::MessageManager::runDispatchLoop() Line 101 C++
Introjucer.exe!juce::JUCEApplication::main() Line 213 C++
Hmm, I hadn’t noticed any sluggishness myself, but you’re right about it doing unnecessary work there. Thanks, I’ll do a bit of optimising…