init() it while it's already running. fixed an uninitialized
pointer bug in CServer and some cleanup-on-error code in
CMSWindowsPrimaryScreen. also added timeout to read() on
IInputStream and a heartbeat sent by clients so the server
can disconnect clients that are dead but never reset the TCP
connection. previously the server would keep these dead
clients around forever and if the user was locked on the
client screen for some reason then the server would have to
be rebooted (or the server would have to be killed via a
remote login).
CServer to the primary screen when the configuration changes so it
can make necessary adjustments (the win32 primary screen must tell
the hook dll about the new jump zones).
changed includes of some std c++ library files to go through
our own include files. these wrap the include with stuff to
keep vc++ quiet when compiling at warning level 4, which is
what it does now. it also works around missing <istream> and
<ostream> on g++2.96.
added missing std:: where necessary. g++ doesn't really support
namespaces so it lets references without the namespace slip
through.
added workaround or fix. not sure if istringstream::str(string)
should reset eofbit. it does on g++ but does not on vc++.
added clear() after str() so it works either way.
added low-level keyboard hook to win32. if available (it's only
available on NT SP3 and up) it allows us to catch and handle
alt+tab, alt+esc, ctrl+esc, and windows key hot keys. i think
that leaves only ctrl+alt+del and accessibility functions
uncaught on those systems.