Hi,

Normally when a Widget's signal (f.e QSlider's valueChanged(int) signal) is connected to a given Slot, then this slot is not called again by the same signal as long as it has not returned.

This means that if you are moving the QSlider faster than its corresponding slot can run, your QSlider will simply "lag" when you move it becaise it will wait for the slot to follow. You can't move it faster than the Slot can run. This will allows the QSlider and its Slot to stay well synch.

Now, I have noticed that if a slot contains a call to some external DLL function, then this is not true anymore: multiple re-entrant calls can be done on this slot by the same widget's signal! This is extremely annoying in case of a QSlider moving faster than its slot can run because the Slot is re-called before it has finished running, thus making some sort of recursive or re entrant calls. It's like if the dll call inside the Slot was "broken" as it runs by the event loop or something. What is causing this curious behavior and how to prevent it? (of course I can always block or break the Widget's signal-slot connection inside its own slot and reactivate it as the slot is finished, or even disable the widget as the slot is running, but maybe there is a much nicer/cleaner way?)

--
mk