mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Fixed some loading issues
This commit is contained in:
parent
2bb2a5926a
commit
9c44273737
2 changed files with 67 additions and 35 deletions
|
@ -2236,6 +2236,34 @@ namespace IDE
|
||||||
return .Err;
|
return .Err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FlushDeferredLoadProjects()
|
||||||
|
{
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
bool hadLoad = false;
|
||||||
|
for (int projectIdx = 0; projectIdx < mWorkspace.mProjects.Count; projectIdx++)
|
||||||
|
{
|
||||||
|
var project = mWorkspace.mProjects[projectIdx];
|
||||||
|
if (project.mLoadDeferred)
|
||||||
|
{
|
||||||
|
hadLoad = true;
|
||||||
|
|
||||||
|
var projectPath = project.mProjectPath;
|
||||||
|
if (!project.Load(projectPath))
|
||||||
|
{
|
||||||
|
OutputErrorLine("Failed to load project '{0}' from '{1}'", project.mProjectName, projectPath);
|
||||||
|
LoadFailed();
|
||||||
|
project.mFailed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
AddProjectToWorkspace(project, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!hadLoad)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected void LoadWorkspace(BeefVerb verb)
|
protected void LoadWorkspace(BeefVerb verb)
|
||||||
{
|
{
|
||||||
scope AutoBeefPerf("IDEApp.LoadWorkspace");
|
scope AutoBeefPerf("IDEApp.LoadWorkspace");
|
||||||
|
@ -2428,30 +2456,7 @@ namespace IDE
|
||||||
mWorkspace.Deserialize(data);
|
mWorkspace.Deserialize(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (true)
|
FlushDeferredLoadProjects();
|
||||||
{
|
|
||||||
bool hadLoad = false;
|
|
||||||
for (int projectIdx = 0; projectIdx < mWorkspace.mProjects.Count; projectIdx++)
|
|
||||||
{
|
|
||||||
var project = mWorkspace.mProjects[projectIdx];
|
|
||||||
if (project.mLoadDeferred)
|
|
||||||
{
|
|
||||||
hadLoad = true;
|
|
||||||
|
|
||||||
var projectPath = project.mProjectPath;
|
|
||||||
if (!project.Load(projectPath))
|
|
||||||
{
|
|
||||||
OutputErrorLine("Failed to load project '{0}' from '{1}'", project.mProjectName, projectPath);
|
|
||||||
LoadFailed();
|
|
||||||
project.mFailed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
AddProjectToWorkspace(project, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!hadLoad)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
mWorkspace.FinishDeserialize(data);
|
mWorkspace.FinishDeserialize(data);
|
||||||
mWorkspace.FixOptions(mConfigName, mPlatformName);
|
mWorkspace.FixOptions(mConfigName, mPlatformName);
|
||||||
|
@ -2465,6 +2470,8 @@ namespace IDE
|
||||||
|
|
||||||
public void RetryProjectLoad(Project project)
|
public void RetryProjectLoad(Project project)
|
||||||
{
|
{
|
||||||
|
LoadConfig();
|
||||||
|
|
||||||
var projectPath = project.mProjectPath;
|
var projectPath = project.mProjectPath;
|
||||||
if (!project.Load(projectPath))
|
if (!project.Load(projectPath))
|
||||||
{
|
{
|
||||||
|
@ -2474,9 +2481,12 @@ namespace IDE
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
FlushDeferredLoadProjects();
|
||||||
|
mWorkspace.FixOptions();
|
||||||
|
|
||||||
project.mFailed = false;
|
project.mFailed = false;
|
||||||
CurrentWorkspaceConfigChanged();
|
|
||||||
mProjectPanel.RebuildUI();
|
mProjectPanel.RebuildUI();
|
||||||
|
CurrentWorkspaceConfigChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2493,13 +2503,8 @@ namespace IDE
|
||||||
VerSpecRecord useVerSpecRecord = verSpecRecord;
|
VerSpecRecord useVerSpecRecord = verSpecRecord;
|
||||||
String verConfigDir = mWorkspace.mDir;
|
String verConfigDir = mWorkspace.mDir;
|
||||||
|
|
||||||
for (var project in mWorkspace.mProjects)
|
if (let project = mWorkspace.FindProject(projectName))
|
||||||
{
|
|
||||||
if (project.mProjectName == projectName)
|
|
||||||
{
|
|
||||||
return project;
|
return project;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (useVerSpecRecord.mVerSpec case .SemVer)
|
if (useVerSpecRecord.mVerSpec case .SemVer)
|
||||||
{
|
{
|
||||||
|
@ -2561,6 +2566,7 @@ namespace IDE
|
||||||
project.mProjectName.Set(projectName);
|
project.mProjectName.Set(projectName);
|
||||||
project.DeferLoad(projectFilePath);
|
project.DeferLoad(projectFilePath);
|
||||||
success = true;
|
success = true;
|
||||||
|
mWorkspace.AddProjectToCache(project);
|
||||||
|
|
||||||
/*if (!project.Load(projectFilePath))
|
/*if (!project.Load(projectFilePath))
|
||||||
{
|
{
|
||||||
|
@ -3797,6 +3803,15 @@ namespace IDE
|
||||||
{
|
{
|
||||||
CompilerLog("IDEApp.Compile");
|
CompilerLog("IDEApp.Compile");
|
||||||
|
|
||||||
|
for (let project in gApp.mWorkspace.mProjects)
|
||||||
|
{
|
||||||
|
if (project.mFailed)
|
||||||
|
{
|
||||||
|
OutputErrorLine("Project '{}' is not loaded. Retry loading by right clicking on the project in the Workspace panel and selecting 'Retry Load'", project.mProjectName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (AreTestsRunning())
|
if (AreTestsRunning())
|
||||||
return;
|
return;
|
||||||
if (mHotResolveState != .None)
|
if (mHotResolveState != .None)
|
||||||
|
@ -8959,7 +8974,7 @@ namespace IDE
|
||||||
projectError.Append(", ");
|
projectError.Append(", ");
|
||||||
projectError.Append(useProjectStack[i].mProjectName);
|
projectError.Append(useProjectStack[i].mProjectName);
|
||||||
}
|
}
|
||||||
OutputLine(projectError);
|
OutputErrorLine(projectError);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -667,6 +667,23 @@ namespace IDE
|
||||||
mProjectNameMap.Clear();
|
mProjectNameMap.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AddProjectToCache(Project project)
|
||||||
|
{
|
||||||
|
void Add(String name, Project project)
|
||||||
|
{
|
||||||
|
bool added = mProjectNameMap.TryAdd(name, var keyPtr, var valuePtr);
|
||||||
|
if (!added)
|
||||||
|
return;
|
||||||
|
*keyPtr = new String(name);
|
||||||
|
*valuePtr = project;
|
||||||
|
}
|
||||||
|
|
||||||
|
Add(project.mProjectName, project);
|
||||||
|
|
||||||
|
for (var alias in project.mGeneralOptions.mAliases)
|
||||||
|
Add(alias, project);
|
||||||
|
}
|
||||||
|
|
||||||
public Project FindProject(StringView projectName)
|
public Project FindProject(StringView projectName)
|
||||||
{
|
{
|
||||||
if (mProjectNameMap.IsEmpty)
|
if (mProjectNameMap.IsEmpty)
|
||||||
|
@ -681,7 +698,7 @@ namespace IDE
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var project in mProjects)
|
for (var project in mProjects)
|
||||||
Add(project.mProjectName, project);;
|
Add(project.mProjectName, project);
|
||||||
|
|
||||||
for (var project in mProjects)
|
for (var project in mProjects)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue