Queue unique models for compilation immediately.

This commit is contained in:
Skyth 2024-11-26 20:04:31 +03:00
parent 23297c73a6
commit 172bc6683e
2 changed files with 8 additions and 2 deletions

View file

@ -69,7 +69,12 @@ namespace boost
uint32_t use_count() const uint32_t use_count() const
{ {
return use_count_; return std::byteswap(static_cast<uint32_t const volatile &>(use_count_.value));
}
bool unique() const
{
return use_count() == 1;
} }
}; };
@ -158,6 +163,7 @@ namespace boost
explicit operator bool() const { return px != nullptr; } explicit operator bool() const { return px != nullptr; }
size_t use_count() const { return pn ? pn->use_count() : 0; } size_t use_count() const { return pn ? pn->use_count() : 0; }
bool unique() const { return !pn || pn->unique(); }
}; };
using anonymous_shared_ptr = shared_ptr<void>; using anonymous_shared_ptr = shared_ptr<void>;

View file

@ -4668,7 +4668,7 @@ static void ModelConsumerThread()
else else
ready = CheckMadeAll(*reinterpret_cast<Hedgehog::Mirage::CModelData*>(pendingModel.get())); ready = CheckMadeAll(*reinterpret_cast<Hedgehog::Mirage::CModelData*>(pendingModel.get()));
if (ready) if (ready || pendingModel.unique())
{ {
g_compilingModelQueue.enqueue(std::move(pendingModel)); g_compilingModelQueue.enqueue(std::move(pendingModel));
--g_pendingModelCount; --g_pendingModelCount;