mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 15:09:19 +02:00
Add security locks for material manager
thanks to @Milek7 for advice about material manager
This commit is contained in:
@@ -18,6 +18,7 @@ http://mozilla.org/MPL/2.0/.
|
||||
#include "motiontelemetry.h"
|
||||
#include "ref/discord-rpc/include/discord_rpc.h"
|
||||
#include <map>
|
||||
#include <thread>
|
||||
|
||||
#ifdef WITH_UART
|
||||
#include "uart.h"
|
||||
@@ -35,6 +36,7 @@ struct global_settings {
|
||||
/// Mapa z watkami w formacie <std::string nazwa, std::thread watek>
|
||||
/// </summary>
|
||||
std::map<std::string, std::thread> threads = {};
|
||||
std::thread::id mainThreadId = std::this_thread::get_id();
|
||||
bool shiftState{ false }; //m7todo: brzydko
|
||||
bool ctrlState{ false };
|
||||
bool altState{ false };
|
||||
|
||||
10
Model3d.cpp
10
Model3d.cpp
@@ -29,6 +29,8 @@ Copyright (C) 2001-2004 Marcin Wozniak, Maciej Czapkiewicz and others
|
||||
|
||||
using namespace Mtable;
|
||||
|
||||
std::mutex materialLoadLock;
|
||||
|
||||
float TSubModel::fSquareDist = 0.f;
|
||||
std::uintptr_t TSubModel::iInstance; // numer renderowanego egzemplarza obiektu
|
||||
texture_handle const *TSubModel::ReplacableSkinId = NULL;
|
||||
@@ -377,6 +379,8 @@ std::pair<int, int> TSubModel::Load( cParser &parser, bool dynamic )
|
||||
|
||||
if (!parser.expectToken("map:"))
|
||||
Error("Model map parse failure!");
|
||||
materialLoadLock.lock();
|
||||
|
||||
std::string material = parser.getToken<std::string>();
|
||||
std::replace(material.begin(), material.end(), '\\', '/');
|
||||
if (material == "none")
|
||||
@@ -412,17 +416,19 @@ std::pair<int, int> TSubModel::Load( cParser &parser, bool dynamic )
|
||||
}
|
||||
else {
|
||||
Name_Material(material);
|
||||
/*
|
||||
/*
|
||||
if( material.find_first_of( "/" ) == material.npos ) {
|
||||
// jeśli tylko nazwa pliku, to dawać bieżącą ścieżkę do tekstur
|
||||
material.insert( 0, Global.asCurrentTexturePath );
|
||||
}
|
||||
*/
|
||||
*/
|
||||
m_material = GfxRenderer->Fetch_Material( material );
|
||||
// renderowanie w cyklu przezroczystych tylko jeśli:
|
||||
// 1. Opacity=0 (przejściowo <1, czy tam <100)
|
||||
iFlags |= Opacity < 0.999f ? 0x20 : 0x10 ; // 0x20-przezroczysta, 0x10-nieprzezroczysta
|
||||
};
|
||||
|
||||
materialLoadLock.unlock();
|
||||
}
|
||||
else if (eType == TP_STARS)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user