Skip to content

Commit ca0ebb9

Browse files
committed
Revises EventHandler members & updates hash function
- converts `freq` and `eventHandler` (i.e. the callback) to `const` - removes the non-const `when` from the hash computation
1 parent 542cd4f commit ca0ebb9

File tree

3 files changed

+5
-6
lines changed

3 files changed

+5
-6
lines changed

library/include/modules/EventManager.h

+2-3
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ namespace DFHack {
4444

4545
struct EventHandler {
4646
typedef void (*callback_t)(color_ostream&, void*); //called when the event happens
47-
callback_t eventHandler;
48-
int32_t freq; //how often event is allowed to fire (in ticks) use 0 to always fire when possible
47+
const callback_t eventHandler;
48+
const int32_t freq; //how often event is allowed to fire (in ticks) use 0 to always fire when possible
4949
int32_t when = -1; //when to fire event (global tick count)
5050

5151
EventHandler(callback_t eventHandlerIn, int32_t freqIn) :
@@ -146,7 +146,6 @@ namespace std {
146146
size_t r = 17;
147147
const size_t m = 65537;
148148
r = m*(r+(intptr_t)h.eventHandler);
149-
r = m*(r+h.when);
150149
r = m*(r+h.freq);
151150
return r;
152151
}

library/modules/EventManager.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ int32_t DFHack::EventManager::registerTick(EventHandler handler, int32_t when, P
9494
}
9595
}
9696
handler.when = when;
97-
tickQueue.insert(pair<int32_t, EventHandler>(handler.when, handler));
97+
tickQueue.emplace(handler.when, handler);
9898
// we don't track this handler, this allows registerTick to retain the old behaviour of needing to re-register the tick event
9999
//handlers[EventType::TICK].insert(pair<Plugin*,EventHandler>(plugin,handler));
100100
// since the event isn't added to the handlers, we don't need to unregister these events

plugins/devel/eventExample.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,12 @@ command_result eventExample(color_ostream& out, vector<string>& parameters) {
9797
EventManager::registerTick(timeHandler, 4, plugin_self);
9898
EventManager::registerTick(timeHandler, 8, plugin_self);
9999
int32_t t = EventManager::registerTick(timeHandler, 16, plugin_self);
100-
timeHandler.freq = t;
100+
timeHandler.when = t;
101101
EventManager::unregister(EventManager::EventType::TICK, timeHandler, plugin_self);
102102
t = EventManager::registerTick(timeHandler, 32, plugin_self);
103103
t = EventManager::registerTick(timeHandler, 32, plugin_self);
104104
t = EventManager::registerTick(timeHandler, 32, plugin_self);
105-
timeHandler.freq = t;
105+
timeHandler.when = t;
106106
EventManager::unregister(EventManager::EventType::TICK, timeHandler, plugin_self);
107107
EventManager::unregister(EventManager::EventType::TICK, timeHandler, plugin_self);
108108

0 commit comments

Comments
 (0)