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

Side by Side Diff: ui/events/devices/x11/device_data_manager_x11.cc

Issue 749063003: Fix grabbing capture when the mouse is pressed on Desktop Linux. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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/devices/x11/device_data_manager_x11.h" 5 #include "ui/events/devices/x11/device_data_manager_x11.h"
6 6
7 #include <X11/extensions/XInput.h> 7 #include <X11/extensions/XInput.h>
8 #include <X11/extensions/XInput2.h> 8 #include <X11/extensions/XInput2.h>
9 #include <X11/Xlib.h> 9 #include <X11/Xlib.h>
10 10
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 return true; 195 return true;
196 } 196 }
197 197
198 bool DeviceDataManagerX11::IsXInput2Available() const { 198 bool DeviceDataManagerX11::IsXInput2Available() const {
199 return xi_opcode_ != -1; 199 return xi_opcode_ != -1;
200 } 200 }
201 201
202 void DeviceDataManagerX11::UpdateDeviceList(Display* display) { 202 void DeviceDataManagerX11::UpdateDeviceList(Display* display) {
203 cmt_devices_.reset(); 203 cmt_devices_.reset();
204 touchpads_.reset(); 204 touchpads_.reset();
205 master_pointers_.clear();
205 for (int i = 0; i < kMaxDeviceNum; ++i) { 206 for (int i = 0; i < kMaxDeviceNum; ++i) {
206 valuator_count_[i] = 0; 207 valuator_count_[i] = 0;
207 valuator_lookup_[i].clear(); 208 valuator_lookup_[i].clear();
208 data_type_lookup_[i].clear(); 209 data_type_lookup_[i].clear();
209 valuator_min_[i].clear(); 210 valuator_min_[i].clear();
210 valuator_max_[i].clear(); 211 valuator_max_[i].clear();
211 for (int j = 0; j < kMaxSlotNum; j++) 212 for (int j = 0; j < kMaxSlotNum; j++)
212 last_seen_valuator_[i][j].clear(); 213 last_seen_valuator_[i][j].clear();
213 } 214 }
214 215
(...skipping 11 matching lines...) Expand all
226 // Update the structs with new valuator information 227 // Update the structs with new valuator information
227 XIDeviceList info_list = 228 XIDeviceList info_list =
228 ui::DeviceListCacheX11::GetInstance()->GetXI2DeviceList(display); 229 ui::DeviceListCacheX11::GetInstance()->GetXI2DeviceList(display);
229 Atom atoms[DT_LAST_ENTRY]; 230 Atom atoms[DT_LAST_ENTRY];
230 for (int data_type = 0; data_type < DT_LAST_ENTRY; ++data_type) 231 for (int data_type = 0; data_type < DT_LAST_ENTRY; ++data_type)
231 atoms[data_type] = atom_cache_.GetAtom(kCachedAtoms[data_type]); 232 atoms[data_type] = atom_cache_.GetAtom(kCachedAtoms[data_type]);
232 233
233 for (int i = 0; i < info_list.count; ++i) { 234 for (int i = 0; i < info_list.count; ++i) {
234 XIDeviceInfo* info = info_list.devices + i; 235 XIDeviceInfo* info = info_list.devices + i;
235 236
237 if (info->use == XIMasterPointer)
238 master_pointers_.push_back(info->deviceid);
239
236 // We currently handle only slave, non-keyboard devices 240 // We currently handle only slave, non-keyboard devices
237 if (info->use != XISlavePointer && info->use != XIFloatingSlave) 241 if (info->use != XISlavePointer && info->use != XIFloatingSlave)
238 continue; 242 continue;
239 243
240 bool possible_cmt = false; 244 bool possible_cmt = false;
241 bool not_cmt = false; 245 bool not_cmt = false;
242 const int deviceid = info->deviceid; 246 const int deviceid = info->deviceid;
243 247
244 for (int j = 0; j < info->num_classes; ++j) { 248 for (int j = 0; j < info->num_classes; ++j) {
245 if (info->classes[j]->type == XIValuatorClass) 249 if (info->classes[j]->type == XIValuatorClass)
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 } else { 753 } else {
750 keyboards.erase(it); 754 keyboards.erase(it);
751 ++blocked_iter; 755 ++blocked_iter;
752 } 756 }
753 } 757 }
754 // Notify base class of updated list. 758 // Notify base class of updated list.
755 DeviceDataManager::OnKeyboardDevicesUpdated(keyboards); 759 DeviceDataManager::OnKeyboardDevicesUpdated(keyboards);
756 } 760 }
757 761
758 } // namespace ui 762 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/devices/x11/device_data_manager_x11.h ('k') | ui/events/devices/x11/touch_factory_x11.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698