Window Server Sessions

Each application uses a Window Server session to communicate with the Window Server.

Through the session, the application may control and interrogate

  • its own windows

  • which events it wishes to receive

  • all other window groups connected to the Window Server

The Window Server session provides a low-level interface for application programs’ use, using asynchronous services. To support an application framework, these services should be made higher-level, and the asynchronous services should be encapsulated into active objects. This function is performed by the UI control framework. The control framework is the basis for the GUI. Each event is then handled by the CActive::RunL() member function of an active object.

The RWsSession class represents a session from the client to the Window Server. Through an RWsSession , the client program controls all its own windows, issues asynchronous requests for up to three types of event, and may in addition control certain system-wide Window Server behavior.

The RWsSession is a client-server session derived from RSessionBase . In a typical application, an RWsSession owns a single window group , but the Window Server architecture allows more than one window group per session. An application owns several windows. See Window Groups and Applications .

The Window Server session delivers events to the application via three event streams. A typical application handles each stream using an active object. See Window Server Client-Side Events .

The application draws to its windows using a CWindowGc . Draw functions are buffered in a client-side buffer in order to minimize client/server context switches. This buffer is flushed in certain circumstances by the Window Server and can also be flushed explicitly by the application. The Flush() and SetAutoFlush() functions are part of the RWsSession API. The RWsBuffer is privately owned by an RWsSession and is not as such part of the API. See Client-Side Buffer