Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Unified Diff: views/events/event_x.cc

Issue 7927001: touchui: Convert XI2 MT tracking id to slot id for gesture recognizer (Closed) Base URL: nhu@powerbuilder.sh.intel.com:/home/www-data/git-repos/chromium/chromium.git@trunk
Patch Set: Update the patch set according to comment #2. Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | views/touchui/touch_factory.h » ('j') | views/touchui/touch_factory.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: views/events/event_x.cc
diff --git a/views/events/event_x.cc b/views/events/event_x.cc
index fda4affb3038f172432e0f45dd3c2641d69a66f7..a014e2ee62113ea5b97643a684b13bb2795a04e8 100644
--- a/views/events/event_x.cc
+++ b/views/events/event_x.cc
@@ -122,18 +122,22 @@ ui::EventType GetTouchEventType(XEvent* xev) {
}
int GetTouchIDFromXEvent(XEvent* xev) {
- float id = 0;
+ float slot = 0;
Daniel Kurtz 2011/09/24 01:53:36 id is a better name, since it is used for both tou
sadrul 2011/09/24 03:06:31 I think 'slot' is fine. Right now, 'slot id' is es
#if defined(USE_XI2_MT)
- // TODO(ningxin.hu@gmail.com): Make the id always start from 0 for a new
- // touch-sequence when TRACKING_ID is used to extract the touch id.
- TouchFactory::TouchParam tp = TouchFactory::TP_TRACKING_ID;
+ float tracking_id;
+ TouchFactory* factory = TouchFactory::GetInstance();
Daniel Kurtz 2011/09/24 01:53:36 Pull "TouchFactory*" and "return slot" out of the
ningxin.hu 2011/09/25 16:35:39 Thanks. I will follow up.
+ if (factory->ExtractTouchParam(
+ *xev, TouchFactory::TP_TRACKING_ID, &tracking_id))
+ slot = factory->GetSlotForTrackingID(tracking_id);
+ else
+ LOG(ERROR) << "Could not get the touch ID for the event. Using 0.";
+ return slot;
#else
- TouchFactory::TouchParam tp = TouchFactory::TP_SLOT_ID;
-#endif
if (!TouchFactory::GetInstance()->ExtractTouchParam(
- *xev, tp, &id))
+ *xev, TouchFactory::TP_SLOT_ID, &slot))
LOG(ERROR) << "Could not get the touch ID for the event. Using 0.";
Daniel Kurtz 2011/09/24 01:53:36 Could not get the slot ID ...
sadrul 2011/09/24 03:06:31 Ditto.
ningxin.hu 2011/09/25 16:35:39 Thanks. Will correct.
- return id;
+ return slot;
+#endif
}
ui::EventType EventTypeFromNative(NativeEvent2 native_event) {
@@ -424,7 +428,20 @@ TouchEvent::TouchEvent(NativeEvent2 native_event_2,
TouchFactory::TP_ORIENTATION,
0.0)),
force_(GetTouchForceFromXEvent(native_event_2)) {
-#if !defined(USE_XI2_MT)
+#if defined(USE_XI2_MT)
+ if (type() == ui::ET_TOUCH_RELEASED) {
+ // NOTE: The slot is allocated by TouchFactory for each XI_TouchBegin
+ // event, which carries a new tracking ID to identify a new touch
+ // sequence.
+ TouchFactory* factory = TouchFactory::GetInstance();
+ float tracking_id;
+ if (factory->ExtractTouchParam(*native_event_2,
+ TouchFactory::TP_TRACKING_ID,
+ &tracking_id)) {
+ factory->ReleaseSlotForTrackingID(tracking_id);
+ }
+ }
+#else
if (type() == ui::ET_TOUCH_PRESSED || type() == ui::ET_TOUCH_RELEASED) {
TouchFactory* factory = TouchFactory::GetInstance();
float slot;
« no previous file with comments | « no previous file | views/touchui/touch_factory.h » ('j') | views/touchui/touch_factory.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698