GUI interface update issues [message #44532] |
Tue, 21 June 2005 09:23 |
Rick Towler
Messages: 821 Registered: August 1998
|
Senior Member |
|
|
Hello group,
I have an interesting problem with gui redraw on WinXP which maybe
someone can shed some light on.
I have an application that uses David's progress bar object. We have
some potentially long calculation times and it is important to give a
little feedback. It worked great until I added the ability to call a
new calculation routine written in C as a dlm. If I run the application
the old way (all functions written in IDL) the progress bar and GUI
interface function normally. But if I run the application using the
external routine eventually the GUI interface stops redrawing, the drop
down menu text disappears, and the progress bar fails to update. The
application runs and when calculations are finished it returns to normal
(progress bar is destroyed and interface works as expected) but there is
no feedback while running. A problem since the new calculations can
take hours and hours and it is nice to see where it is in the process.
The program is structured like so:
;-------------
setup stuff
for loop begin
progressBar->update
if (use_dlm) then begin
myDLM_proc, param1, param2, OUT1=out1, OUT2=out2...
endif else begin
IDLbased_proc, param1, param2, OUT1=out1, OUT2=out2...
endelse
for loop begin
if (use_dlm) then begin
anotherDLM_proc, param1, param2, OUT1=out1,OUT2=out2...
endif else begin
anotherIDLbased_proc, param1, param2, OUT1=out1,OUT2=out2...
endelse
endfor
endfor
;------------
Actually a lot more is going on but you get the idea.
And to elaborate on what I mean by "eventually the gui stops
responding". If I start the application and run a short calculation (~2
minutes) the first time the gui functions normally. But with every
subsequent run the progress bar moves maybe 20% of the way then I lose
the gui. If I close and restart the application the same thing happens,
first one works, then problems). If I run a long calculation (hours)
the progress bar never moves past the first tick (maybe 1%).
Why does IDL stop updating the gui? Any ideas? While the functions in
the dlm are compute intensive, they aren't particularly complicated and
only rely on some simple macros in an .h file. Just a *lot* of looping
over a moderate amount of data.
-Rick
|
|
|