Module: wine Branch: master Commit: 44e794327436effc75478ff68def40f9d8801a82 URL: https://source.winehq.org/git/wine.git/?a=commit;h=44e794327436effc75478ff68...
Author: Zebediah Figura z.figura12@gmail.com Date: Fri Aug 24 22:42:57 2018 -0500
winedevice: Make driver (un)loading synchronous.
This essentially reverts 440482d2ef31333d1bc3ce15b0aad4ceec60466c.
440482d was aimed towards making it possible to load multiple drivers asynchronously, as well as to allow reentrancy. Unfortunately, asynchronicity is incorrect, as demonstrated by bug 38836, and some trivial testing shows that the SCM database lock is held for the entirety of the driver entry and exit routines, and that StartService() and ControlService() block until they complete. 5726824 and dd2624a nullified the effects of 440482d, making driver loading all but synchronous (with the exception of the added 30 second timeout, but this is actually incorrect: drivers can block indefinitely).
This patch therefore does not change any behaviour, but rather removes the use of threadpools and "async" functions, essentially reverting back to the implementation prior to 440482d. The incidental change to unload_driver() made by that patch (viz. never to unload a driver without a DriverUnload() routine) is kept.
Signed-off-by: Zebediah Figura z.figura12@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
programs/winedevice/device.c | 213 ++++++++++--------------------------------- 1 file changed, 46 insertions(+), 167 deletions(-)
Diff: https://source.winehq.org/git/wine.git/?a=commitdiff;h=44e794327436effc75478...