[Interest] pb with 530 official release and MAC/OS

maitai at virtual-winds.org maitai at virtual-winds.org
Tue May 20 23:11:06 CEST 2014


I'm doing processEvent() just to make sure the dialog is painted before 
an heavy treatment. Basically it shows "Please wait" while the process 
is running. I guess I am not the only one doing such things... If I 
don't call processEvents on some platforms the dialog is just half 
painted, probably there are other ways to ensure it's painted (like 
updateGeometry() ) but until now that was working.

I want to show(), do something, and then delete the messagebox. Not just 
show() and return, what would be the point? I don't want to exec() 
because I don't want the user to need to click on something, it's just a 
waiting message that should not block the execution.

It works fine on 521 whatever the platform, and it works fine on 530 
except for mac, this alone should sound like regression imo.

What I mean by lock:

My application becomes non-responsive. I can see that the main thread is 
continuing, until it returns (if I don't call processEvent() ). Then 
nothing else happens, ever. Probably because the waitBox is modal, and 
is never deleted since it should be deleted by a deleteLater() that 
never occurs because the event loop is locked ;)

Thanks for your patience

Philippe Lelong




Le 20-05-2014 21:13, Thiago Macieira a écrit :
> Em ter 20 maio 2014, às 19:04:39, maitai at virtual-winds.org escreveu:
>> Thanks for your reply
>> 
>> Why is removing the processEvent the right thing to do?
> 
> Because processEvents() means nested event loops. You shouldn't do 
> that. You
> should show() and then return;, so the non-nested event loops resumes
> executing.
> 
> If you do need to blocking-show, then don't use show(), just use 
> exec().
> 
> I'm interested in knowing whether there's a lock up if you use any of 
> the
> above solutions. And exactly what you mean by "lock".



More information about the Interest mailing list