Skip to content

Commit

Permalink
Misc. minor fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
kwolekr committed Jul 10, 2015
1 parent e6f0178 commit 8eb272c
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 94 deletions.
13 changes: 6 additions & 7 deletions src/client/inputhandler.h
Expand Up @@ -88,15 +88,14 @@ class MyEventReceiver : public IEventReceiver
} else if (event.EventType == irr::EET_LOG_TEXT_EVENT) {
static const enum LogMessageLevel irr_loglev_conv[] = {
LMT_VERBOSE, // ELL_DEBUG
LMT_INFO, // ELL_INFORMATION
LMT_ACTION, // ELL_WARNING
LMT_ERROR, // ELL_ERROR
LMT_ERROR, // ELL_NONE
LMT_INFO, // ELL_INFORMATION
LMT_ACTION, // ELL_WARNING
LMT_ERROR, // ELL_ERROR
LMT_ERROR, // ELL_NONE
};
assert(event.LogEvent.Level < sizeof(irr_loglev_conv));
assert(event.LogEvent.Level < ARRLEN(irr_loglev_conv));
log_printline(irr_loglev_conv[event.LogEvent.Level],
std::string("Irrlicht: ")
+ (const char*) event.LogEvent.Text);
std::string("Irrlicht: ") + (const char *)event.LogEvent.Text);
return true;
}
/* always return false in order to continue processing events */
Expand Down
2 changes: 1 addition & 1 deletion src/mapblock.cpp
Expand Up @@ -57,7 +57,7 @@ static const char *modified_reason_strings[] = {
"deactivateFarObjects: Static data moved in",
"deactivateFarObjects: Static data moved out",
"deactivateFarObjects: Static data changed considerably",
"finishBlockMake: expireDayNightDiff"
"finishBlockMake: expireDayNightDiff",
"unknown",
};

Expand Down
6 changes: 1 addition & 5 deletions src/minimap.h
Expand Up @@ -105,11 +105,7 @@ class MinimapUpdateThread : public UpdateThread {
MinimapData *data;

protected:
const char *getName()
{
return "MinimapUpdateThread";
}

const char *getName() { return "MinimapUpdateThread"; }
virtual void doUpdate();

private:
Expand Down
2 changes: 1 addition & 1 deletion src/noise.cpp
Expand Up @@ -138,7 +138,7 @@ void PcgRandom::bytes(void *out, size_t len)
*outb = r & 0xFF;
outb++;
bytes_left--;
r >>= 8;
r >>= CHAR_BIT;
}
}

Expand Down
138 changes: 58 additions & 80 deletions src/util/thread.h
Expand Up @@ -28,13 +28,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "log.h"

