On Tue, Apr 19, 2005 at 08:37:30PM +0200, Alexandre Julliard wrote:
Actually you have the same problem with the GDI lock, this is going to be more tricky to solve...
Duh! One way to do it is to not hold the lock while we call the handler. Which I think we need to do anyway, as app handlers are not under our control :)
But to do so, we need to see what semantics we must have for the loop calling the handlers. If we drop the lock, the list can be changed while we iterate through it. A simple solution would be to detect such a change, and if it occurs, restart from the beginning? But I'm not sure that's going to cut it :)
Or notice that we are handling a fault in Add/Remove and simply store the handler in another list that will be processed by the main handler after it has finished processing the current fault.