Virtual Display Management

Figure "Virtual Display Management"

The PMShield is notified by the Video VDD of different changes, which are prioritized, for example "change in video mode", "change in palette", "change in LVB", "scroll of LVB", "string output", "change in cursor", "input notification" when the window scroll has to be adjusted based on the cursor position, "paste notification".

Having received notification of one of these changes, it is the PMShield's responsibility to make appropriate changes to the VDM window, usually through the use of one or more PM Graphics Engine call(s).

When a windowed VDM is found with a dirty page, the PMShield thread is notified of a LVB change, along with rectangles describing which areas of the VDM's LVB may be dirty. The PMShield finds the smallest rectangle(s) of change, and updates the window using appropriate Graphics Engine services.

The PMShield obtains access to the VDM's LVB indirectly, by requesting the Video VDD to copy some rectangular portion of it into a "shield buffer". The PMShield compares the "shield buffer" against a "shadow buffer", which contains the previously displayed contents of the VDM window, to find the smallest areas of change. The roles of the two buffers are then interchanged in preparation for the next update, as it is now the "shield buffer", which contains the last data displayed.

If the VDM changes video modes before the PMShield is able to copy the VDM's LVB, an error will be returned to the PMShield on the copy request. The PMShield's action will be to query the new mode and recopy the LVB.


[Back: VDM Window Management]
[Next: Virtual Keyboard Management]