1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 19:48:20 +02:00

DoRefreshCollapse BfSystem lock fix

This commit is contained in:
Brian Fiete 2022-05-07 06:26:12 -07:00
parent 5af381f538
commit 8dc2cf9652
3 changed files with 17 additions and 2 deletions

View file

@ -1448,6 +1448,7 @@ namespace IDE.ui
public void DoRefreshCollapse(BfParser parser, int32 textVersion, IdSpan charIdSpan) public void DoRefreshCollapse(BfParser parser, int32 textVersion, IdSpan charIdSpan)
{ {
var bfCompiler = BfResolveCompiler; var bfCompiler = BfResolveCompiler;
var bfSystem = BfResolveSystem;
String explicitEmitTypeNames = scope .(); String explicitEmitTypeNames = scope .();
for (var explicitType in mExplicitEmitTypes) for (var explicitType in mExplicitEmitTypes)
@ -1459,6 +1460,7 @@ namespace IDE.ui
var resolvePassData = parser.CreateResolvePassData(.None); var resolvePassData = parser.CreateResolvePassData(.None);
defer delete resolvePassData; defer delete resolvePassData;
bfSystem.Lock(0);
var collapseData = bfCompiler.GetCollapseRegions(parser, resolvePassData, explicitEmitTypeNames, .. scope .()); var collapseData = bfCompiler.GetCollapseRegions(parser, resolvePassData, explicitEmitTypeNames, .. scope .());
using (mMonitor.Enter()) using (mMonitor.Enter())
{ {
@ -1468,6 +1470,7 @@ namespace IDE.ui
mQueuedCollapseData.mTextVersion = textVersion; mQueuedCollapseData.mTextVersion = textVersion;
mQueuedCollapseData.mCharIdSpan = charIdSpan; mQueuedCollapseData.mCharIdSpan = charIdSpan;
} }
bfSystem.Unlock();
} }
public void DoFullClassify(ResolveParams resolveParams) public void DoFullClassify(ResolveParams resolveParams)

View file

@ -9440,6 +9440,8 @@ BF_EXPORT bool BF_CALLTYPE BfCompiler_ClassifySource(BfCompiler* bfCompiler, BfP
{ {
BP_ZONE("BfCompiler_ClassifySource"); BP_ZONE("BfCompiler_ClassifySource");
bfCompiler->mSystem->AssertWeHaveLock();
String& autoCompleteResultString = *gTLStrReturn.Get(); String& autoCompleteResultString = *gTLStrReturn.Get();
autoCompleteResultString.clear(); autoCompleteResultString.clear();
@ -9464,6 +9466,8 @@ BF_EXPORT bool BF_CALLTYPE BfCompiler_ClassifySource(BfCompiler* bfCompiler, BfP
BF_EXPORT const char* BF_CALLTYPE BfCompiler_GetCollapseRegions(BfCompiler* bfCompiler, BfParser* bfParser, BfResolvePassData* resolvePassData, char* explicitEmitTypeNames) BF_EXPORT const char* BF_CALLTYPE BfCompiler_GetCollapseRegions(BfCompiler* bfCompiler, BfParser* bfParser, BfResolvePassData* resolvePassData, char* explicitEmitTypeNames)
{ {
bfCompiler->mSystem->AssertWeHaveLock();
String& outString = *gTLStrReturn.Get(); String& outString = *gTLStrReturn.Get();
outString.Clear(); outString.Clear();
@ -10029,6 +10033,8 @@ BF_EXPORT const char* BF_CALLTYPE BfCompiler_GetCollapseRegions(BfCompiler* bfCo
BF_EXPORT bool BF_CALLTYPE BfCompiler_VerifyTypeName(BfCompiler* bfCompiler, char* name, int cursorPos) BF_EXPORT bool BF_CALLTYPE BfCompiler_VerifyTypeName(BfCompiler* bfCompiler, char* name, int cursorPos)
{ {
bfCompiler->mSystem->AssertWeHaveLock();
String typeName = name; String typeName = name;
auto system = bfCompiler->mSystem; auto system = bfCompiler->mSystem;
@ -10248,6 +10254,8 @@ BF_EXPORT int BF_CALLTYPE BfCompiler_GetTypeId(BfCompiler* bfCompiler, const cha
BF_EXPORT const char* BF_CALLTYPE BfCompiler_GetTypeInfo(BfCompiler* bfCompiler, const char* name) BF_EXPORT const char* BF_CALLTYPE BfCompiler_GetTypeInfo(BfCompiler* bfCompiler, const char* name)
{ {
bfCompiler->mSystem->AssertWeHaveLock();
String& outString = *gTLStrReturn.Get(); String& outString = *gTLStrReturn.Get();
outString = ""; outString = "";
@ -10564,6 +10572,8 @@ BF_EXPORT void BF_CALLTYPE BfCompiler_FileChanged(BfCompiler* bfCompiler, const
BF_EXPORT const char* BF_CALLTYPE BfCompiler_GetSymbolReferences(BfCompiler* bfCompiler, BfPassInstance* bfPassInstance, BfResolvePassData* resolvePassData) BF_EXPORT const char* BF_CALLTYPE BfCompiler_GetSymbolReferences(BfCompiler* bfCompiler, BfPassInstance* bfPassInstance, BfResolvePassData* resolvePassData)
{ {
bfCompiler->mSystem->AssertWeHaveLock();
BP_ZONE("BfCompiler_GetSymbolReferences"); BP_ZONE("BfCompiler_GetSymbolReferences");
String& outString = *gTLStrReturn.Get(); String& outString = *gTLStrReturn.Get();

View file

@ -3754,7 +3754,9 @@ void BfSystem::Unlock()
void BfSystem::AssertWeHaveLock() void BfSystem::AssertWeHaveLock()
{ {
//mSystemLock.mCritSect #ifdef BF_PLATFORM_WINDOWS
BF_ASSERT_REL(((CRITICAL_SECTION*)mSystemLock.mCritSect)->OwningThread == (HANDLE)(uintptr)::GetCurrentThreadId());
#endif
} }
void BfSystem::RemoveDeletedParsers() void BfSystem::RemoveDeletedParsers()