mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 11:38:21 +02:00
DoRefreshCollapse BfSystem lock fix
This commit is contained in:
parent
5af381f538
commit
8dc2cf9652
3 changed files with 17 additions and 2 deletions
|
@ -1448,6 +1448,7 @@ namespace IDE.ui
|
|||
public void DoRefreshCollapse(BfParser parser, int32 textVersion, IdSpan charIdSpan)
|
||||
{
|
||||
var bfCompiler = BfResolveCompiler;
|
||||
var bfSystem = BfResolveSystem;
|
||||
|
||||
String explicitEmitTypeNames = scope .();
|
||||
for (var explicitType in mExplicitEmitTypes)
|
||||
|
@ -1459,6 +1460,7 @@ namespace IDE.ui
|
|||
var resolvePassData = parser.CreateResolvePassData(.None);
|
||||
defer delete resolvePassData;
|
||||
|
||||
bfSystem.Lock(0);
|
||||
var collapseData = bfCompiler.GetCollapseRegions(parser, resolvePassData, explicitEmitTypeNames, .. scope .());
|
||||
using (mMonitor.Enter())
|
||||
{
|
||||
|
@ -1468,6 +1470,7 @@ namespace IDE.ui
|
|||
mQueuedCollapseData.mTextVersion = textVersion;
|
||||
mQueuedCollapseData.mCharIdSpan = charIdSpan;
|
||||
}
|
||||
bfSystem.Unlock();
|
||||
}
|
||||
|
||||
public void DoFullClassify(ResolveParams resolveParams)
|
||||
|
|
|
@ -9440,6 +9440,8 @@ BF_EXPORT bool BF_CALLTYPE BfCompiler_ClassifySource(BfCompiler* bfCompiler, BfP
|
|||
{
|
||||
BP_ZONE("BfCompiler_ClassifySource");
|
||||
|
||||
bfCompiler->mSystem->AssertWeHaveLock();
|
||||
|
||||
String& autoCompleteResultString = *gTLStrReturn.Get();
|
||||
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)
|
||||
{
|
||||
bfCompiler->mSystem->AssertWeHaveLock();
|
||||
|
||||
String& outString = *gTLStrReturn.Get();
|
||||
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)
|
||||
{
|
||||
bfCompiler->mSystem->AssertWeHaveLock();
|
||||
|
||||
String typeName = name;
|
||||
|
||||
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)
|
||||
{
|
||||
bfCompiler->mSystem->AssertWeHaveLock();
|
||||
|
||||
String& outString = *gTLStrReturn.Get();
|
||||
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)
|
||||
{
|
||||
bfCompiler->mSystem->AssertWeHaveLock();
|
||||
|
||||
BP_ZONE("BfCompiler_GetSymbolReferences");
|
||||
|
||||
String& outString = *gTLStrReturn.Get();
|
||||
|
|
|
@ -3754,7 +3754,9 @@ void BfSystem::Unlock()
|
|||
|
||||
void BfSystem::AssertWeHaveLock()
|
||||
{
|
||||
//mSystemLock.mCritSect
|
||||
#ifdef BF_PLATFORM_WINDOWS
|
||||
BF_ASSERT_REL(((CRITICAL_SECTION*)mSystemLock.mCritSect)->OwningThread == (HANDLE)(uintptr)::GetCurrentThreadId());
|
||||
#endif
|
||||
}
|
||||
|
||||
void BfSystem::RemoveDeletedParsers()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue