Index: ui/events/devices/x11/touch_factory_x11.cc |
diff --git a/ui/events/devices/x11/touch_factory_x11.cc b/ui/events/devices/x11/touch_factory_x11.cc |
index 929c5959b109416334cf0ef74b004a255566ff05..1dce5048d6bff599e5ff41b83035b0885c2a4949 100644 |
--- a/ui/events/devices/x11/touch_factory_x11.cc |
+++ b/ui/events/devices/x11/touch_factory_x11.cc |
@@ -250,8 +250,14 @@ |
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() { |
@@ -264,6 +270,7 @@ |
touch_events_disabled_ = false; |
touch_device_list_.clear(); |
touchscreen_ids_.clear(); |
+ tracking_id_refcounts_.clear(); |
id_generator_.ResetForTest(); |
} |