diff --git a/modules/renders/rendergl/src/resources/materialgl.cpp b/modules/renders/rendergl/src/resources/materialgl.cpp index a5330d729..8c4d0cce9 100644 --- a/modules/renders/rendergl/src/resources/materialgl.cpp +++ b/modules/renders/rendergl/src/resources/materialgl.cpp @@ -425,17 +425,6 @@ bool MaterialInstanceGL::bind(CommandBufferGL *buffer, uint32_t layer, uint32_t uint8_t i = 0; - if(m_surfaceType == Material::Skinned) { - Texture *skinMatrices = texture(*buffer, SKIN_BIND); - - if(skinMatrices) { - glActiveTexture(GL_TEXTURE0 + i); - glBindTexture(GL_TEXTURE_2D, static_cast(skinMatrices)->nativeHandle()); - - i++; - } - } - for(auto &it : material->textures()) { Texture *tex = texture(*buffer, it.binding); diff --git a/modules/uikit/includes/uisystem.h b/modules/uikit/includes/uisystem.h index 18d5408a2..028d7385c 100644 --- a/modules/uikit/includes/uisystem.h +++ b/modules/uikit/includes/uisystem.h @@ -20,7 +20,7 @@ class UiSystem : public System { static void riseWidget(Widget *widget); static void lowerWidget(Widget *widget); - static std::list &widgets(); + static std::list widgets(); private: void composeComponent(Component *component) const override; @@ -28,6 +28,8 @@ class UiSystem : public System { private: static std::list m_uiComponents; + static std::mutex m_mutex; + }; #endif // UISYSTEM_H diff --git a/modules/uikit/src/uisystem.cpp b/modules/uikit/src/uisystem.cpp index 730337a17..23206a0fd 100644 --- a/modules/uikit/src/uisystem.cpp +++ b/modules/uikit/src/uisystem.cpp @@ -25,6 +25,7 @@ #include "pipelinetasks/guilayer.h" std::list UiSystem::m_uiComponents; +std::mutex UiSystem::m_mutex; UiSystem::UiSystem() : System() { @@ -99,6 +100,8 @@ UiSystem::~UiSystem() { StyleSheet::unregisterClassFactory(Engine::resourceSystem()); UiDocument::unregisterClassFactory(Engine::resourceSystem()); + + m_uiComponents.clear(); } void UiSystem::update(World *) { @@ -111,15 +114,18 @@ int UiSystem::threadPolicy() const { } void UiSystem::addWidget(Widget *widget) { + std::lock_guard lock(m_mutex); m_uiComponents.push_back(widget); } void UiSystem::removeWidget(Widget *widget) { + std::lock_guard lock(m_mutex); m_uiComponents.remove(widget); } void UiSystem::riseWidget(Widget *widget) { if(widget) { + std::lock_guard lock(m_mutex); m_uiComponents.remove(widget); m_uiComponents.push_back(widget); } @@ -127,12 +133,14 @@ void UiSystem::riseWidget(Widget *widget) { void UiSystem::lowerWidget(Widget *widget) { if(widget) { + std::lock_guard lock(m_mutex); m_uiComponents.remove(widget); m_uiComponents.push_front(widget); } } -std::list &UiSystem::widgets() { +std::list UiSystem::widgets() { + std::lock_guard lock(m_mutex); return m_uiComponents; }