Messages in this thread |  | | Date | Sat, 22 Jun 1996 13:48:25 -0400 (EDT) | From | Hasdi R Hashim <> | Subject | Re: VC corruption, easy to reproduce with 2.0.0 to 2.0.0pl2 |
| |
On Sat, 22 Jun 1996, Aaron Tiensivu wrote: > This happens to me all the time when switching between a normal Linux console > prompt [like at a bash command line] and DOSEMU running Turbo C++... this also > happens to me with SVGALib programs. > > I have to switch...wait....switch-back.. > > If I do it too quickly, I have to logon with my terminal and kill the offending > program.
Make sense. There's nothing much you can do about it. Problem is video memory can only be used by one program at one time (obvious isn't it:). When, you switch out of svgalib program, the program will save screen state, switch, and wait. Every 1 second it checks to see if it has been switched back (via ioctl(2) and sleep(3)). If it has, it restores the screen state. The saving and restoring of screen state is *critical*. If you switch out when it is restoring state, or switch in when it is saving state... ack!
This is what I understand from the svgalib sources. Feel free to correct me.
Just for kicks, try running two svga programs at the same time. Try to time your switching so that restore comes after save not in the middle.... :) :) :)
The problem with svgalib/dosemu/X is that multiple processes are fighting between one video memory. There has to be some sort locking mechanism for this or only allow one program to access the video memory. You won't get this problem in DOS since only one process can be running at one time. :/
Regards,
Hasdi
Lignux, the choice of the Nu generation.
|  |