template<typename T>
class MutexedVariable
{
class MutexedVariable {
public:
MutexedVariable(T value):
m_value(value)
{
}
{}

T get()
{
Expand All @@ -47,13 +45,13 @@ class MutexedVariable
JMutexAutoLock lock(m_mutex);
m_value = value;
}

// You'll want to grab this in a SharedPtr
JMutexAutoLock * getLock()
JMutexAutoLock *getLock()
{
return new JMutexAutoLock(m_mutex);
}

// You pretty surely want to grab the lock when accessing this
T m_value;

Expand All @@ -65,43 +63,35 @@ class MutexedVariable
A single worker thread - multiple client threads queue framework.
*/
template<typename Key, typename T, typename Caller, typename CallerData>
class GetResult
{
class GetResult {
public:
Key key;
T item;
std::pair<Caller, CallerData> caller;
};

template<typename Key, typename T, typename Caller, typename CallerData>
class ResultQueue: public MutexedQueue< GetResult<Key, T, Caller, CallerData> >
{
class ResultQueue : public MutexedQueue<GetResult<Key, T, Caller, CallerData> > {
};

template<typename Caller, typename Data, typename Key, typename T>
class CallerInfo
{
class CallerInfo {
public:
Caller caller;
Data data;
ResultQueue< Key, T, Caller, Data>* dest;
ResultQueue<Key, T, Caller, Data> *dest;
};

template<typename Key, typename T, typename Caller, typename CallerData>
class GetRequest
{
class GetRequest {
public:
GetRequest()
{
}
GetRequest(Key a_key)
{
GetRequest() {}
~GetRequest() {}

GetRequest(Key a_key) {
key = a_key;
}
~GetRequest()
{
}


Key key;
std::list<CallerInfo<Caller, CallerData, Key, T> > callers;
};
Expand All @@ -114,49 +104,44 @@ class GetRequest
* @param CallerData data passed back to caller
*/
template<typename Key, typename T, typename Caller, typename CallerData>
class RequestQueue
{
class RequestQueue {
public:
bool empty()
{
return m_queue.empty();
}

void add(Key key, Caller caller, CallerData callerdata,
ResultQueue<Key, T, Caller, CallerData> *dest)
ResultQueue<Key, T, Caller, CallerData> *dest)
{
typename std::deque<GetRequest<Key, T, Caller, CallerData> >::iterator i;
typename std::list<CallerInfo<Caller, CallerData, Key, T> >::iterator j;

{
JMutexAutoLock lock(m_queue.getMutex());

/*
If the caller is already on the list, only update CallerData
*/
for(typename std::deque< GetRequest<Key, T, Caller, CallerData> >::iterator
i = m_queue.getQueue().begin();
i != m_queue.getQueue().end(); ++i)
{
for (i = m_queue.getQueue().begin(); i != m_queue.getQueue().end(); ++i) {
GetRequest<Key, T, Caller, CallerData> &request = *i;

if(request.key == key)
{
for(typename std::list< CallerInfo<Caller, CallerData, Key, T> >::iterator
i = request.callers.begin();
i != request.callers.end(); ++i)
{
CallerInfo<Caller, CallerData, Key, T> &ca = *i;
if(ca.caller == caller)
{
ca.data = callerdata;
return;
}
if (request.key != key)
continue;

for (j = request.callers.begin(); j != request.callers.end(); ++j) {
CallerInfo<Caller, CallerData, Key, T> &ca = *j;
if (ca.caller == caller) {
ca.data = callerdata;
return;
}
CallerInfo<Caller, CallerData, Key, T> ca;
ca.caller = caller;
ca.data = callerdata;
ca.dest = dest;
request.callers.push_back(ca);
return;
}

CallerInfo<Caller, CallerData, Key, T> ca;
ca.caller = caller;
ca.data = callerdata;
ca.dest = dest;
request.callers.push_back(ca);
return;
}
}

Expand All @@ -171,7 +156,7 @@ class RequestQueue
ca.data = callerdata;
ca.dest = dest;
request.callers.push_back(ca);

m_queue.push_back(request);
}

Expand All @@ -185,13 +170,11 @@ class RequestQueue
return m_queue.pop_frontNoEx();
}

void pushResult(GetRequest<Key, T, Caller, CallerData> req,
T res) {

for(typename std::list< CallerInfo<Caller, CallerData, Key, T> >::iterator
void pushResult(GetRequest<Key, T, Caller, CallerData> req, T res)
{
for (typename std::list<CallerInfo<Caller, CallerData, Key, T> >::iterator
i = req.callers.begin();
i != req.callers.end(); ++i)
{
i != req.callers.end(); ++i) {
CallerInfo<Caller, CallerData, Key, T> &ca = *i;

GetResult<Key,T,Caller,CallerData> result;
Expand All @@ -206,24 +189,13 @@ class RequestQueue
}

private:
MutexedQueue< GetRequest<Key, T, Caller, CallerData> > m_queue;
MutexedQueue<GetRequest<Key, T, Caller, CallerData> > m_queue;
};

class UpdateThread : public JThread
{
private:
JSemaphore m_update_sem;

protected:
virtual void doUpdate() = 0;
virtual const char *getName() = 0;

class UpdateThread : public JThread {
public:
UpdateThread()
{
}
~UpdateThread()
{}
UpdateThread() {}
virtual ~UpdateThread() {}

void deferUpdate()
{
Expand All @@ -243,30 +215,36 @@ class UpdateThread : public JThread
ThreadStarted();

const char *thread_name = getName();

log_register_thread(thread_name);
porting::setThreadName(thread_name);

DSTACK(__FUNCTION_NAME);

BEGIN_DEBUG_EXCEPTION_HANDLER

porting::setThreadName(thread_name);

while (!StopRequested()) {

m_update_sem.Wait();

// Empty the queue, just in case doUpdate() is expensive
while (m_update_sem.GetValue()) m_update_sem.Wait();
while (m_update_sem.GetValue())
m_update_sem.Wait();

if (StopRequested()) break;
if (StopRequested())
break;

doUpdate();
}

END_DEBUG_EXCEPTION_HANDLER(errorstream)

return NULL;
}

protected:
virtual void doUpdate() = 0;
virtual const char *getName() = 0;

private:
JSemaphore m_update_sem;
};

#endif
Expand Down

0 comments on commit 8eb272c

Please sign in to comment.