diff --git a/IDE/src/BuildContext.bf b/IDE/src/BuildContext.bf index fb94ad87..871fb8dd 100644 --- a/IDE/src/BuildContext.bf +++ b/IDE/src/BuildContext.bf @@ -1262,6 +1262,9 @@ namespace IDE Workspace.Options workspaceOptions = gApp.GetCurWorkspaceOptions(); BfCompiler bfCompiler = gApp.mBfBuildCompiler; + BfSystem bfSystem = gApp.mBfBuildSystem; + + bfSystem.Lock(0); var bfProject = gApp.mBfBuildSystem.mProjectMap[project]; bool bfHadOutputChanges = false; List bfFileNames = scope List(); @@ -1284,6 +1287,8 @@ namespace IDE bfCompiler.GetOutputFileNames(bfProject, .FlushQueuedHotFiles, out bfHadOutputChanges, bfFileNames); defer:: ClearAndDeleteItems(bfFileNames); } + bfSystem.Unlock(); + if (bfHadOutputChanges) project.mNeedsTargetRebuild = true; diff --git a/IDE/src/IDEApp.bf b/IDE/src/IDEApp.bf index 34f2fd9d..f7b3d79b 100644 --- a/IDE/src/IDEApp.bf +++ b/IDE/src/IDEApp.bf @@ -10400,10 +10400,16 @@ namespace IDE return; BfCompiler bfCompiler = mBfBuildCompiler; + BfSystem bfSystem = mBfBuildSystem; + var bfProject = mBfBuildSystem.mProjectMap[project]; bool bfHadOutputChanges; List bfFileNames = scope List(); + + bfSystem.Lock(0); bfCompiler.GetOutputFileNames(bfProject, .None, out bfHadOutputChanges, bfFileNames); + bfSystem.Unlock(); + defer ClearAndDeleteItems(bfFileNames); if (bfHadOutputChanges) project.mNeedsTargetRebuild = true; diff --git a/IDEHelper/Compiler/BfCompiler.cpp b/IDEHelper/Compiler/BfCompiler.cpp index bfc0127d..0c931410 100644 --- a/IDEHelper/Compiler/BfCompiler.cpp +++ b/IDEHelper/Compiler/BfCompiler.cpp @@ -10431,8 +10431,10 @@ enum BfUsedOutputFlags BF_EXPORT const char* BF_CALLTYPE BfCompiler_GetUsedOutputFileNames(BfCompiler* bfCompiler, BfProject* bfProject, BfUsedOutputFlags flags, bool* hadOutputChanges) { - BP_ZONE("BfCompiler_GetUsedOutputFileNames"); + bfCompiler->mSystem->AssertWeHaveLock(); + BP_ZONE("BfCompiler_GetUsedOutputFileNames"); + *hadOutputChanges = false; String& outString = *gTLStrReturn.Get(); outString.clear();