Commit Graph

286 Commits

Author SHA1 Message Date
crs
0759cbc104 changed waitForEvent() to handle a peculiar feature of
MsgWaitForMultipleObjects():  it will not return immediately
if an event already in the queue when it's called was already
in the queue during the last call to GetMessage()/PeekMessage().
also now discarding screen saver events if there are any other
screen saver events in the queue already.  this prevents these
events from piling up in the queue, which they'd do because we
sleep for 250ms when handling each one.
2002-07-18 16:58:08 +00:00
crs
e94f308e21 fixed incorrect paths to makehook and synrgyhk project files. 2002-07-18 08:54:17 +00:00
crs
76cc62d133 attempt to fix stuttering when leaving win32 screen. seems to
work but will let testers make the final call.  also fixed
desktop synchronization by setting a variable that was
mistakenly left unset.  and tried to work around an apparent
bug in MsgWaitForMultipleObjects() that prevented the service
from closing down properly.  start/pause/continue/stop
sequence still doesn't shut down correctly.  start/pause/stop
and start/stop work fine.
2002-07-17 17:27:41 +00:00
crs
82cdfb478a removed unnecessary local variable. 2002-07-17 17:24:44 +00:00
crs
22ba640940 fixes to get it compiling on .NET. 2002-07-16 19:07:15 +00:00
crs
7c391a0f35 moved onError() method to IScreenReceiver from IPrimaryScreenReceiver.
also implemented onError in CClient which previously did not have
any way to handle display disconnection.
2002-07-16 16:52:26 +00:00
crs
0bfe12d6ab completing previous checkin. 2002-07-15 15:03:04 +00:00
crs
4b46862026 checkpoint. refactored win32 code. had to edit and rename some
files so this is only a checkpoint.
2002-07-15 15:01:36 +00:00
crs
f48a5fe387 checkpoint. still refactoring. merged common code from primary
screens into CPrimaryScreen and merged common code from secondary
screens into CSecondaryScreen.  changed is-a relationship to a
has-a between the primary and secondary screen classes and the
generic platform dependent screen class to avoid multiple
inheritance of implementation.  also standardized the interface
for those generic screen classes.  adding a platform now involves
implementing simpler interfaces:  IScreen for the generic screen,
IScreenEventHandler and some methods of CPrimaryScreen for the
primary screen, and IScreenEventHandler and some methods of
CSecondaryScreen for the secondary screen.  did X11 platform
but not win32 platform.
2002-07-13 22:00:38 +00:00
crs
52b60d5175 refactoring. refactored stuff in client (with changes to server
as necessary).
2002-07-12 20:41:23 +00:00
crs
ef7fe1f283 checkpoint. making win32 and X primary screen code more similar
in order to share code later.
2002-07-11 18:58:49 +00:00
crs
feeb15a08d applied refactoring to win32 code. 2002-07-11 13:13:37 +00:00
crs
3468f3d503 more refactoring. 2002-07-10 21:22:28 +00:00
crs
710e1bdd47 refactored client code. it now uses IClient and IServer and
has a CServerProxy, making it's design similar to the server
code.
2002-07-10 20:18:32 +00:00
crs
df6748f669 removed some obsolete comments. 2002-07-10 14:29:50 +00:00
crs
f90076938b removed IPrimaryReceiver in favor of IServer, which required a few
minor changes to support IPrimaryReciever's functionality.  this
does mean that the IPrimaryScreen class will be calling some
methods with dummy arguments.  those are documented in
CPrimaryClient.
2002-07-10 14:15:17 +00:00
crs
64232c7854 updated to new automake and refactored server stuff. the server
now speaks to the primary screen and secondary screens almost
everywhere the same way through an IClient interface;  only
special primary screen calls are accessed through a different
interface, the CPrimaryClient interface.  this simplifies the
server since it no longer needs to test whether the active screen
is the primary or a secondary in most cases.

the server no longer speaks directly to the primary screen;  all
that goes through the CPrimaryClient, which often just forwards
the call.  the primary screen no longer speaks directly to the
server either, again going through the CPrimaryClient via a
IPrimaryReceiver interface.

