From: GiWoong Kim Date: Fri, 16 Oct 2015 04:28:47 +0000 (+0900) Subject: multi-touch: added device initializing checking X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.2~223 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f418efcecfb0493607471341334fc505876ebe21;p=sdk%2Femulator%2Fqemu.git multi-touch: added device initializing checking Multi-touch events should be ignored when the touchscreen device is not ready yet. Change-Id: I7486e1bc91bf9a4519a9e27a6c331aca65b03b39 Signed-off-by: GiWoong Kim --- diff --git a/tizen/src/hw/virtio/maru_virtio_touchscreen.c b/tizen/src/hw/virtio/maru_virtio_touchscreen.c index e07c30b38c..910afab415 100644 --- a/tizen/src/hw/virtio/maru_virtio_touchscreen.c +++ b/tizen/src/hw/virtio/maru_virtio_touchscreen.c @@ -82,6 +82,14 @@ VirtIOTouchscreen *ts; static pthread_mutex_t event_mutex = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t elem_mutex = PTHREAD_MUTEX_INITIALIZER; +bool virtio_touchscreen_ready(void) +{ + if (ts == NULL) { + return false; + } + + return virtio_queue_ready(ts->vq) != 0; +} void virtio_touchscreen_event(int x, int y, int z, int buttons_state) { diff --git a/tizen/src/hw/virtio/maru_virtio_touchscreen.h b/tizen/src/hw/virtio/maru_virtio_touchscreen.h index 4a6c7da974..2cabc5653d 100644 --- a/tizen/src/hw/virtio/maru_virtio_touchscreen.h +++ b/tizen/src/hw/virtio/maru_virtio_touchscreen.h @@ -58,6 +58,7 @@ typedef struct EmulTouchEvent { uint8_t state; } EmulTouchEvent; +bool virtio_touchscreen_ready(void); void virtio_touchscreen_event(int x, int y, int z, int buttons_state); void maru_virtio_touchscreen_notify(void); diff --git a/tizen/src/ui/input/keyboardhelper.cpp b/tizen/src/ui/input/keyboardhelper.cpp index 39fc01fc36..4fe8d3fc22 100644 --- a/tizen/src/ui/input/keyboardhelper.cpp +++ b/tizen/src/ui/input/keyboardhelper.cpp @@ -351,8 +351,10 @@ void KeyboardHelper::keyPressed(QKeyEvent *event) event->nativeScanCode() << event->modifiers() << event->nativeModifiers(); /* multi-touch checking */ - if (mtTracker != NULL && get_max_touch_point() > 1) { - pressFilterMtChecking(event); + if (mtTracker != NULL && mtTracker->isTrackingReady() == true) { + if (get_max_touch_point() > 1) { + pressFilterMtChecking(event); + } /* fall through */ } diff --git a/tizen/src/ui/input/multitouchtracker.cpp b/tizen/src/ui/input/multitouchtracker.cpp index 690424e83b..67d82e4879 100644 --- a/tizen/src/ui/input/multitouchtracker.cpp +++ b/tizen/src/ui/input/multitouchtracker.cpp @@ -40,6 +40,7 @@ int qt5_mt_width = 0; int qt5_mt_height = 0; extern "C" { +bool virtio_touchscreen_ready(void); void virtio_touchscreen_event(int x, int y, int z, int buttons_state); } @@ -131,6 +132,16 @@ QList MultiTouchTracker::getTouchPointList() return touchPointList; } +bool MultiTouchTracker::isTrackingReady() +{ + if (touchPointImage.isNull() == true) { + qWarning() << "touch point image is null"; + return false; + } + + return virtio_touchscreen_ready(); +} + int MultiTouchTracker::addTouchPoint(QPoint hostPos, QPoint guestPos) { const int touchCnt = touchPointList.count(); diff --git a/tizen/src/ui/input/multitouchtracker.h b/tizen/src/ui/input/multitouchtracker.h index 0a74afeee4..bbf3d3f8e4 100644 --- a/tizen/src/ui/input/multitouchtracker.h +++ b/tizen/src/ui/input/multitouchtracker.h @@ -63,6 +63,7 @@ public: const QImage &getPointImage(); int getMaxTouchPoint(); QList getTouchPointList(); + bool isTrackingReady(); int addTouchPoint(QPoint hostPos, QPoint guestPos); TouchPoint *searchTouchPoint(QPoint targetPos);