Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/events/event.h" | 5 #include "ui/events/event.h" |
| 6 | 6 |
| 7 #if defined(USE_X11) | 7 #if defined(USE_X11) |
| 8 #include <X11/extensions/XInput2.h> | 8 #include <X11/extensions/XInput2.h> |
| 9 #include <X11/Xlib.h> | 9 #include <X11/Xlib.h> |
| 10 #include <X11/keysym.h> | 10 #include <X11/keysym.h> |
| (...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 510 | 510 |
| 511 //////////////////////////////////////////////////////////////////////////////// | 511 //////////////////////////////////////////////////////////////////////////////// |
| 512 // TouchEvent | 512 // TouchEvent |
| 513 | 513 |
| 514 TouchEvent::TouchEvent(const base::NativeEvent& native_event) | 514 TouchEvent::TouchEvent(const base::NativeEvent& native_event) |
| 515 : LocatedEvent(native_event), | 515 : LocatedEvent(native_event), |
| 516 touch_id_(GetTouchId(native_event)), | 516 touch_id_(GetTouchId(native_event)), |
| 517 radius_x_(GetTouchRadiusX(native_event)), | 517 radius_x_(GetTouchRadiusX(native_event)), |
| 518 radius_y_(GetTouchRadiusY(native_event)), | 518 radius_y_(GetTouchRadiusY(native_event)), |
| 519 rotation_angle_(GetTouchAngle(native_event)), | 519 rotation_angle_(GetTouchAngle(native_event)), |
| 520 force_(GetTouchForce(native_event)) { | 520 force_(GetTouchForce(native_event)), |
| 521 should_remove_native_touch_id_mapping_(false) { | |
| 521 latency()->AddLatencyNumberWithTimestamp( | 522 latency()->AddLatencyNumberWithTimestamp( |
| 522 INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, | 523 INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, |
| 523 0, | 524 0, |
| 524 0, | 525 0, |
| 525 base::TimeTicks::FromInternalValue(time_stamp().ToInternalValue()), | 526 base::TimeTicks::FromInternalValue(time_stamp().ToInternalValue()), |
| 526 1); | 527 1); |
| 528 if (type() == ET_TOUCH_RELEASED || type() == ET_TOUCH_CANCELLED) | |
| 529 should_remove_native_touch_id_mapping_ = true; | |
|
sadrul
2015/01/14 20:21:35
Do this before or after the latency block.
tdresser
2015/01/23 18:12:34
Done.
| |
| 527 | 530 |
| 528 latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); | 531 latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); |
| 529 | |
| 530 if (type() == ET_TOUCH_PRESSED) | |
| 531 IncrementTouchIdRefCount(native_event); | |
| 532 } | 532 } |
| 533 | 533 |
| 534 TouchEvent::TouchEvent(EventType type, | 534 TouchEvent::TouchEvent(EventType type, |
| 535 const gfx::PointF& location, | 535 const gfx::PointF& location, |
| 536 int touch_id, | 536 int touch_id, |
| 537 base::TimeDelta time_stamp) | 537 base::TimeDelta time_stamp) |
| 538 : LocatedEvent(type, location, location, time_stamp, 0), | 538 : LocatedEvent(type, location, location, time_stamp, 0), |
| 539 touch_id_(touch_id), | 539 touch_id_(touch_id), |
| 540 radius_x_(0.0f), | 540 radius_x_(0.0f), |
| 541 radius_y_(0.0f), | 541 radius_y_(0.0f), |
| 542 rotation_angle_(0.0f), | 542 rotation_angle_(0.0f), |
| 543 force_(0.0f) { | 543 force_(0.0f), |
| 544 should_remove_native_touch_id_mapping_(false) { | |
| 544 latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); | 545 latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); |
| 545 } | 546 } |
| 546 | 547 |
| 547 TouchEvent::TouchEvent(EventType type, | 548 TouchEvent::TouchEvent(EventType type, |
| 548 const gfx::PointF& location, | 549 const gfx::PointF& location, |
| 549 int flags, | 550 int flags, |
| 550 int touch_id, | 551 int touch_id, |
| 551 base::TimeDelta time_stamp, | 552 base::TimeDelta time_stamp, |
| 552 float radius_x, | 553 float radius_x, |
| 553 float radius_y, | 554 float radius_y, |
| 554 float angle, | 555 float angle, |
| 555 float force) | 556 float force) |
| 556 : LocatedEvent(type, location, location, time_stamp, flags), | 557 : LocatedEvent(type, location, location, time_stamp, flags), |
| 557 touch_id_(touch_id), | 558 touch_id_(touch_id), |
| 558 radius_x_(radius_x), | 559 radius_x_(radius_x), |
| 559 radius_y_(radius_y), | 560 radius_y_(radius_y), |
| 560 rotation_angle_(angle), | 561 rotation_angle_(angle), |
| 561 force_(force) { | 562 force_(force), |
| 563 should_remove_native_touch_id_mapping_(false) { | |
| 562 latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); | 564 latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); |
| 563 } | 565 } |
| 564 | 566 |
| 565 TouchEvent::~TouchEvent() { | 567 TouchEvent::~TouchEvent() { |
| 566 // In ctor TouchEvent(native_event) we call GetTouchId() which in X11 | 568 // In ctor TouchEvent(native_event) we call GetTouchId() which in X11 |
| 567 // platform setups the tracking_id to slot mapping. So in dtor here, | 569 // platform setups the tracking_id to slot mapping. So in dtor here, |
| 568 // if this touch event is a release event, we clear the mapping accordingly. | 570 // if this touch event is a release event, we clear the mapping accordingly. |
| 569 if (HasNativeEvent()) | 571 if (should_remove_native_touch_id_mapping_) { |
| 570 ClearTouchIdIfReleased(native_event()); | 572 DCHECK(type() == ET_TOUCH_RELEASED || type() == ET_TOUCH_CANCELLED); |
| 573 if (type() == ET_TOUCH_RELEASED || type() == ET_TOUCH_CANCELLED) | |
| 574 ClearTouchIdIfReleased(native_event()); | |
| 575 } | |
| 571 } | 576 } |
| 572 | 577 |
| 573 void TouchEvent::UpdateForRootTransform( | 578 void TouchEvent::UpdateForRootTransform( |
| 574 const gfx::Transform& inverted_root_transform) { | 579 const gfx::Transform& inverted_root_transform) { |
| 575 LocatedEvent::UpdateForRootTransform(inverted_root_transform); | 580 LocatedEvent::UpdateForRootTransform(inverted_root_transform); |
| 576 gfx::DecomposedTransform decomp; | 581 gfx::DecomposedTransform decomp; |
| 577 bool success = gfx::DecomposeTransform(&decomp, inverted_root_transform); | 582 bool success = gfx::DecomposeTransform(&decomp, inverted_root_transform); |
| 578 DCHECK(success); | 583 DCHECK(success); |
| 579 if (decomp.scale[0]) | 584 if (decomp.scale[0]) |
| 580 radius_x_ *= decomp.scale[0]; | 585 radius_x_ *= decomp.scale[0]; |
| (...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 979 gfx::PointF(x, y), | 984 gfx::PointF(x, y), |
| 980 time_stamp, | 985 time_stamp, |
| 981 flags | EF_FROM_TOUCH), | 986 flags | EF_FROM_TOUCH), |
| 982 details_(details) { | 987 details_(details) { |
| 983 } | 988 } |
| 984 | 989 |
| 985 GestureEvent::~GestureEvent() { | 990 GestureEvent::~GestureEvent() { |
| 986 } | 991 } |
| 987 | 992 |
| 988 } // namespace ui | 993 } // namespace ui |
| OLD | NEW |