(TapGesture) Process evens immediately in timer callback 87/30087/2
authorAdeel Kazmi <adeel.kazmi@samsung.com>
Mon, 10 Nov 2014 10:12:41 +0000 (10:12 +0000)
committerAdeel Kazmi <adeel.kazmi@samsung.com>
Mon, 10 Nov 2014 10:23:07 +0000 (10:23 +0000)
[problem]  Sometimes, the tap-gesture is delayed.
[cause]    Using timers when multiple taps are required. In the timer callback we did not process
           the events.
[solution] Process the event after queuing.

Change-Id: I3b6616d79115b01da9c915f83850970f19385c4f

adaptors/common/events/tap-gesture-detector.cpp

index fe15087..5c3f651 100644 (file)
@@ -54,7 +54,8 @@ TapGestureDetector::TapGestureDetector(CoreEventInterface& coreEventInterface, V
   mMinimumTapsRequired(request.minTaps),
   mMaximumTapsRequired(request.maxTaps),
   mTapsRegistered(0),
-  mTouchTime(0),
+  mTouchPosition(),
+  mTouchTime(0u),
   mTimerSlot( this )
 {
   mTimer = Dali::Timer::New(MAXIMUM_TIME_ALLOWED);
@@ -186,6 +187,10 @@ bool TapGestureDetector::TimerCallback()
 {
   EmitGesture( ( mTapsRegistered >= mMinimumTapsRequired ? Gesture::Started : Gesture::Cancelled ), mTouchTime + MAXIMUM_TIME_ALLOWED);
   mState = Clear;
+
+  // There is no touch event at this time, so ProcessEvents must be called directly
+  mCoreEventInterface.ProcessCoreEvents();
+
   return false;
 }