Re: GUI interface update issues [message #44530 is a reply to message #44528] |
Tue, 21 June 2005 10:05   |
Haje Korth
Messages: 651 Registered: May 1997
|
Senior Member |
|
|
Rick,
my question would be whether the same things happens on UNIX OS. On Windows
I have found IDL has the terrible habbit of taking over with unpredictable
results such as GUIs not reacting at all. If the UNIX version works fine,
which I suspect it will, your only hope is some input from the developers.
Haje
"Rick Towler" <rick.towler@nomail.noaa.gov> wrote in message
news:d99f2f$ohk$1@news.nems.noaa.gov...
> 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
|
|
|