Index: ui/events/x/touch_factory_x11.cc |
diff --git a/ui/events/x/touch_factory_x11.cc b/ui/events/x/touch_factory_x11.cc |
index 9df436c803002538e61d8ec06b8bc48699d13ed1..536804a6cc342fd1bc5d7abcd4e5a29917868cac 100644 |
--- a/ui/events/x/touch_factory_x11.cc |
+++ b/ui/events/x/touch_factory_x11.cc |
@@ -250,8 +250,14 @@ int TouchFactory::GetSlotForTrackingID(uint32 tracking_id) { |
return id_generator_.GetGeneratedID(tracking_id); |
} |
+void TouchFactory::AcquireSlotForTrackingID(uint32 tracking_id) { |
+ tracking_id_refcounts_[tracking_id]++; |
+} |
+ |
void TouchFactory::ReleaseSlotForTrackingID(uint32 tracking_id) { |
- id_generator_.ReleaseNumber(tracking_id); |
+ tracking_id_refcounts_[tracking_id]--; |
+ if (tracking_id_refcounts_[tracking_id] == 0) |
+ id_generator_.ReleaseNumber(tracking_id); |
} |
bool TouchFactory::IsTouchDevicePresent() { |