Page 1 of 1

Progress bar bug in Linux with L3DT v2.7 build 22

PostPosted: Mon Aug 10, 2009 12:57 pm
by Aaron
Hi All,

Somewhere along the way I've made a change to the progress bar window that is used in L3DT for loading or saving files, and it's causing L3DT to lock up when running in Linux under Wine (it's fine on Windows, BTW). I'll look into this, and try to have it fixed for the next release.

Best regards,
Aaron.

PostPosted: Sat Oct 10, 2009 1:01 pm
by Aaron
Hi All,

I think I've got a handle on this problem. The PeekMessage function in Wine is more expensive than on Windows, and also yields the rest of the processor's timeslice. Regrettably, the progress bar that L3DT uses to display progress on single-threaded calculations calls PeekMessage in a loop to look for the event handler for a click on the cancel button. This loop of PeekMessage calls in Wine stalls the application because it's constantly yielding its timeslices.

In L3DT v2.7 build 36, released today, I have changed the progress bar so that the PeekMessage loop is only invoked when the progress box actually has a cancel button, which is seldom for this particular window . In the next build I have also changed the PeekMessage call to use the PM_NOYIELD flag to ensure that any progress boxes with cancel buttons won't freeze the application when running in Wine.

Cheers,
Aaron.