Changeset 41528 in vbox for trunk/src/VBox/Main/src-server/linux
- Timestamp:
- May 31, 2012 4:48:33 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 78291
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/src-server/linux/USBProxyServiceLinux.cpp
r37618 r41528 5 5 6 6 /* 7 * Copyright (C) 200 6-2011Oracle Corporation7 * Copyright (C) 2005-2012 Oracle Corporation 8 8 * 9 9 * This file is part of VirtualBox Open Source Edition (OSE), as … … 222 222 int USBProxyServiceLinux::captureDevice(HostUSBDevice *aDevice) 223 223 { 224 Log(("USBProxyServiceLinux::captureDevice: %p {%s}\n", aDevice, aDevice->getName().c_str()));225 224 AssertReturn(aDevice, VERR_GENERAL_FAILURE); 226 AssertReturn(aDevice->isWriteLockOnCurrentThread(), VERR_GENERAL_FAILURE); 225 AssertReturn(!aDevice->isWriteLockOnCurrentThread(), VERR_GENERAL_FAILURE); 226 227 AutoReadLock devLock(aDevice COMMA_LOCKVAL_SRC_POS); 228 LogFlowThisFunc(("aDevice=%s\n", aDevice->getName().c_str())); 227 229 228 230 /* … … 230 232 */ 231 233 Assert(aDevice->getUnistate() == kHostUSBDeviceState_Capturing); 234 devLock.release(); 232 235 interruptWait(); 233 236 … … 238 241 int USBProxyServiceLinux::releaseDevice(HostUSBDevice *aDevice) 239 242 { 240 Log(("USBProxyServiceLinux::releaseDevice: %p\n", aDevice));241 243 AssertReturn(aDevice, VERR_GENERAL_FAILURE); 242 AssertReturn(aDevice->isWriteLockOnCurrentThread(), VERR_GENERAL_FAILURE); 244 AssertReturn(!aDevice->isWriteLockOnCurrentThread(), VERR_GENERAL_FAILURE); 245 246 AutoReadLock devLock(aDevice COMMA_LOCKVAL_SRC_POS); 247 LogFlowThisFunc(("aDevice=%s\n", aDevice->getName().c_str())); 243 248 244 249 /* … … 246 251 */ 247 252 Assert(aDevice->getUnistate() == kHostUSBDeviceState_ReleasingToHost); 253 devLock.release(); 248 254 interruptWait(); 249 255 … … 254 260 bool USBProxyServiceLinux::updateDeviceState(HostUSBDevice *aDevice, PUSBDEVICE aUSBDevice, bool *aRunFilters, SessionMachine **aIgnoreMachine) 255 261 { 262 AssertReturn(aDevice, false); 263 AssertReturn(!aDevice->isWriteLockOnCurrentThread(), false); 264 AutoReadLock devLock(aDevice COMMA_LOCKVAL_SRC_POS); 256 265 if ( aUSBDevice->enmState == USBDEVICESTATE_USED_BY_HOST_CAPTURABLE 257 266 && aDevice->mUsb->enmState == USBDEVICESTATE_USED_BY_HOST) 258 267 LogRel(("USBProxy: Device %04x:%04x (%s) has become accessible.\n", 259 268 aUSBDevice->idVendor, aUSBDevice->idProduct, aUSBDevice->pszAddress)); 269 devLock.release(); 260 270 return updateDeviceStateFake(aDevice, aUSBDevice, aRunFilters, aIgnoreMachine); 261 271 } … … 269 279 void USBProxyServiceLinux::deviceAdded(ComObjPtr<HostUSBDevice> &aDevice, SessionMachinesList &llOpenedMachines, PUSBDEVICE aUSBDevice) 270 280 { 281 AssertReturnVoid(aDevice); 282 AssertReturnVoid(!aDevice->isWriteLockOnCurrentThread()); 283 AutoReadLock devLock(aDevice COMMA_LOCKVAL_SRC_POS); 271 284 if (aUSBDevice->enmState == USBDEVICESTATE_USED_BY_HOST) 272 285 { … … 276 289 } 277 290 291 devLock.release(); 278 292 USBProxyService::deviceAdded(aDevice, llOpenedMachines, aUSBDevice); 279 293 } … … 349 363 int USBProxyServiceLinux::interruptWait(void) 350 364 { 365 AssertReturn(!isWriteLockOnCurrentThread(), VERR_GENERAL_FAILURE); 366 367 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 351 368 #ifdef VBOX_USB_WITH_SYSFS 352 369 LogFlowFunc(("mUsingUsbfsDevices=%d\n", mUsingUsbfsDevices));
Note:
See TracChangeset
for help on using the changeset viewer.