X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finput%2Fandroid%2Ftouchscreen.cpp;h=4e443b5e0529eda29fd4a7064cbf8456b245100b;hb=ff0d9665e5753f24956273483a52c00ac91ed5f2;hp=bfbf7aaa8181c78aa73373fddf56de71b989f374;hpb=1d7113259625a91f5f6d2f53365aad22ae744689;p=libs%2Fgui.git diff --git a/source/input/android/touchscreen.cpp b/source/input/android/touchscreen.cpp index bfbf7aa..4e443b5 100644 --- a/source/input/android/touchscreen.cpp +++ b/source/input/android/touchscreen.cpp @@ -1,10 +1,49 @@ +#include #include "touchscreen.h" namespace Msp { namespace Input { -void Touchscreen::input_event(const Graphics::Window::Event &) +bool Touchscreen::is_available() { + return true; +} + +void Touchscreen::input_event(const Graphics::Window::Event &event) +{ + int type = AInputEvent_getType(event.aevent); + if(type!=AINPUT_EVENT_TYPE_MOTION) + return; + + int source = AInputEvent_getSource(event.aevent); + if(source!=AINPUT_SOURCE_TOUCHSCREEN && source!=AINPUT_SOURCE_STYLUS) + return; + + int action = AMotionEvent_getAction(event.aevent); + int action_pointer = (action&AMOTION_EVENT_ACTION_POINTER_INDEX_MASK)>>AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; + action &= AMOTION_EVENT_ACTION_MASK; + + int pointer_count = AMotionEvent_getPointerCount(event.aevent); + for(int i=0; i