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 used by a particular variant of Symbian OS. 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 behaviour.
The RWsSession
is a client-server session derived from
RSessionBase
. In a typical application, an RWsSession
will own a single window group, but the window
server architecture allows more than one window group per session. An
application will own 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 events.
The application draws to its windows using a CWindowGc
.
Draw functions are buffered in a client-side buffer in order to minimise
client/server context switches: this buffer is flushed in certain circumstances
by the window server and may 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