CServerProtocol classes have been replaced by CClientProxy
classes which are very similar.  the name makes more sense
though.
2002-07-09 21:22:31 +00:00
crs
bdfdc8e816 checkpoint. moved IPrimaryScreen.h. 2002-07-09 17:31:45 +00:00
crs
3138ba373d moved IServerProtocol to server from synergy directory. 2002-07-07 15:15:34 +00:00
crs
217313e013 fixed spurious mouse motions when entering/leaving primary
screen on X11.
2002-07-03 16:25:36 +00:00
crs
d813329c0c mistakenly removed mouse button checks when on secondary screens
from isLockedToScreen() in earlier checkin.
2002-07-01 15:05:49 +00:00
crs
350cd7e2ca checkpoint. 2002-07-01 14:01:23 +00:00
crs
e267d1dc1c now synthesizing key release events for each pressed key when
the client screen is closed.  this fixes the bug where the
client's keyboard was left with some keys logically pressed
when the client died (e.g. using ctrl+c on the client program
from the server's keyboard would leave the ctrl key logically
pressed).
2002-07-01 13:03:16 +00:00
crs
a0eba4c337 disabled removing client if no heartbeat is received. we don't
want that while testing because it might hide bugs.
2002-07-01 13:01:16 +00:00
crs
684ac64742 fixed locking to screen on win32. was using GetKeyboardState()
to query keys but that doesn't give us up-to-date information.
now using GetAsyncKeyState() if on primary and m_keys if on
secondary.
2002-07-01 13:00:12 +00:00
crs
f4a73c28a2 added win32 screen saver class forgotten in previous checkins. 2002-07-01 12:58:52 +00:00
crs
ed8ed72f26 synergy hook DLL will now restart itself if a client tries to
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).
2002-06-26 16:31:48 +00:00
crs
d9b2c59d02 client now compresses mouse motion events. this fixes slow
dragging on grace, possibly on win32 too.
2002-06-26 13:48:08 +00:00
crs
78d28fd6e5 fixed getSize() to be non-blocking in CInputPacketStream. 2002-06-26 13:31:06 +00:00
crs
6cc3b50d3b fixed re-entrant calls to X bug. 2002-06-26 12:44:52 +00:00
crs
1377882a9f fixed handling of jumping to primary when screen saver starts
and back to secondary when it stops.  also now redirecting
keyboard input to root window when screen saver starts;  this
allows the user to type in the lock dialog and also effectively
discards any input used to deactivate the screen saver.
2002-06-23 23:24:22 +00:00
crs
80d11df2f9 checkpoint. 2002-06-23 21:54:05 +00:00
crs
76db457830 win32 screen saver now handled. 2002-06-23 21:53:31 +00:00
crs
7100e07d2b now disabling disable job timer when forcing screen saver
activation.  previously the timer would deactivate the screen
saver shortly after activation.  job timer is restored when
the screen saver is deactivated.
2002-06-23 21:48:33 +00:00
crs
a5391a0a1d checkpoint screensaver changes. now handling xscreensaver
dying and restarting or starting after synergy does.  also
now disabling the screen saver on the client.  next step:
win32 support.
2002-06-23 15:43:40 +00:00
crs
4d113aa235 fixes to get xscreensaver integration working. 2002-06-22 20:29:59 +00:00
crs
95a1ce8798 CXWindowsUtil::CErrorLock wasn't XSync()'ing the display before
installing and uninstalling the new error handler, causing
errors before the lock to be caught and errors during the lock
to not be caught.  had to add Display* as argument to c'tor.
2002-06-22 19:47:27 +00:00
crs
504bfa2def checkpoint. adding screen saver support. only on X so far
and untested.  also some known problems:  not detecting an
xscreensaver started after us and not detecting built-in
screen saver activation (not sure if we can without using
ugly extensions).
2002-06-22 19:20:21 +00:00
crs
4e37691a9c added header files to _SOURCES. 2002-06-22 17:31:24 +00:00
crs
6c6afcc8cb added comments. 2002-06-22 13:55:45 +00:00
crs
c961115686 cleanup. 2002-06-22 12:09:49 +00:00
crs
ede18cb7f3 cleaned up some minor bugs. 2002-06-21 17:55:47 +00:00
crs
e0f66d162f ported network changes to win32. 2002-06-21 17:54:22 +00:00
crs
a996db6600 now trying to convert hostname as a dot notation address before
trying name lookup.  not all platforms will do this for us in
gethostbyname().
2002-06-21 16:29:35 +00:00
crs
327af03d3d fixed CTCPSocket::connect() to allow cancellation. 2002-06-21 16:19:08 +00:00
crs
e2ee2371e0 some cleanup. also fixed a race condition when adding threads
to the thread list:  the child thread would add itself to the
list which means there could be a time interval in the parent
where the child thread exists but isn't on the list.  the
parent now does the adding and removing.
2002-06-21 15:18:01 +00:00
crs
b83c0c5928 now blocking SIGINT and SIGTERM in restart function. the child
should handle the signal and terminate.  then the restart
function will exit.
2002-06-21 15:15:34 +00:00
crs
a65bb19723 signal handler thread now dies when SIGABRT is raised. ignoring
SIGABRT in sigwait() seems to be a bug in the linux pthread
library.
2002-06-21 15:14:32 +00:00
crs
cec075cb60 fixed bug introduced by previous checkin. calling XCheckIfEvent()
multiple times is *not* the same as calling XIfEvent() because the
former will re-encounter events that it didn't process previously.
to make things simple it now pulls events off the queue and saves
them if not processed for selection transfer and puts them back
afterwards.
2002-06-20 16:27:49 +00:00
crs
2423dc662d speeded up clipboard transfer by avoiding a selection request
when it wasn't necessary.  (in particular, we were getting the
clipboard update time from the owner then emptying the clipboard,
so we didn't need to get the time.  worse, most owners don't
support getting the time and we often timed out.)

also fixed a multithread bug using the X display.  we were using
a CThread to send an event after a timeout while we were waiting
in XIfEvent().  this necessarily involved two threads calling
into Xlib at once, which is not allowed.  now using polling to
do the timeout because Xlib doesn't have a function to get
events with a timeout.
2002-06-20 14:01:44 +00:00