mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-09-09 12:25:17 -04:00
Do thread safe local static based initialization
This commit is contained in:
parent
b160cee0b7
commit
0801e0512d
@ -774,12 +774,10 @@ namespace MWGui
|
|||||||
, mGlobalMapRender(std::make_unique<MWRender::GlobalMap>(localMapRender->getRoot(), workQueue))
|
, mGlobalMapRender(std::make_unique<MWRender::GlobalMap>(localMapRender->getRoot(), workQueue))
|
||||||
, mEditNoteDialog()
|
, mEditNoteDialog()
|
||||||
{
|
{
|
||||||
static bool registered = false;
|
[[maybe_unused]] static const bool registered = [] {
|
||||||
if (!registered)
|
|
||||||
{
|
|
||||||
MyGUI::FactoryManager::getInstance().registerFactory<MarkerWidget>("Widget");
|
MyGUI::FactoryManager::getInstance().registerFactory<MarkerWidget>("Widget");
|
||||||
registered = true;
|
return true;
|
||||||
}
|
}();
|
||||||
|
|
||||||
mEditNoteDialog.setVisible(false);
|
mEditNoteDialog.setVisible(false);
|
||||||
mEditNoteDialog.eventOkClicked += MyGUI::newDelegate(this, &MapWindow::onNoteEditOk);
|
mEditNoteDialog.eventOkClicked += MyGUI::newDelegate(this, &MapWindow::onNoteEditOk);
|
||||||
|
@ -401,14 +401,12 @@ namespace MWRender
|
|||||||
{
|
{
|
||||||
if (mViewMode == VM_FirstPerson)
|
if (mViewMode == VM_FirstPerson)
|
||||||
{
|
{
|
||||||
static bool prototypeAdded = false;
|
[[maybe_unused]] static const bool prototypeAdded = [&] {
|
||||||
if (!prototypeAdded)
|
|
||||||
{
|
|
||||||
osg::ref_ptr<osgUtil::RenderBin> depthClearBin(new osgUtil::RenderBin);
|
osg::ref_ptr<osgUtil::RenderBin> depthClearBin(new osgUtil::RenderBin);
|
||||||
depthClearBin->setDrawCallback(new DepthClearCallback());
|
depthClearBin->setDrawCallback(new DepthClearCallback());
|
||||||
osgUtil::RenderBin::addRenderBinPrototype("DepthClear", depthClearBin);
|
osgUtil::RenderBin::addRenderBinPrototype("DepthClear", depthClearBin);
|
||||||
prototypeAdded = true;
|
return true;
|
||||||
}
|
}();
|
||||||
mObjectRoot->getOrCreateStateSet()->setRenderBinDetails(
|
mObjectRoot->getOrCreateStateSet()->setRenderBinDetails(
|
||||||
RenderBin_FirstPerson, "DepthClear", osg::StateSet::OVERRIDE_RENDERBIN_DETAILS);
|
RenderBin_FirstPerson, "DepthClear", osg::StateSet::OVERRIDE_RENDERBIN_DETAILS);
|
||||||
}
|
}
|
||||||
|
@ -88,14 +88,13 @@ namespace MWRender
|
|||||||
|
|
||||||
if (mProgramBlobber != nullptr)
|
if (mProgramBlobber != nullptr)
|
||||||
{
|
{
|
||||||
static bool pipelineLogged = [&] {
|
[[maybe_unused]] static const bool pipelineLogged = [&] {
|
||||||
if (mUseCompute)
|
if (mUseCompute)
|
||||||
Log(Debug::Info) << "Initialized compute shader pipeline for water ripples";
|
Log(Debug::Info) << "Initialized compute shader pipeline for water ripples";
|
||||||
else
|
else
|
||||||
Log(Debug::Info) << "Initialized fallback fragment shader pipeline for water ripples";
|
Log(Debug::Info) << "Initialized fallback fragment shader pipeline for water ripples";
|
||||||
return true;
|
return true;
|
||||||
}();
|
}();
|
||||||
(void)pipelineLogged;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setCullCallback(new osg::NodeCallback);
|
setCullCallback(new osg::NodeCallback);
|
||||||
|
@ -522,16 +522,14 @@ namespace MWSound
|
|||||||
|
|
||||||
/* We need to make sure ffmpeg is initialized. Optionally silence warning
|
/* We need to make sure ffmpeg is initialized. Optionally silence warning
|
||||||
* output from the lib */
|
* output from the lib */
|
||||||
static bool done_init = false;
|
[[maybe_unused]] static const bool doneInit = [] {
|
||||||
if (!done_init)
|
|
||||||
{
|
|
||||||
// This is not needed anymore above FFMpeg version 4.0
|
// This is not needed anymore above FFMpeg version 4.0
|
||||||
#if LIBAVCODEC_VERSION_INT < 3805796
|
#if LIBAVCODEC_VERSION_INT < 3805796
|
||||||
av_register_all();
|
av_register_all();
|
||||||
#endif
|
#endif
|
||||||
av_log_set_level(AV_LOG_ERROR);
|
av_log_set_level(AV_LOG_ERROR);
|
||||||
done_init = true;
|
return true;
|
||||||
}
|
}();
|
||||||
}
|
}
|
||||||
|
|
||||||
FFmpegDecoder::~FFmpegDecoder()
|
FFmpegDecoder::~FFmpegDecoder()
|
||||||
|
@ -1273,13 +1273,12 @@ namespace MWWorld
|
|||||||
const std::size_t leftCapacity = mPreloader->getMaxCacheSize() - mPreloader->getCacheSize();
|
const std::size_t leftCapacity = mPreloader->getMaxCacheSize() - mPreloader->getCacheSize();
|
||||||
if (cells.size() > leftCapacity)
|
if (cells.size() > leftCapacity)
|
||||||
{
|
{
|
||||||
static bool logged = [&] {
|
[[maybe_unused]] static const bool logged = [&] {
|
||||||
Log(Debug::Warning) << "Not enough cell preloader cache capacity to preload exterior cells, consider "
|
Log(Debug::Warning) << "Not enough cell preloader cache capacity to preload exterior cells, consider "
|
||||||
"increasing \"preload cell cache max\" up to "
|
"increasing \"preload cell cache max\" up to "
|
||||||
<< (mPreloader->getCacheSize() + cells.size());
|
<< (mPreloader->getCacheSize() + cells.size());
|
||||||
return true;
|
return true;
|
||||||
}();
|
}();
|
||||||
(void)logged;
|
|
||||||
cells.resize(leftCapacity);
|
cells.resize(leftCapacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,13 +95,10 @@ namespace SceneUtil
|
|||||||
|
|
||||||
static void setReversed(bool reverseZ)
|
static void setReversed(bool reverseZ)
|
||||||
{
|
{
|
||||||
static bool init = false;
|
[[maybe_unused]] static const bool init = [&] {
|
||||||
|
|
||||||
if (!init)
|
|
||||||
{
|
|
||||||
AutoDepth::sReversed = reverseZ;
|
AutoDepth::sReversed = reverseZ;
|
||||||
init = true;
|
return true;
|
||||||
}
|
}();
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool isReversed()
|
static bool isReversed()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user