Browse Source

Projucer: Moved a Thread::sleep() call that would be called every time a project was saved out of the Xcode exporter and only call it if saving and opening project in Xcode

tags/2021-05-28
ed 8 years ago
parent
commit
ff7cfb8824
6 changed files with 25 additions and 18 deletions
  1. +0
    -7
      extras/Projucer/Source/Project Saving/jucer_ProjectExport_XCode.h
  2. +11
    -5
      extras/Projucer/Source/Project Saving/jucer_ProjectSaver.h
  3. +1
    -1
      extras/Projucer/Source/Project/jucer_Project.cpp
  4. +3
    -0
      extras/Projucer/Source/Project/jucer_Project.h
  5. +9
    -4
      extras/Projucer/Source/Project/jucer_ProjectContentComponent.cpp
  6. +1
    -1
      extras/Projucer/Source/Project/jucer_ProjectContentComponent.h

+ 0
- 7
extras/Projucer/Source/Project Saving/jucer_ProjectExport_XCode.h View File

@@ -280,13 +280,6 @@ public:
// Deleting the .rsrc files can be needed to force Xcode to update the version number.
deleteRsrcFiles (getTargetFolder().getChildFile ("build"));
if (! ProjucerApplication::getApp().isRunningCommandLine)
{
// Workaround for a bug where Xcode thinks the project is invalid if opened immedietely
// after writing
Thread::sleep (2000);
}
}
//==============================================================================


+ 11
- 5
extras/Projucer/Source/Project Saving/jucer_ProjectSaver.h View File

@@ -48,28 +48,29 @@ public:
struct SaveThread : public ThreadWithProgressWindow
{
public:
SaveThread (ProjectSaver& ps)
SaveThread (ProjectSaver& ps, bool wait = false)
: ThreadWithProgressWindow ("Saving...", true, false),
saver (ps), result (Result::ok())
saver (ps), result (Result::ok()), shouldWaitAfterSaving (wait)
{}
void run() override
{
setProgress (-1);
result = saver.save (false);
result = saver.save (false, shouldWaitAfterSaving);
}
ProjectSaver& saver;
Result result;
bool shouldWaitAfterSaving;
JUCE_DECLARE_NON_COPYABLE (SaveThread)
};
Result save (bool showProgressBox)
Result save (bool showProgressBox, bool waitAfterSaving)
{
if (showProgressBox)
{
SaveThread thread (*this);
SaveThread thread (*this, waitAfterSaving);
thread.runThread();
return thread.result;
}
@@ -109,6 +110,11 @@ public:
return Result::fail (errors[0]);
}
// Workaround for a bug where Xcode thinks the project is invalid if opened immedietely
// after writing
if (waitAfterSaving)
Thread::sleep (2000);
return Result::ok();
}


+ 1
- 1
extras/Projucer/Source/Project/jucer_Project.cpp View File

@@ -383,7 +383,7 @@ Result Project::saveProject (const File& file, bool isCommandLineApp)
const ScopedValueSetter<bool> vs (isSaving, true, false);
ProjectSaver saver (*this, file);
return saver.save (! isCommandLineApp);
return saver.save (! isCommandLineApp, shouldWaitAfterSaving);
}
Result Project::saveResourcesOnly (const File& file)


+ 3
- 0
extras/Projucer/Source/Project/jucer_Project.h View File

@@ -341,6 +341,9 @@ public:
bool hasProjectBeenModified();
void updateModificationTime() { modificationTime = getFile().getLastModificationTime(); }
//==============================================================================
bool shouldWaitAfterSaving = false;
private:
//==============================================================================
void setMissingAudioPluginDefaultValues();


+ 9
- 4
extras/Projucer/Source/Project/jucer_ProjectContentComponent.cpp View File

@@ -628,10 +628,15 @@ bool ProjectContentComponent::goToCounterpart()
return false;
}
bool ProjectContentComponent::saveProject()
bool ProjectContentComponent::saveProject (bool shouldWait)
{
return project != nullptr
&& project->save (true, true) == FileBasedDocument::savedOk;
if (project != nullptr)
{
const ScopedValueSetter<bool> valueSetter (project->shouldWaitAfterSaving, shouldWait, false);
return (project->save (true, true) == FileBasedDocument::savedOk);
}
return false;
}
void ProjectContentComponent::closeProject()
@@ -737,7 +742,7 @@ void ProjectContentComponent::openInSelectedIDE (bool saveFirst)
if (exporter->canLaunchProject() && exporter->getName() == selectedIDE)
{
if (saveFirst)
saveProject();
saveProject (exporter->isXcode());
exporter->launchProject();
break;


+ 1
- 1
extras/Projucer/Source/Project/jucer_ProjectContentComponent.h View File

@@ -75,7 +75,7 @@ public:
bool canGoToCounterpart() const;
bool goToCounterpart();
bool saveProject();
bool saveProject (bool shouldWait = false);
void closeProject();
void openInSelectedIDE (bool saveFirst);
void showNewExporterMenu();


Loading…
Cancel
Save