bool Events::unregisterEvent(Events::eventHandler *handler) { if (handler->type == event_input) { if (!findOther(event_input, handler->inputSpec.pin, handler->id)) { disableInputInterrupt(handler->inputSpec.interrupt); setInputHandler(handler->inputSpec.interrupt, 0); } } handler->type = event_free; return true; }
Events::eventHandler *Events::registerInput(byte input, byte mode, Events::eventCallback callback, void *data) { Events::eventHandler *result = registerEvent(event_input, callback, data); if (result == 0) { return 0; } result->inputSpec.interrupt = INTERRUPT_FOR_PIN(input); if (result->inputSpec.interrupt == -1) { return 0; } result->inputSpec.pin = input; result->inputSpec.mode = mode; if (!findOther(event_input, result->inputSpec.pin, result->id)) { setInputHandler(result->inputSpec.interrupt, inputHandler); enableInputInterrupt(result->inputSpec.interrupt, mode); } return result; }
void MarbleWidgetPrivate::setInputHandler() { setInputHandler(new MarbleWidgetInputHandler(this, m_widget)); }
InputHandler::~InputHandler() { if (_inputHandler == this) setInputHandler(_nextHandler); }
void MarbleWidgetPrivate::setInputHandler() { setInputHandler( new MarbleWidgetInputHandler( &m_presenter, m_widget ) ); }