#include "LogService.h" #include "Static.h" #include static const char* eventValue(const InputEvent& evt); char LogService::s_valueBuf[255]; const char* LogService::eventValue(const InputEvent& evt) { switch(evt.type) { case InputEvent::Null: snprintf(s_valueBuf, sizeof(s_valueBuf), "null");break; case InputEvent::Integer: snprintf(s_valueBuf, sizeof(s_valueBuf), "%d %02x", evt.asInt(), evt.asInt());break; case InputEvent::String: snprintf(s_valueBuf, sizeof(s_valueBuf), "\"%s\"", evt.asString());break; case InputEvent::Color: snprintf(s_valueBuf, sizeof(s_valueBuf), "[%d, %d, %d]", evt.asRGB().r, evt.asRGB().g, evt.asRGB().b);break; case InputEvent::Pointer: snprintf(s_valueBuf, sizeof(s_valueBuf), "*%p", evt.as());break; default: snprintf(s_valueBuf, sizeof(s_valueBuf), "CORRUPTED");break; } return s_valueBuf; } void LogService::handleEvent(const InputEvent& evt) { if (evt.intent != InputEvent::None) { if (evt.intent != m_lastEvent.intent) { if (m_duplicateEvents > 0) { Log.trace("Suppressed reporting %d duplicate events.", m_duplicateEvents); } const char* sourceName = evt.name(); const char* valueBuf = eventValue(evt); if (sourceName == 0) { Log.trace("Event: intent: %d value: %s", evt.intent, valueBuf); } else { Log.trace("Event: intent: %s value: %s", sourceName, valueBuf); } m_duplicateEvents = 0; m_lastEvent = evt; } else { m_duplicateEvents++; } } } STATIC_ALLOC(LogService); STATIC_TASK(LogService);