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

Side by Side Diff: ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cros.cc

Issue 889673004: ozone: evdev: Use kernel timestamps for mouse events (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix rebase error Created 5 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cr os.h" 5 #include "ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cr os.h"
6 6
7 #include <gestures/gestures.h> 7 #include <gestures/gestures.h>
8 #include <libevdev/libevdev.h> 8 #include <libevdev/libevdev.h>
9 #include <linux/input.h> 9 #include <linux/input.h>
10 10
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 DVLOG(3) << base::StringPrintf("Gesture Move: (%f, %f) [%f, %f]", 267 DVLOG(3) << base::StringPrintf("Gesture Move: (%f, %f) [%f, %f]",
268 move->dx, 268 move->dx,
269 move->dy, 269 move->dy,
270 move->ordinal_dx, 270 move->ordinal_dx,
271 move->ordinal_dy); 271 move->ordinal_dy);
272 if (!cursor_) 272 if (!cursor_)
273 return; // No cursor! 273 return; // No cursor!
274 274
275 cursor_->MoveCursor(gfx::Vector2dF(move->dx, move->dy)); 275 cursor_->MoveCursor(gfx::Vector2dF(move->dx, move->dy));
276 // TODO(spang): Use move->ordinal_dx, move->ordinal_dy 276 // TODO(spang): Use move->ordinal_dx, move->ordinal_dy
277 // TODO(spang): Use move->start_time, move->end_time 277 dispatcher_->DispatchMouseMoveEvent(MouseMoveEventParams(
278 dispatcher_->DispatchMouseMoveEvent( 278 id_, cursor_->GetLocation(), StimeToTimedelta(gesture->end_time)));
279 MouseMoveEventParams(id_, cursor_->GetLocation()));
280 } 279 }
281 280
282 void GestureInterpreterLibevdevCros::OnGestureScroll( 281 void GestureInterpreterLibevdevCros::OnGestureScroll(
283 const Gesture* gesture, 282 const Gesture* gesture,
284 const GestureScroll* scroll) { 283 const GestureScroll* scroll) {
285 DVLOG(3) << base::StringPrintf("Gesture Scroll: (%f, %f) [%f, %f]", 284 DVLOG(3) << base::StringPrintf("Gesture Scroll: (%f, %f) [%f, %f]",
286 scroll->dx, 285 scroll->dx,
287 scroll->dy, 286 scroll->dy,
288 scroll->ordinal_dx, 287 scroll->ordinal_dx,
289 scroll->ordinal_dy); 288 scroll->ordinal_dy);
290 if (!cursor_) 289 if (!cursor_)
291 return; // No cursor! 290 return; // No cursor!
292 291
293 // TODO(spang): Use scroll->start_time
294 if (is_mouse_) { 292 if (is_mouse_) {
295 dispatcher_->DispatchMouseWheelEvent(MouseWheelEventParams( 293 dispatcher_->DispatchMouseWheelEvent(MouseWheelEventParams(
296 id_, cursor_->GetLocation(), gfx::Vector2d(scroll->dx, scroll->dy))); 294 id_, cursor_->GetLocation(), gfx::Vector2d(scroll->dx, scroll->dy),
295 StimeToTimedelta(gesture->end_time)));
297 } else { 296 } else {
298 dispatcher_->DispatchScrollEvent(ScrollEventParams( 297 dispatcher_->DispatchScrollEvent(ScrollEventParams(
299 id_, ET_SCROLL, cursor_->GetLocation(), 298 id_, ET_SCROLL, cursor_->GetLocation(),
300 gfx::Vector2dF(scroll->dx, scroll->dy), 299 gfx::Vector2dF(scroll->dx, scroll->dy),
301 gfx::Vector2dF(scroll->ordinal_dx, scroll->ordinal_dy), 300 gfx::Vector2dF(scroll->ordinal_dx, scroll->ordinal_dy),
302 kGestureScrollFingerCount, StimeToTimedelta(gesture->end_time))); 301 kGestureScrollFingerCount, StimeToTimedelta(gesture->end_time)));
303 } 302 }
304 } 303 }
305 304
306 void GestureInterpreterLibevdevCros::OnGestureButtonsChange( 305 void GestureInterpreterLibevdevCros::OnGestureButtonsChange(
307 const Gesture* gesture, 306 const Gesture* gesture,
308 const GestureButtonsChange* buttons) { 307 const GestureButtonsChange* buttons) {
309 DVLOG(3) << base::StringPrintf("Gesture Button Change: down=0x%02x up=0x%02x", 308 DVLOG(3) << base::StringPrintf("Gesture Button Change: down=0x%02x up=0x%02x",
310 buttons->down, 309 buttons->down,
311 buttons->up); 310 buttons->up);
312 311
313 if (!cursor_) 312 if (!cursor_)
314 return; // No cursor! 313 return; // No cursor!
315 314
316 // TODO(spang): Use buttons->start_time, buttons->end_time
317 if (buttons->down & GESTURES_BUTTON_LEFT) 315 if (buttons->down & GESTURES_BUTTON_LEFT)
318 DispatchMouseButton(BTN_LEFT, true); 316 DispatchMouseButton(BTN_LEFT, true, gesture->end_time);
319 if (buttons->down & GESTURES_BUTTON_MIDDLE) 317 if (buttons->down & GESTURES_BUTTON_MIDDLE)
320 DispatchMouseButton(BTN_MIDDLE, true); 318 DispatchMouseButton(BTN_MIDDLE, true, gesture->end_time);
321 if (buttons->down & GESTURES_BUTTON_RIGHT) 319 if (buttons->down & GESTURES_BUTTON_RIGHT)
322 DispatchMouseButton(BTN_RIGHT, true); 320 DispatchMouseButton(BTN_RIGHT, true, gesture->end_time);
323 if (buttons->up & GESTURES_BUTTON_LEFT) 321 if (buttons->up & GESTURES_BUTTON_LEFT)
324 DispatchMouseButton(BTN_LEFT, false); 322 DispatchMouseButton(BTN_LEFT, false, gesture->end_time);
325 if (buttons->up & GESTURES_BUTTON_MIDDLE) 323 if (buttons->up & GESTURES_BUTTON_MIDDLE)
326 DispatchMouseButton(BTN_MIDDLE, false); 324 DispatchMouseButton(BTN_MIDDLE, false, gesture->end_time);
327 if (buttons->up & GESTURES_BUTTON_RIGHT) 325 if (buttons->up & GESTURES_BUTTON_RIGHT)
328 DispatchMouseButton(BTN_RIGHT, false); 326 DispatchMouseButton(BTN_RIGHT, false, gesture->end_time);
329 } 327 }
330 328
331 void GestureInterpreterLibevdevCros::OnGestureContactInitiated( 329 void GestureInterpreterLibevdevCros::OnGestureContactInitiated(
332 const Gesture* gesture) { 330 const Gesture* gesture) {
333 // TODO(spang): handle contact initiated. 331 // TODO(spang): handle contact initiated.
334 } 332 }
335 333
336 void GestureInterpreterLibevdevCros::OnGestureFling(const Gesture* gesture, 334 void GestureInterpreterLibevdevCros::OnGestureFling(const Gesture* gesture,
337 const GestureFling* fling) { 335 const GestureFling* fling) {
338 DVLOG(3) << base::StringPrintf( 336 DVLOG(3) << base::StringPrintf(
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 const Gesture* gesture, 406 const Gesture* gesture,
409 const GestureMetrics* metrics) { 407 const GestureMetrics* metrics) {
410 DVLOG(3) << base::StringPrintf("Gesture Metrics: [%f, %f] type=%d", 408 DVLOG(3) << base::StringPrintf("Gesture Metrics: [%f, %f] type=%d",
411 metrics->data[0], 409 metrics->data[0],
412 metrics->data[1], 410 metrics->data[1],
413 metrics->type); 411 metrics->type);
414 NOTIMPLEMENTED(); 412 NOTIMPLEMENTED();
415 } 413 }
416 414
417 void GestureInterpreterLibevdevCros::DispatchMouseButton(unsigned int button, 415 void GestureInterpreterLibevdevCros::DispatchMouseButton(unsigned int button,
418 bool down) { 416 bool down,
417 stime_t time) {
419 bool allow_remap = is_mouse_; 418 bool allow_remap = is_mouse_;
420 dispatcher_->DispatchMouseButtonEvent(MouseButtonEventParams( 419 dispatcher_->DispatchMouseButtonEvent(
421 id_, cursor_->GetLocation(), button, down, allow_remap)); 420 MouseButtonEventParams(id_, cursor_->GetLocation(), button, down,
421 allow_remap, StimeToTimedelta(time)));
422 } 422 }
423 423
424 void GestureInterpreterLibevdevCros::DispatchChangedKeys(Evdev* evdev, 424 void GestureInterpreterLibevdevCros::DispatchChangedKeys(Evdev* evdev,
425 const timeval& time) { 425 const timeval& time) {
426 unsigned long key_state_diff[EVDEV_BITS_TO_LONGS(KEY_CNT)]; 426 unsigned long key_state_diff[EVDEV_BITS_TO_LONGS(KEY_CNT)];
427 427
428 // Find changed keys. 428 // Find changed keys.
429 for (unsigned long i = 0; i < arraysize(key_state_diff); ++i) 429 for (unsigned long i = 0; i < arraysize(key_state_diff); ++i)
430 key_state_diff[i] = evdev->key_state_bitmask[i] ^ prev_key_state_[i]; 430 key_state_diff[i] = evdev->key_state_bitmask[i] ^ prev_key_state_[i];
431 431
(...skipping 18 matching lines...) Expand all
450 KeyEventParams(id_, key, value, TimeValToTimeDelta(time))); 450 KeyEventParams(id_, key, value, TimeValToTimeDelta(time)));
451 } 451 }
452 } 452 }
453 453
454 // Update internal key state. 454 // Update internal key state.
455 for (unsigned long i = 0; i < EVDEV_BITS_TO_LONGS(KEY_CNT); ++i) 455 for (unsigned long i = 0; i < EVDEV_BITS_TO_LONGS(KEY_CNT); ++i)
456 prev_key_state_[i] = evdev->key_state_bitmask[i]; 456 prev_key_state_[i] = evdev->key_state_bitmask[i];
457 } 457 }
458 458
459 } // namespace ui 459 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698