Zebediah Figura : winedevice: Make driver (un)loading synchronous.

Alexandre Julliard julliard at winehq.org
Wed Aug 29 16:10:45 CDT 2018


Module: wine
Branch: master
Commit: 44e794327436effc75478ff68def40f9d8801a82
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=44e794327436effc75478ff68def40f9d8801a82

Author: Zebediah Figura <z.figura12 at 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 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at 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=44e794327436effc75478ff68def40f9d8801a82



More information about the wine-cvs mailing list