- User trigger action -> WebKit -> WebPage -> send message over DBus to another process and wait till replay
- Anoter process replay -> DBus adaptor -> release wait condition and pull answer to web page
Problem with I face is that QtWebKit as a GUI application needs to run in main thread, and I do wait on it. In result my process with WebKit freeze and I cannot get replay over DBus.
Could you advice me how to solve such issue? How to wait on replay and do not freeze whole application. I already tried to move DBus Adaptor to other thread, but it does not work.
Thanks in advance.
I found a way to solve my problem, but I am not sure if this is the perfect one.
After sending message over DBus I am creating internal event loop, like this
connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
connect(this, SIGNAL(replayReceived()), &loop, SLOT(quit()));
if (timer.isActive) //replay received before timer
else //timer elapsed, no replay from client
Such construction allows process to continue processing of main event loop and to keep certain method in wait condition realized by event loop.
Now if user does or dose not replay I can handle it in if condition.