| Index: ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cros.cc
|
| diff --git a/ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cros.cc b/ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cros.cc
|
| index 073514dd0a3a76e30f0208a7c421684cc89c4c2a..a6d424d3086826a025d0b80b40721ac4adce06a3 100644
|
| --- a/ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cros.cc
|
| +++ b/ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cros.cc
|
| @@ -14,6 +14,7 @@
|
| #include "ui/events/ozone/evdev/event_device_util.h"
|
| #include "ui/events/ozone/evdev/event_modifiers_evdev.h"
|
| #include "ui/events/ozone/evdev/keyboard_evdev.h"
|
| +#include "ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.h"
|
| #include "ui/events/ozone/evdev/libgestures_glue/gesture_timer_provider.h"
|
| #include "ui/gfx/geometry/point_f.h"
|
|
|
| @@ -38,18 +39,20 @@ GestureInterpreterDeviceClass GestureDeviceClass(Evdev* evdev) {
|
| }
|
|
|
| // Convert libevdev state to libgestures hardware properties.
|
| -HardwareProperties GestureHardwareProperties(Evdev* evdev) {
|
| +HardwareProperties GestureHardwareProperties(
|
| + Evdev* evdev,
|
| + const GestureDeviceProperties* props) {
|
| HardwareProperties hwprops;
|
| - hwprops.left = Event_Get_Left(evdev);
|
| - hwprops.top = Event_Get_Top(evdev);
|
| - hwprops.right = Event_Get_Right(evdev);
|
| - hwprops.bottom = Event_Get_Bottom(evdev);
|
| - hwprops.res_x = Event_Get_Res_X(evdev);
|
| - hwprops.res_y = Event_Get_Res_Y(evdev);
|
| + hwprops.left = props->area_left;
|
| + hwprops.top = props->area_top;
|
| + hwprops.right = props->area_right;
|
| + hwprops.bottom = props->area_bottom;
|
| + hwprops.res_x = props->res_x;
|
| + hwprops.res_y = props->res_y;
|
| hwprops.screen_x_dpi = 133;
|
| hwprops.screen_y_dpi = 133;
|
| - hwprops.orientation_minimum = Event_Get_Orientation_Minimum(evdev);
|
| - hwprops.orientation_maximum = Event_Get_Orientation_Maximum(evdev);
|
| + hwprops.orientation_minimum = props->orientation_minimum;
|
| + hwprops.orientation_maximum = props->orientation_maximum;
|
| hwprops.max_finger_cnt = Event_Get_Slot_Count(evdev);
|
| hwprops.max_touch_cnt = Event_Get_Touch_Count_Max(evdev);
|
| hwprops.supports_t5r2 = Event_Get_T5R2(evdev);
|
| @@ -81,23 +84,41 @@ const int kGestureSwipeFingerCount = 3;
|
| } // namespace
|
|
|
| GestureInterpreterLibevdevCros::GestureInterpreterLibevdevCros(
|
| + int id,
|
| EventModifiersEvdev* modifiers,
|
| CursorDelegateEvdev* cursor,
|
| KeyboardEvdev* keyboard,
|
| + GesturePropertyProvider* property_provider,
|
| const EventDispatchCallback& callback)
|
| - : modifiers_(modifiers),
|
| + : id_(id),
|
| + modifiers_(modifiers),
|
| cursor_(cursor),
|
| keyboard_(keyboard),
|
| + property_provider_(property_provider),
|
| dispatch_callback_(callback),
|
| - interpreter_(NULL) {
|
| + interpreter_(NULL),
|
| + evdev_(NULL),
|
| + device_properties_(new GestureDeviceProperties) {
|
| memset(&prev_key_state_, 0, sizeof(prev_key_state_));
|
| }
|
|
|
| GestureInterpreterLibevdevCros::~GestureInterpreterLibevdevCros() {
|
| + // Note that this destructor got called after the evdev device node has been
|
| + // closed. Therefore, all clean-up codes here shouldn't depend on the device
|
| + // information (except for the pointer address itself).
|
| +
|
| + // Clean-up if the gesture interpreter has been successfully created.
|
| if (interpreter_) {
|
| + // Unset callbacks.
|
| + GestureInterpreterSetCallback(interpreter_, NULL, NULL);
|
| + GestureInterpreterSetPropProvider(interpreter_, NULL, NULL);
|
| + GestureInterpreterSetTimerProvider(interpreter_, NULL, NULL);
|
| DeleteGestureInterpreter(interpreter_);
|
| interpreter_ = NULL;
|
| }
|
| +
|
| + // Unregister device from the gesture property provider.
|
| + GesturesPropFunctionsWrapper::UnregisterDevice(this);
|
| }
|
|
|
| void GestureInterpreterLibevdevCros::OnLibEvdevCrosOpen(
|
| @@ -106,12 +127,21 @@ void GestureInterpreterLibevdevCros::OnLibEvdevCrosOpen(
|
| DCHECK(evdev->info.is_monotonic) << "libevdev must use monotonic timestamps";
|
| VLOG(9) << "HACK DO NOT REMOVE OR LINK WILL FAIL" << (void*)gestures_log;
|
|
|
| - HardwareProperties hwprops = GestureHardwareProperties(evdev);
|
| + // Set device pointer and initialize properties.
|
| + evdev_ = evdev;
|
| + GesturesPropFunctionsWrapper::InitializeDeviceProperties(
|
| + this, device_properties_.get());
|
| + HardwareProperties hwprops =
|
| + GestureHardwareProperties(evdev, device_properties_.get());
|
| GestureInterpreterDeviceClass devclass = GestureDeviceClass(evdev);
|
|
|
| // Create & initialize GestureInterpreter.
|
| DCHECK(!interpreter_);
|
| interpreter_ = NewGestureInterpreter();
|
| + GestureInterpreterSetPropProvider(
|
| + interpreter_,
|
| + const_cast<GesturesPropProvider*>(&kGesturePropProvider),
|
| + this);
|
| GestureInterpreterInitialize(interpreter_, devclass);
|
| GestureInterpreterSetHardwareProperties(interpreter_, &hwprops);
|
| GestureInterpreterSetTimerProvider(
|
|
|