[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Display problems with program-framework & multi-processing
[Priority (2) Important but am still able to work -- for a few more days]
Friends: Has anyone had the following behavior:
I have a program-framework that allows me to modify the parameter
settings within a simulation. I click on a presentation, a value is
modified, and the display is updated both with the new value for that
presentation and other displays on the screen. All this is (mostly) fine
(I may have occasionaly had odd results) when only running the single
process of the frame.
Then, I run an additional process in the background, which is merely to
update the simulation per time slice. It reads the current parameter
values, runs the simulation, and then updates the screen, possibly the
same displays that the user modifies via mouse clicks.
NOW: Sometimes all hell breaks lose, and the display updates get messed
up: added characters strewn about in the wrong places, sometimes lines
from a formatting-table (used to display the lists of parameters for
clicking on); sometimes a debugger crash on some BITBLT error deep in DW
code. These are not reproducible precisely, same behaviors produce
different results, etc. The code is lengthly and I can send a debugger
trace but it is so long...
Considering that it might be that you cannot update a program-frame from
one proess while doing so from another, I tried a version whereby the
user's mouse click holds the parameter change in a buffer (i.e., the
presentation type changes but the value to the simulation doesn't). The
buffer is looked at by the background process for updating the
parameters. Thus in theory, only one process ever effects a thorough
dw:program-redisplay: the background process. Of course, the mouse
clicking itself still takes place in the user process, and possibly "on
top of" the background redisplay. This resulted in what seems to be
fewer screen display problems, but the still do occur and at frightening
frequency (i.e. I could never show this to the client).
Anybody recognize this?
Do I have the proper "user interface paradigm"?
Is there a canonical way that SemantiCue expects this stuff to be done?
Is there a way to "lock out" redisplay on some panes until something
else is complete, without having the sources for all that?
I and my clients thank you ---- this is a nasty one.