On 1/19/2017 2:29 AM, Viktor Engelmann wrote:

QSignalSpy::wait has a race condition though. When the signal is emitted from a different thread, it might come before you called .wait and then the wait will time out and return false (so it looks like the signal wasn't emitted). You can store the value of spy.size() and after the wait compare it to the current spy.size(). That is more robust, but when the signal is emitted before you start the .wait, the .wait will still wait for the full timeout time.

QTRY_COMPARE terminates as soon as the condition is met, so QTRY_COMPARE(spy.size(), 1) is better, but it uses a timeout of only 5 seconds, which should be enough in most cases, but I have seen cases where a signal came 11 seconds after I caused it to be emitted (due to network and/or system load). I used QTRY_COMPARE_WITH_TIMEOUT instead to set a higher timeout.


Thanks for the info, Viktor.  :)

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to