forked from Mirrorlandia_minetest/minetest
Cleanup jthread and fix win32 build
This commit is contained in:
parent
f3439c40d8
commit
04e9a9d541
@ -31,7 +31,6 @@ BanManager::BanManager(const std::string &banfilepath):
|
|||||||
m_banfilepath(banfilepath),
|
m_banfilepath(banfilepath),
|
||||||
m_modified(false)
|
m_modified(false)
|
||||||
{
|
{
|
||||||
m_mutex.Init();
|
|
||||||
try{
|
try{
|
||||||
load();
|
load();
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,6 @@ QueuedMeshUpdate::~QueuedMeshUpdate()
|
|||||||
|
|
||||||
MeshUpdateQueue::MeshUpdateQueue()
|
MeshUpdateQueue::MeshUpdateQueue()
|
||||||
{
|
{
|
||||||
m_mutex.Init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MeshUpdateQueue::~MeshUpdateQueue()
|
MeshUpdateQueue::~MeshUpdateQueue()
|
||||||
@ -474,7 +473,7 @@ void Client::step(float dtime)
|
|||||||
|
|
||||||
core::list<v3s16> deleted_blocks;
|
core::list<v3s16> deleted_blocks;
|
||||||
|
|
||||||
float delete_unused_sectors_timeout =
|
float delete_unused_sectors_timeout =
|
||||||
g_settings->getFloat("client_delete_unused_sectors_timeout");
|
g_settings->getFloat("client_delete_unused_sectors_timeout");
|
||||||
|
|
||||||
// Delete sector blocks
|
// Delete sector blocks
|
||||||
@ -1266,7 +1265,7 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
|
|||||||
u32 index = 8 + MapNode::serializedLength(ser_version);
|
u32 index = 8 + MapNode::serializedLength(ser_version);
|
||||||
if ((datasize >= index+1) && data[index]){
|
if ((datasize >= index+1) && data[index]){
|
||||||
remove_metadata = false;
|
remove_metadata = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
addNode(p, n, remove_metadata);
|
addNode(p, n, remove_metadata);
|
||||||
}
|
}
|
||||||
@ -2126,7 +2125,7 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
|
|||||||
m_client_event_queue.push_back(event);
|
m_client_event_queue.push_back(event);
|
||||||
}
|
}
|
||||||
else if(command == TOCLIENT_HUDCHANGE)
|
else if(command == TOCLIENT_HUDCHANGE)
|
||||||
{
|
{
|
||||||
std::string sdata;
|
std::string sdata;
|
||||||
v2f v2fdata;
|
v2f v2fdata;
|
||||||
u32 intdata = 0;
|
u32 intdata = 0;
|
||||||
@ -2155,7 +2154,7 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
|
|||||||
m_client_event_queue.push_back(event);
|
m_client_event_queue.push_back(event);
|
||||||
}
|
}
|
||||||
else if(command == TOCLIENT_HUD_SET_FLAGS)
|
else if(command == TOCLIENT_HUD_SET_FLAGS)
|
||||||
{
|
{
|
||||||
std::string datastring((char *)&data[2], datasize - 2);
|
std::string datastring((char *)&data[2], datasize - 2);
|
||||||
std::istringstream is(datastring, std::ios_base::binary);
|
std::istringstream is(datastring, std::ios_base::binary);
|
||||||
|
|
||||||
@ -2264,7 +2263,7 @@ void Client::sendNodemetaFields(v3s16 p, const std::string &formname,
|
|||||||
Send(0, data, true);
|
Send(0, data, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::sendInventoryFields(const std::string &formname,
|
void Client::sendInventoryFields(const std::string &formname,
|
||||||
const std::map<std::string, std::string> &fields)
|
const std::map<std::string, std::string> &fields)
|
||||||
{
|
{
|
||||||
std::ostringstream os(std::ios_base::binary);
|
std::ostringstream os(std::ios_base::binary);
|
||||||
@ -2468,7 +2467,7 @@ void Client::sendPlayerPos()
|
|||||||
writeV3S32(&data[2], position);
|
writeV3S32(&data[2], position);
|
||||||
writeV3S32(&data[2+12], speed);
|
writeV3S32(&data[2+12], speed);
|
||||||
writeS32(&data[2+12+12], pitch);
|
writeS32(&data[2+12+12], pitch);
|
||||||
writeS32(&data[2+12+12+4], yaw);
|
writeS32(&data[2+12+12+4], yaw);
|
||||||
writeU32(&data[2+12+12+4+4], keyPressed);
|
writeU32(&data[2+12+12+4+4], keyPressed);
|
||||||
// Send as unreliable
|
// Send as unreliable
|
||||||
Send(0, data, false);
|
Send(0, data, false);
|
||||||
|
@ -50,9 +50,6 @@ ClientMap::ClientMap(
|
|||||||
m_camera_direction(0,0,1),
|
m_camera_direction(0,0,1),
|
||||||
m_camera_fov(M_PI)
|
m_camera_fov(M_PI)
|
||||||
{
|
{
|
||||||
m_camera_mutex.Init();
|
|
||||||
assert(m_camera_mutex.IsInitialized());
|
|
||||||
|
|
||||||
m_box = core::aabbox3d<f32>(-BS*1000000,-BS*1000000,-BS*1000000,
|
m_box = core::aabbox3d<f32>(-BS*1000000,-BS*1000000,-BS*1000000,
|
||||||
BS*1000000,BS*1000000,BS*1000000);
|
BS*1000000,BS*1000000,BS*1000000);
|
||||||
}
|
}
|
||||||
|
@ -206,7 +206,6 @@ JMutex g_debug_stacks_mutex;
|
|||||||
|
|
||||||
void debug_stacks_init()
|
void debug_stacks_init()
|
||||||
{
|
{
|
||||||
g_debug_stacks_mutex.Init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void debug_stacks_print_to(std::ostream &os)
|
void debug_stacks_print_to(std::ostream &os)
|
||||||
|
@ -23,6 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "server.h"
|
#include "server.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
|
#include "jthread/jevent.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
#include "environment.h"
|
#include "environment.h"
|
||||||
#include "util/container.h"
|
#include "util/container.h"
|
||||||
@ -106,7 +107,6 @@ EmergeManager::EmergeManager(IGameDef *gamedef) {
|
|||||||
|
|
||||||
mapgen_debug_info = g_settings->getBool("enable_mapgen_debug_info");
|
mapgen_debug_info = g_settings->getBool("enable_mapgen_debug_info");
|
||||||
|
|
||||||
queuemutex.Init();
|
|
||||||
|
|
||||||
int nthreads;
|
int nthreads;
|
||||||
if (g_settings->get("num_emerge_threads").empty()) {
|
if (g_settings->get("num_emerge_threads").empty()) {
|
||||||
@ -385,7 +385,7 @@ void EmergeManager::registerMapgen(std::string mgname, MapgenFactory *mgfactory)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////// Emerge Thread //////////////////////////////////
|
////////////////////////////// Emerge Thread //////////////////////////////////
|
||||||
|
|
||||||
bool EmergeThread::popBlockEmerge(v3s16 *pos, u8 *flags) {
|
bool EmergeThread::popBlockEmerge(v3s16 *pos, u8 *flags) {
|
||||||
std::map<v3s16, BlockEmergeData *>::iterator iter;
|
std::map<v3s16, BlockEmergeData *>::iterator iter;
|
||||||
@ -399,7 +399,7 @@ bool EmergeThread::popBlockEmerge(v3s16 *pos, u8 *flags) {
|
|||||||
*pos = p;
|
*pos = p;
|
||||||
|
|
||||||
iter = emerge->blocks_enqueued.find(p);
|
iter = emerge->blocks_enqueued.find(p);
|
||||||
if (iter == emerge->blocks_enqueued.end())
|
if (iter == emerge->blocks_enqueued.end())
|
||||||
return false; //uh oh, queue and map out of sync!!
|
return false; //uh oh, queue and map out of sync!!
|
||||||
|
|
||||||
BlockEmergeData *bedata = iter->second;
|
BlockEmergeData *bedata = iter->second;
|
||||||
@ -414,11 +414,11 @@ bool EmergeThread::popBlockEmerge(v3s16 *pos, u8 *flags) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool EmergeThread::getBlockOrStartGen(v3s16 p, MapBlock **b,
|
bool EmergeThread::getBlockOrStartGen(v3s16 p, MapBlock **b,
|
||||||
BlockMakeData *data, bool allow_gen) {
|
BlockMakeData *data, bool allow_gen) {
|
||||||
v2s16 p2d(p.X, p.Z);
|
v2s16 p2d(p.X, p.Z);
|
||||||
//envlock: usually takes <=1ms, sometimes 90ms or ~400ms to acquire
|
//envlock: usually takes <=1ms, sometimes 90ms or ~400ms to acquire
|
||||||
JMutexAutoLock envlock(m_server->m_env_mutex);
|
JMutexAutoLock envlock(m_server->m_env_mutex);
|
||||||
|
|
||||||
// Load sector if it isn't loaded
|
// Load sector if it isn't loaded
|
||||||
if (map->getSectorNoGenerateNoEx(p2d) == NULL)
|
if (map->getSectorNoGenerateNoEx(p2d) == NULL)
|
||||||
@ -496,7 +496,7 @@ void *EmergeThread::Thread() {
|
|||||||
|
|
||||||
{
|
{
|
||||||
//envlock: usually 0ms, but can take either 30 or 400ms to acquire
|
//envlock: usually 0ms, but can take either 30 or 400ms to acquire
|
||||||
JMutexAutoLock envlock(m_server->m_env_mutex);
|
JMutexAutoLock envlock(m_server->m_env_mutex);
|
||||||
ScopeProfiler sp(g_profiler, "EmergeThread: after "
|
ScopeProfiler sp(g_profiler, "EmergeThread: after "
|
||||||
"Mapgen::makeChunk (envlock)", SPT_AVG);
|
"Mapgen::makeChunk (envlock)", SPT_AVG);
|
||||||
|
|
||||||
@ -513,7 +513,7 @@ void *EmergeThread::Thread() {
|
|||||||
|
|
||||||
// Ignore map edit events, they will not need to be sent
|
// Ignore map edit events, they will not need to be sent
|
||||||
// to anybody because the block hasn't been sent to anybody
|
// to anybody because the block hasn't been sent to anybody
|
||||||
MapEditEventAreaIgnorer
|
MapEditEventAreaIgnorer
|
||||||
ign(&m_server->m_ignore_map_edit_events_area,
|
ign(&m_server->m_ignore_map_edit_events_area,
|
||||||
VoxelArea(minp, maxp));
|
VoxelArea(minp, maxp));
|
||||||
{ // takes about 90ms with -O1 on an e3-1230v2
|
{ // takes about 90ms with -O1 on an e3-1230v2
|
||||||
|
@ -3,11 +3,13 @@ if( UNIX )
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/pthread/jmutex.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/pthread/jmutex.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/pthread/jthread.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/pthread/jthread.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/pthread/jsemaphore.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/pthread/jsemaphore.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/pthread/jevent.cpp
|
||||||
PARENT_SCOPE)
|
PARENT_SCOPE)
|
||||||
else( UNIX )
|
else( UNIX )
|
||||||
set(JTHREAD_SRCS
|
set(JTHREAD_SRCS
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/win32/jmutex.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/win32/jmutex.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/win32/jthread.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/win32/jthread.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/win32/jsemaphore.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/win32/jsemaphore.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/win32/jevent.cpp
|
||||||
PARENT_SCOPE)
|
PARENT_SCOPE)
|
||||||
endif( UNIX )
|
endif( UNIX )
|
||||||
|
52
src/jthread/jevent.h
Normal file
52
src/jthread/jevent.h
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
This file is a part of the JThread package, which contains some object-
|
||||||
|
oriented thread wrappers for different thread implementations.
|
||||||
|
|
||||||
|
Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
copy of this software and associated documentation files (the "Software"),
|
||||||
|
to deal in the Software without restriction, including without limitation
|
||||||
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef JEVENT_H_
|
||||||
|
#define JEVENT_H_
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
#else
|
||||||
|
#include <semaphore.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
class Event {
|
||||||
|
#ifdef _WIN32
|
||||||
|
HANDLE hEvent;
|
||||||
|
#else
|
||||||
|
sem_t sem;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
public:
|
||||||
|
Event();
|
||||||
|
~Event();
|
||||||
|
void wait();
|
||||||
|
void signal();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* JEVENT_H_ */
|
@ -53,10 +53,8 @@ class JMutex
|
|||||||
public:
|
public:
|
||||||
JMutex();
|
JMutex();
|
||||||
~JMutex();
|
~JMutex();
|
||||||
int Init();
|
|
||||||
int Lock();
|
int Lock();
|
||||||
int Unlock();
|
int Unlock();
|
||||||
bool IsInitialized() { return initialized; }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
#if (defined(WIN32) || defined(_WIN32_WCE))
|
#if (defined(WIN32) || defined(_WIN32_WCE))
|
||||||
@ -76,57 +74,6 @@ private:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif // WIN32
|
#endif // WIN32
|
||||||
bool initialized;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
|
|
||||||
class Event {
|
|
||||||
HANDLE hEvent;
|
|
||||||
|
|
||||||
public:
|
|
||||||
Event() {
|
|
||||||
hEvent = CreateEvent(NULL, 0, 0, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
~Event() {
|
|
||||||
CloseHandle(hEvent);
|
|
||||||
}
|
|
||||||
|
|
||||||
void wait() {
|
|
||||||
WaitForSingleObject(hEvent, INFINITE);
|
|
||||||
}
|
|
||||||
|
|
||||||
void signal() {
|
|
||||||
SetEvent(hEvent);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include <semaphore.h>
|
|
||||||
|
|
||||||
class Event {
|
|
||||||
sem_t sem;
|
|
||||||
|
|
||||||
public:
|
|
||||||
Event() {
|
|
||||||
sem_init(&sem, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
~Event() {
|
|
||||||
sem_destroy(&sem);
|
|
||||||
}
|
|
||||||
|
|
||||||
void wait() {
|
|
||||||
sem_wait(&sem);
|
|
||||||
}
|
|
||||||
|
|
||||||
void signal() {
|
|
||||||
sem_post(&sem);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // JMUTEX_H
|
#endif // JMUTEX_H
|
||||||
|
@ -74,7 +74,6 @@ private:
|
|||||||
|
|
||||||
JMutex runningmutex;
|
JMutex runningmutex;
|
||||||
JMutex continuemutex,continuemutex2;
|
JMutex continuemutex,continuemutex2;
|
||||||
bool mutexinit;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // JTHREAD_H
|
#endif // JTHREAD_H
|
||||||
|
44
src/jthread/pthread/jevent.cpp
Normal file
44
src/jthread/pthread/jevent.cpp
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
This file is a part of the JThread package, which contains some object-
|
||||||
|
oriented thread wrappers for different thread implementations.
|
||||||
|
|
||||||
|
Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
copy of this software and associated documentation files (the "Software"),
|
||||||
|
to deal in the Software without restriction, including without limitation
|
||||||
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
*/
|
||||||
|
#include <assert.h>
|
||||||
|
#include "jthread/jevent.h"
|
||||||
|
|
||||||
|
Event::Event() {
|
||||||
|
assert(sem_init(&sem, 0, 0) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
Event::~Event() {
|
||||||
|
assert(sem_destroy(&sem) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Event::wait() {
|
||||||
|
assert(sem_wait(&sem) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Event::signal() {
|
||||||
|
assert(sem_post(&sem) == 0);
|
||||||
|
}
|
@ -24,40 +24,27 @@
|
|||||||
DEALINGS IN THE SOFTWARE.
|
DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
#include <assert.h>
|
||||||
#include "jthread/jmutex.h"
|
#include "jthread/jmutex.h"
|
||||||
|
|
||||||
JMutex::JMutex()
|
JMutex::JMutex()
|
||||||
{
|
{
|
||||||
pthread_mutex_init(&mutex,NULL);
|
assert(pthread_mutex_init(&mutex,NULL) == 0);
|
||||||
initialized = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JMutex::~JMutex()
|
JMutex::~JMutex()
|
||||||
{
|
{
|
||||||
if (initialized)
|
assert(pthread_mutex_destroy(&mutex) == 0);
|
||||||
pthread_mutex_destroy(&mutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
int JMutex::Init()
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int JMutex::Lock()
|
int JMutex::Lock()
|
||||||
{
|
{
|
||||||
if (!initialized)
|
assert(pthread_mutex_lock(&mutex) == 0);
|
||||||
return ERR_JMUTEX_NOTINIT;
|
|
||||||
|
|
||||||
pthread_mutex_lock(&mutex);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int JMutex::Unlock()
|
int JMutex::Unlock()
|
||||||
{
|
{
|
||||||
if (!initialized)
|
assert(pthread_mutex_unlock(&mutex) == 0);
|
||||||
return ERR_JMUTEX_NOTINIT;
|
|
||||||
|
|
||||||
pthread_mutex_unlock(&mutex);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -16,26 +16,27 @@ You should have received a copy of the GNU Lesser General Public License along
|
|||||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
*/
|
*/
|
||||||
|
#include <assert.h>
|
||||||
#include "jthread/jsemaphore.h"
|
#include "jthread/jsemaphore.h"
|
||||||
|
|
||||||
JSemaphore::JSemaphore() {
|
JSemaphore::JSemaphore() {
|
||||||
sem_init(&m_semaphore,0,0);
|
assert(sem_init(&m_semaphore,0,0) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
JSemaphore::~JSemaphore() {
|
JSemaphore::~JSemaphore() {
|
||||||
sem_destroy(&m_semaphore);
|
assert(sem_destroy(&m_semaphore) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
JSemaphore::JSemaphore(int initval) {
|
JSemaphore::JSemaphore(int initval) {
|
||||||
sem_init(&m_semaphore,0,initval);
|
assert(sem_init(&m_semaphore,0,initval) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JSemaphore::Post() {
|
void JSemaphore::Post() {
|
||||||
sem_post(&m_semaphore);
|
assert(sem_post(&m_semaphore) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JSemaphore::Wait() {
|
void JSemaphore::Wait() {
|
||||||
sem_wait(&m_semaphore);
|
assert(sem_wait(&m_semaphore) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int JSemaphore::GetValue() {
|
int JSemaphore::GetValue() {
|
||||||
|
@ -33,7 +33,6 @@
|
|||||||
JThread::JThread()
|
JThread::JThread()
|
||||||
{
|
{
|
||||||
retval = NULL;
|
retval = NULL;
|
||||||
mutexinit = false;
|
|
||||||
requeststop = false;
|
requeststop = false;
|
||||||
running = false;
|
running = false;
|
||||||
}
|
}
|
||||||
@ -53,26 +52,6 @@ int JThread::Start()
|
|||||||
{
|
{
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (!mutexinit)
|
|
||||||
{
|
|
||||||
if (!runningmutex.IsInitialized())
|
|
||||||
{
|
|
||||||
if (runningmutex.Init() < 0)
|
|
||||||
return ERR_JTHREAD_CANTINITMUTEX;
|
|
||||||
}
|
|
||||||
if (!continuemutex.IsInitialized())
|
|
||||||
{
|
|
||||||
if (continuemutex.Init() < 0)
|
|
||||||
return ERR_JTHREAD_CANTINITMUTEX;
|
|
||||||
}
|
|
||||||
if (!continuemutex2.IsInitialized())
|
|
||||||
{
|
|
||||||
if (continuemutex2.Init() < 0)
|
|
||||||
return ERR_JTHREAD_CANTINITMUTEX;
|
|
||||||
}
|
|
||||||
mutexinit = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
runningmutex.Lock();
|
runningmutex.Lock();
|
||||||
if (running)
|
if (running)
|
||||||
{
|
{
|
||||||
|
43
src/jthread/win32/jevent.cpp
Normal file
43
src/jthread/win32/jevent.cpp
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
This file is a part of the JThread package, which contains some object-
|
||||||
|
oriented thread wrappers for different thread implementations.
|
||||||
|
|
||||||
|
Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
copy of this software and associated documentation files (the "Software"),
|
||||||
|
to deal in the Software without restriction, including without limitation
|
||||||
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
*/
|
||||||
|
#include "jthread/jevent.h"
|
||||||
|
|
||||||
|
Event::Event() {
|
||||||
|
hEvent = CreateEvent(NULL, 0, 0, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
Event::~Event() {
|
||||||
|
CloseHandle(hEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Event::wait() {
|
||||||
|
WaitForSingleObject(hEvent, INFINITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Event::signal() {
|
||||||
|
SetEvent(hEvent);
|
||||||
|
}
|
@ -24,7 +24,7 @@
|
|||||||
DEALINGS IN THE SOFTWARE.
|
DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
#include <assert.h>
|
||||||
#include "jthread/jmutex.h"
|
#include "jthread/jmutex.h"
|
||||||
|
|
||||||
JMutex::JMutex()
|
JMutex::JMutex()
|
||||||
@ -33,31 +33,21 @@ JMutex::JMutex()
|
|||||||
InitializeCriticalSection(&mutex);
|
InitializeCriticalSection(&mutex);
|
||||||
#else
|
#else
|
||||||
mutex = CreateMutex(NULL,FALSE,NULL);
|
mutex = CreateMutex(NULL,FALSE,NULL);
|
||||||
if (mutex == NULL)
|
assert(mutex != NULL);
|
||||||
return ERR_JMUTEX_CANTCREATEMUTEX;
|
|
||||||
#endif // JMUTEX_CRITICALSECTION
|
#endif // JMUTEX_CRITICALSECTION
|
||||||
initialized = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JMutex::~JMutex()
|
JMutex::~JMutex()
|
||||||
{
|
{
|
||||||
if (initialized)
|
|
||||||
#ifdef JMUTEX_CRITICALSECTION
|
#ifdef JMUTEX_CRITICALSECTION
|
||||||
DeleteCriticalSection(&mutex);
|
DeleteCriticalSection(&mutex);
|
||||||
#else
|
#else
|
||||||
CloseHandle(mutex);
|
CloseHandle(mutex);
|
||||||
#endif // JMUTEX_CRITICALSECTION
|
#endif // JMUTEX_CRITICALSECTION
|
||||||
}
|
}
|
||||||
|
|
||||||
int JMutex::Init()
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int JMutex::Lock()
|
int JMutex::Lock()
|
||||||
{
|
{
|
||||||
if (!initialized)
|
|
||||||
return ERR_JMUTEX_NOTINIT;
|
|
||||||
#ifdef JMUTEX_CRITICALSECTION
|
#ifdef JMUTEX_CRITICALSECTION
|
||||||
EnterCriticalSection(&mutex);
|
EnterCriticalSection(&mutex);
|
||||||
#else
|
#else
|
||||||
@ -68,8 +58,6 @@ int JMutex::Lock()
|
|||||||
|
|
||||||
int JMutex::Unlock()
|
int JMutex::Unlock()
|
||||||
{
|
{
|
||||||
if (!initialized)
|
|
||||||
return ERR_JMUTEX_NOTINIT;
|
|
||||||
#ifdef JMUTEX_CRITICALSECTION
|
#ifdef JMUTEX_CRITICALSECTION
|
||||||
LeaveCriticalSection(&mutex);
|
LeaveCriticalSection(&mutex);
|
||||||
#else
|
#else
|
||||||
|
@ -34,7 +34,6 @@
|
|||||||
JThread::JThread()
|
JThread::JThread()
|
||||||
{
|
{
|
||||||
retval = NULL;
|
retval = NULL;
|
||||||
mutexinit = false;
|
|
||||||
requeststop = false;
|
requeststop = false;
|
||||||
running = false;
|
running = false;
|
||||||
}
|
}
|
||||||
@ -52,25 +51,6 @@ void JThread::Stop() {
|
|||||||
|
|
||||||
int JThread::Start()
|
int JThread::Start()
|
||||||
{
|
{
|
||||||
if (!mutexinit)
|
|
||||||
{
|
|
||||||
if (!runningmutex.IsInitialized())
|
|
||||||
{
|
|
||||||
if (runningmutex.Init() < 0)
|
|
||||||
return ERR_JTHREAD_CANTINITMUTEX;
|
|
||||||
}
|
|
||||||
if (!continuemutex.IsInitialized())
|
|
||||||
{
|
|
||||||
if (continuemutex.Init() < 0)
|
|
||||||
return ERR_JTHREAD_CANTINITMUTEX;
|
|
||||||
}
|
|
||||||
if (!continuemutex2.IsInitialized())
|
|
||||||
{
|
|
||||||
if (continuemutex2.Init() < 0)
|
|
||||||
return ERR_JTHREAD_CANTINITMUTEX;
|
|
||||||
} mutexinit = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
runningmutex.Lock();
|
runningmutex.Lock();
|
||||||
if (running)
|
if (running)
|
||||||
{
|
{
|
||||||
|
@ -86,7 +86,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USE_CURL
|
#if USE_CURL
|
||||||
#include "curl.h"
|
#include "curl/curl.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -708,7 +708,6 @@ void SpeedTests()
|
|||||||
TimeTaker timer("Testing mutex speed");
|
TimeTaker timer("Testing mutex speed");
|
||||||
|
|
||||||
JMutex m;
|
JMutex m;
|
||||||
m.Init();
|
|
||||||
u32 n = 0;
|
u32 n = 0;
|
||||||
u32 i = 0;
|
u32 i = 0;
|
||||||
do{
|
do{
|
||||||
|
18
src/map.cpp
18
src/map.cpp
@ -75,8 +75,6 @@ Map::Map(std::ostream &dout, IGameDef *gamedef):
|
|||||||
m_gamedef(gamedef),
|
m_gamedef(gamedef),
|
||||||
m_sector_cache(NULL)
|
m_sector_cache(NULL)
|
||||||
{
|
{
|
||||||
/*m_sector_mutex.Init();
|
|
||||||
assert(m_sector_mutex.IsInitialized());*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Map::~Map()
|
Map::~Map()
|
||||||
@ -1681,7 +1679,7 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
|
|||||||
v3s16 p0 = m_transforming_liquid.pop_front();
|
v3s16 p0 = m_transforming_liquid.pop_front();
|
||||||
u16 total_level = 0;
|
u16 total_level = 0;
|
||||||
// surrounding flowing liquid nodes
|
// surrounding flowing liquid nodes
|
||||||
NodeNeighbor neighbors[7];
|
NodeNeighbor neighbors[7];
|
||||||
// current level of every block
|
// current level of every block
|
||||||
s8 liquid_levels[7] = {-1, -1, -1, -1, -1, -1, -1};
|
s8 liquid_levels[7] = {-1, -1, -1, -1, -1, -1, -1};
|
||||||
// target levels
|
// target levels
|
||||||
@ -1782,8 +1780,8 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
|
|||||||
liquid_levels[D_BOTTOM] == LIQUID_LEVEL_SOURCE &&
|
liquid_levels[D_BOTTOM] == LIQUID_LEVEL_SOURCE &&
|
||||||
total_level >= LIQUID_LEVEL_SOURCE * can_liquid_same_level-
|
total_level >= LIQUID_LEVEL_SOURCE * can_liquid_same_level-
|
||||||
(can_liquid_same_level - relax) &&
|
(can_liquid_same_level - relax) &&
|
||||||
can_liquid_same_level >= relax + 1) {
|
can_liquid_same_level >= relax + 1) {
|
||||||
total_level = LIQUID_LEVEL_SOURCE * can_liquid_same_level;
|
total_level = LIQUID_LEVEL_SOURCE * can_liquid_same_level;
|
||||||
}
|
}
|
||||||
|
|
||||||
// prevent lakes in air above unloaded blocks
|
// prevent lakes in air above unloaded blocks
|
||||||
@ -1792,9 +1790,9 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// calculate self level 5 blocks
|
// calculate self level 5 blocks
|
||||||
u8 want_level =
|
u8 want_level =
|
||||||
total_level >= LIQUID_LEVEL_SOURCE * can_liquid_same_level
|
total_level >= LIQUID_LEVEL_SOURCE * can_liquid_same_level
|
||||||
? LIQUID_LEVEL_SOURCE
|
? LIQUID_LEVEL_SOURCE
|
||||||
: total_level / can_liquid_same_level;
|
: total_level / can_liquid_same_level;
|
||||||
total_level -= want_level * can_liquid_same_level;
|
total_level -= want_level * can_liquid_same_level;
|
||||||
|
|
||||||
@ -1852,7 +1850,7 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
if (total_level > 0) //|| flowed != volume)
|
if (total_level > 0) //|| flowed != volume)
|
||||||
infostream <<" AFTER level=" << (int)total_level
|
infostream <<" AFTER level=" << (int)total_level
|
||||||
//<< " flowed="<<flowed<< " volume=" << volume
|
//<< " flowed="<<flowed<< " volume=" << volume
|
||||||
<< " wantsame="<<(int)want_level<< " top="
|
<< " wantsame="<<(int)want_level<< " top="
|
||||||
<< (int)liquid_levels_want[D_TOP]<< " topwas="
|
<< (int)liquid_levels_want[D_TOP]<< " topwas="
|
||||||
@ -1862,7 +1860,7 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
|
|||||||
|
|
||||||
//u8 changed = 0;
|
//u8 changed = 0;
|
||||||
for (u16 i = 0; i < 7; i++) {
|
for (u16 i = 0; i < 7; i++) {
|
||||||
if (liquid_levels_want[i] < 0 || !neighbors[i].l)
|
if (liquid_levels_want[i] < 0 || !neighbors[i].l)
|
||||||
continue;
|
continue;
|
||||||
MapNode & n0 = neighbors[i].n;
|
MapNode & n0 = neighbors[i].n;
|
||||||
p0 = neighbors[i].p;
|
p0 = neighbors[i].p;
|
||||||
@ -1909,7 +1907,7 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
|
|||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
if (
|
if (
|
||||||
new_node_content == n0.getContent()
|
new_node_content == n0.getContent()
|
||||||
&& (nodemgr->get(n0.getContent()).liquid_type != LIQUID_FLOWING ||
|
&& (nodemgr->get(n0.getContent()).liquid_type != LIQUID_FLOWING ||
|
||||||
(n0.getLevel(nodemgr) == (u8)new_node_level
|
(n0.getLevel(nodemgr) == (u8)new_node_level
|
||||||
//&& ((n0.param2 & LIQUID_FLOW_DOWN_MASK) ==
|
//&& ((n0.param2 & LIQUID_FLOW_DOWN_MASK) ==
|
||||||
|
@ -68,7 +68,6 @@ MapBlock::MapBlock(Map *parent, v3s16 pos, IGameDef *gamedef, bool dummy):
|
|||||||
reallocate();
|
reallocate();
|
||||||
|
|
||||||
#ifndef SERVER
|
#ifndef SERVER
|
||||||
//mesh_mutex.Init();
|
|
||||||
mesh = NULL;
|
mesh = NULL;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,6 @@ class Profiler
|
|||||||
public:
|
public:
|
||||||
Profiler()
|
Profiler()
|
||||||
{
|
{
|
||||||
m_mutex.Init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void add(const std::string &name, float value)
|
void add(const std::string &name, float value)
|
||||||
|
@ -55,7 +55,6 @@ static void makeMutex()
|
|||||||
{
|
{
|
||||||
if(!g_mutex){
|
if(!g_mutex){
|
||||||
g_mutex = new JMutex();
|
g_mutex = new JMutex();
|
||||||
g_mutex->Init();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,8 +62,6 @@ public:
|
|||||||
|
|
||||||
ScriptApiBase::ScriptApiBase()
|
ScriptApiBase::ScriptApiBase()
|
||||||
{
|
{
|
||||||
m_luastackmutex.Init();
|
|
||||||
|
|
||||||
#ifdef SCRIPTAPI_LOCK_DEBUG
|
#ifdef SCRIPTAPI_LOCK_DEBUG
|
||||||
m_locked = false;
|
m_locked = false;
|
||||||
#endif
|
#endif
|
||||||
|
@ -36,8 +36,6 @@ AsyncEngine::AsyncEngine() :
|
|||||||
m_initDone(false),
|
m_initDone(false),
|
||||||
m_JobIdCounter(0)
|
m_JobIdCounter(0)
|
||||||
{
|
{
|
||||||
assert(m_JobQueueMutex.Init() == 0);
|
|
||||||
assert(m_ResultQueueMutex.Init() == 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
@ -674,9 +674,6 @@ Server::Server(
|
|||||||
m_emergethread_trigger_timer = 0.0;
|
m_emergethread_trigger_timer = 0.0;
|
||||||
m_savemap_timer = 0.0;
|
m_savemap_timer = 0.0;
|
||||||
|
|
||||||
m_env_mutex.Init();
|
|
||||||
m_con_mutex.Init();
|
|
||||||
m_step_dtime_mutex.Init();
|
|
||||||
m_step_dtime = 0.0;
|
m_step_dtime = 0.0;
|
||||||
|
|
||||||
if(path_world == "")
|
if(path_world == "")
|
||||||
@ -722,7 +719,7 @@ Server::Server(
|
|||||||
m_mods = modconf.getMods();
|
m_mods = modconf.getMods();
|
||||||
std::vector<ModSpec> unsatisfied_mods = modconf.getUnsatisfiedMods();
|
std::vector<ModSpec> unsatisfied_mods = modconf.getUnsatisfiedMods();
|
||||||
// complain about mods with unsatisfied dependencies
|
// complain about mods with unsatisfied dependencies
|
||||||
if(!modconf.isConsistent())
|
if(!modconf.isConsistent())
|
||||||
{
|
{
|
||||||
for(std::vector<ModSpec>::iterator it = unsatisfied_mods.begin();
|
for(std::vector<ModSpec>::iterator it = unsatisfied_mods.begin();
|
||||||
it != unsatisfied_mods.end(); ++it)
|
it != unsatisfied_mods.end(); ++it)
|
||||||
@ -741,10 +738,10 @@ Server::Server(
|
|||||||
worldmt_settings.readConfigFile(worldmt.c_str());
|
worldmt_settings.readConfigFile(worldmt.c_str());
|
||||||
std::vector<std::string> names = worldmt_settings.getNames();
|
std::vector<std::string> names = worldmt_settings.getNames();
|
||||||
std::set<std::string> load_mod_names;
|
std::set<std::string> load_mod_names;
|
||||||
for(std::vector<std::string>::iterator it = names.begin();
|
for(std::vector<std::string>::iterator it = names.begin();
|
||||||
it != names.end(); ++it)
|
it != names.end(); ++it)
|
||||||
{
|
{
|
||||||
std::string name = *it;
|
std::string name = *it;
|
||||||
if(name.compare(0,9,"load_mod_")==0 && worldmt_settings.getBool(name))
|
if(name.compare(0,9,"load_mod_")==0 && worldmt_settings.getBool(name))
|
||||||
load_mod_names.insert(name.substr(9));
|
load_mod_names.insert(name.substr(9));
|
||||||
}
|
}
|
||||||
@ -756,7 +753,7 @@ Server::Server(
|
|||||||
it != unsatisfied_mods.end(); ++it)
|
it != unsatisfied_mods.end(); ++it)
|
||||||
load_mod_names.erase((*it).name);
|
load_mod_names.erase((*it).name);
|
||||||
if(!load_mod_names.empty())
|
if(!load_mod_names.empty())
|
||||||
{
|
{
|
||||||
errorstream << "The following mods could not be found:";
|
errorstream << "The following mods could not be found:";
|
||||||
for(std::set<std::string>::iterator it = load_mod_names.begin();
|
for(std::set<std::string>::iterator it = load_mod_names.begin();
|
||||||
it != load_mod_names.end(); ++it)
|
it != load_mod_names.end(); ++it)
|
||||||
|
@ -60,7 +60,6 @@ class Settings
|
|||||||
public:
|
public:
|
||||||
Settings()
|
Settings()
|
||||||
{
|
{
|
||||||
m_mutex.Init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void writeLines(std::ostream &os)
|
void writeLines(std::ostream &os)
|
||||||
@ -77,7 +76,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// return all keys used
|
// return all keys used
|
||||||
std::vector<std::string> getNames(){
|
std::vector<std::string> getNames(){
|
||||||
std::vector<std::string> names;
|
std::vector<std::string> names;
|
||||||
for(std::map<std::string, std::string>::iterator
|
for(std::map<std::string, std::string>::iterator
|
||||||
@ -86,7 +85,7 @@ public:
|
|||||||
{
|
{
|
||||||
names.push_back(i->first);
|
names.push_back(i->first);
|
||||||
}
|
}
|
||||||
return names;
|
return names;
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove a setting
|
// remove a setting
|
||||||
|
@ -373,8 +373,6 @@ ShaderSource::ShaderSource(IrrlichtDevice *device):
|
|||||||
|
|
||||||
m_shader_callback = new ShaderCallback(this, "default");
|
m_shader_callback = new ShaderCallback(this, "default");
|
||||||
|
|
||||||
m_shaderinfo_cache_mutex.Init();
|
|
||||||
|
|
||||||
m_main_thread = get_current_thread_id();
|
m_main_thread = get_current_thread_id();
|
||||||
|
|
||||||
// Add a dummy ShaderInfo as the first index, named ""
|
// Add a dummy ShaderInfo as the first index, named ""
|
||||||
|
@ -433,8 +433,6 @@ TextureSource::TextureSource(IrrlichtDevice *device):
|
|||||||
{
|
{
|
||||||
assert(m_device);
|
assert(m_device);
|
||||||
|
|
||||||
m_textureinfo_cache_mutex.Init();
|
|
||||||
|
|
||||||
m_main_thread = get_current_thread_id();
|
m_main_thread = get_current_thread_id();
|
||||||
|
|
||||||
// Add a NULL TextureInfo as the first index, named ""
|
// Add a NULL TextureInfo as the first index, named ""
|
||||||
|
@ -83,8 +83,6 @@ class MutexedMap
|
|||||||
public:
|
public:
|
||||||
MutexedMap()
|
MutexedMap()
|
||||||
{
|
{
|
||||||
m_mutex.Init();
|
|
||||||
assert(m_mutex.IsInitialized());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void set(const Key &name, const Value &value)
|
void set(const Key &name, const Value &value)
|
||||||
@ -150,8 +148,6 @@ class MutexedIdGenerator
|
|||||||
public:
|
public:
|
||||||
MutexedIdGenerator()
|
MutexedIdGenerator()
|
||||||
{
|
{
|
||||||
m_mutex.Init();
|
|
||||||
assert(m_mutex.IsInitialized());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns true if found
|
// Returns true if found
|
||||||
@ -253,7 +249,6 @@ class MutexedQueue
|
|||||||
public:
|
public:
|
||||||
MutexedQueue()
|
MutexedQueue()
|
||||||
{
|
{
|
||||||
m_mutex.Init();
|
|
||||||
}
|
}
|
||||||
bool empty()
|
bool empty()
|
||||||
{
|
{
|
||||||
|
@ -32,7 +32,6 @@ public:
|
|||||||
MutexedVariable(T value):
|
MutexedVariable(T value):
|
||||||
m_value(value)
|
m_value(value)
|
||||||
{
|
{
|
||||||
m_mutex.Init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
T get()
|
T get()
|
||||||
@ -75,7 +74,6 @@ public:
|
|||||||
JThread(),
|
JThread(),
|
||||||
run(true)
|
run(true)
|
||||||
{
|
{
|
||||||
run_mutex.Init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~SimpleThread()
|
virtual ~SimpleThread()
|
||||||
|
Loading…
Reference in New Issue
Block a user