| 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/base/gestures/gesture_recognizer_impl.h" | 5 #include "ui/base/gestures/gesture_recognizer_impl.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/time.h" | 9 #include "base/time.h" |
| 10 #include "ui/base/events/event.h" | 10 #include "ui/base/events/event.h" |
| (...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 325 break; | 325 break; |
| 326 | 326 |
| 327 GestureSequence::Gestures* current_gestures = AdvanceTouchQueueByOne( | 327 GestureSequence::Gestures* current_gestures = AdvanceTouchQueueByOne( |
| 328 consumer, event->status()); | 328 consumer, event->status()); |
| 329 if (current_gestures) { | 329 if (current_gestures) { |
| 330 if (!gestures.get()) { | 330 if (!gestures.get()) { |
| 331 gestures.reset(current_gestures); | 331 gestures.reset(current_gestures); |
| 332 } else { | 332 } else { |
| 333 gestures->insert(gestures->end(), current_gestures->begin(), | 333 gestures->insert(gestures->end(), current_gestures->begin(), |
| 334 current_gestures->end()); | 334 current_gestures->end()); |
| 335 // current_gestures leaks here, but deleting it causes |
| 336 // double free on some memory. crbug.com/146465. |
| 335 } | 337 } |
| 336 } | 338 } |
| 337 } | 339 } |
| 338 | 340 |
| 339 return gestures.release(); | 341 return gestures.release(); |
| 340 } | 342 } |
| 341 | 343 |
| 342 void GestureRecognizerImpl::FlushTouchQueue(GestureConsumer* consumer) { | 344 void GestureRecognizerImpl::FlushTouchQueue(GestureConsumer* consumer) { |
| 343 if (consumer_sequence_.count(consumer)) { | 345 if (consumer_sequence_.count(consumer)) { |
| 344 delete consumer_sequence_[consumer]; | 346 delete consumer_sequence_[consumer]; |
| 345 consumer_sequence_.erase(consumer); | 347 consumer_sequence_.erase(consumer); |
| 346 } | 348 } |
| 347 | 349 |
| 348 if (event_queue_.count(consumer)) { | 350 if (event_queue_.count(consumer)) { |
| 349 delete event_queue_[consumer]; | 351 delete event_queue_[consumer]; |
| 350 event_queue_.erase(consumer); | 352 event_queue_.erase(consumer); |
| 351 } | 353 } |
| 352 | 354 |
| 353 RemoveConsumerFromMap(consumer, &touch_id_target_); | 355 RemoveConsumerFromMap(consumer, &touch_id_target_); |
| 354 RemoveConsumerFromMap(consumer, &touch_id_target_for_gestures_); | 356 RemoveConsumerFromMap(consumer, &touch_id_target_for_gestures_); |
| 355 } | 357 } |
| 356 | 358 |
| 357 // GestureRecognizer, static | 359 // GestureRecognizer, static |
| 358 GestureRecognizer* GestureRecognizer::Create(GestureEventHelper* helper) { | 360 GestureRecognizer* GestureRecognizer::Create(GestureEventHelper* helper) { |
| 359 return new GestureRecognizerImpl(helper); | 361 return new GestureRecognizerImpl(helper); |
| 360 } | 362 } |
| 361 | 363 |
| 362 } // namespace ui | 364 } // namespace ui |
| OLD | NEW |