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 e6a2fe2724cad4d1d1c03e03d2e9338c7248444b..2ad0118b031a04743e8fa36b323e5b316d91e054 100644 |
--- a/ui/events/x/touch_factory_x11.cc |
+++ b/ui/events/x/touch_factory_x11.cc |
@@ -254,8 +254,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() { |