A BWindowScreen
object provides exclusive access to the entire screen,
bypassing the Application Server's window system. The object has direct
access to the graphics card driver: It can set up the graphics
environment on the graphics card, call driver-implemented drawing
functions, and directly manipulate the frame buffer.
Like all windows, a BWindowScreen
is hidden (off-screen) when it's
constructed. By calling
Show()
to put it on-screen and make it the active
window, an application takes over the whole screen. While the
BWindowScreen
is active, the Application Server's graphics operations are
suspended—this means that you can't use any
BView
functions, nor
any functions in classes derived from
BView
; you have to draw directly
into the screen's frame buffer, and nothing except what the application
draws will be visible to the user—no other windows and no desktop.
When the BWindowScreen
gives up active status, the Application Server
automatically refreshes the screen with its old contents.
Although the BWindowScreen
object provides a connection to the screen,
you shouldn't draw from the
BWindowScreen
's
thread. Use the thread only
to regulate the access of other threads to the frame buffer.
A BWindowScreen
object remains a window while it has control of the
screen; it stays attached to the Application Server and its message loop
continues to function. It gets messages reporting the user's actions on
the keyboard and mouse, just like any other active window. Because it
covers the whole screen, it's notified of all mouse and keyboard events.
You can attach filters to the window to get the messages as they arrive.
Or you can call the Interface Kit's
get_key_info()
function to poll the state of the keyboard and construct a nominal
BView
so that you can call
GetMouse()
to poll the mouse.
This class respects workspaces. A
BWindowScreen
object releases its grip
on the screen when the user turns to another workspace and reestablishes
its control when the user returns to the workspace in which it's the
active window.
A BWindowScreen
object can be constructed in a debugging mode that lets
you switch back and forth between the workspace in which the game is
running and a workspace where error messages are printed. See the
constructor and the
RegisterThread()
function for details.