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:
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)
|
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)
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue