summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/Src/EventHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/InputCommon/Src/EventHandler.cpp')
-rw-r--r--Source/Core/InputCommon/Src/EventHandler.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/Source/Core/InputCommon/Src/EventHandler.cpp b/Source/Core/InputCommon/Src/EventHandler.cpp
index 465a73ca4d..9565e0bce6 100644
--- a/Source/Core/InputCommon/Src/EventHandler.cpp
+++ b/Source/Core/InputCommon/Src/EventHandler.cpp
@@ -8,8 +8,8 @@ EventHandler *EventHandler::m_Instance = 0;
EventHandler::EventHandler() {
for (int i=0; i<NUMKEYS; i++)
- for (int j=0; j<NUMMODS; j++)
- keys[i][j] = NULL;
+ for (int j=0; j<NUMMODS; j++)
+ keys[i][j] = NULL;
// memset(keys, sizeof(listenFuncPtr) * NUMKEYS*NUMMODS, 0);
memset(mouse, sizeof(listenFuncPtr) * (sf::Mouse::Count+1), 0);
memset(joys, sizeof(listenFuncPtr) * (sf::Joy::Count+1), 0);
@@ -20,25 +20,29 @@ EventHandler::~EventHandler() {
}
EventHandler *EventHandler::GetInstance() {
+ fprintf(stderr, "handler instance %p\n", m_Instance);
+
if (! m_Instance)
m_Instance = new EventHandler();
-
return m_Instance;
}
void EventHandler::Destroy() {
if (m_Instance)
delete m_Instance;
-
+ fprintf(stderr, "deleting instance %p\n", m_Instance);
m_Instance = 0;
}
bool EventHandler::RegisterEventListener(listenFuncPtr func, Keys key) {
if (key.inputType == KeyboardInput) {
- // fprintf(stderr, "Registering %d:%d %p\n", key.keyCode, key.mods, func);
+ fprintf(stderr, "Registering %d:%d %p\n", key.keyCode, key.mods, func);
if (key.keyCode == sf::Key::Count || key.mods >= NUMMODS ||
- key.keyCode >= NUMKEYS || keys[key.keyCode][key.mods])
+ key.keyCode >= NUMKEYS)
return false;
+ if (keys[key.keyCode][key.mods] && keys[key.keyCode][key.mods] != func)
+ return false
+;
keys[key.keyCode][key.mods] = func;
} else if (key.inputType == MouseInput) {
if (mouse[key.mouseButton])
@@ -68,12 +72,15 @@ void EventHandler::Update() {
for (unsigned int i = 0; i < eventQueue.size();i++) {
sf::Event ev = eventQueue.front();
eventQueue.pop();
- keys[ev.Key.Code][ev.Key.Alt+2*ev.Key.Shift+4*ev.Key.Control](ev);
+ fprintf(stderr, "Updating event type %d code %d mod %d func %p\n", ev.Type, ev.Key.Code, ev.Key.Alt+2*ev.Key.Shift+4*ev.Key.Control, keys[ev.Key.Code][ev.Key.Alt+2*ev.Key.Shift+4*ev.Key.Control]);
+ if(keys[ev.Key.Code][ev.Key.Alt+2*ev.Key.Shift+4*ev.Key.Control])
+ keys[ev.Key.Code][ev.Key.Alt+2*ev.Key.Shift+4*ev.Key.Control](ev);
}
}
bool EventHandler::addEvent(sf::Event *ev) {
eventQueue.push(*ev);
+ fprintf(stderr, "Got event type %d code %d\n", ev->Type, ev->Key.Code);
return true;
}