checkpoint.
This commit is contained in:
parent
4b28ffc5b2
commit
562e3aebb5
206
notes
206
notes
|
@ -1,8 +1,3 @@
|
||||||
CServer
|
|
||||||
* must have connection thread in screen info map
|
|
||||||
allows disconnect if screen map changes and screen is removed
|
|
||||||
* put mutex locks wherever necessary (like accessing m_active)
|
|
||||||
|
|
||||||
server client
|
server client
|
||||||
------ ------
|
------ ------
|
||||||
[accept] <-- connect
|
[accept] <-- connect
|
||||||
|
@ -16,13 +11,22 @@ query info -->
|
||||||
use automake
|
use automake
|
||||||
|
|
||||||
---
|
---
|
||||||
need config file and parser
|
HTTP stuff
|
||||||
remove hard coded debugging stuff (in server.cpp)
|
no way to save config using HTTP
|
||||||
|
should have a button or a page to force save of config
|
||||||
|
or just save config every time it's changed
|
||||||
|
should use authentication (at least basic)
|
||||||
|
|
||||||
|
---
|
||||||
|
use hostname instead of "primary", "secondary"
|
||||||
|
|
||||||
|
---
|
||||||
|
add aliases in config file
|
||||||
|
any alias of a screen name counts as that screen name
|
||||||
|
handy for mapping FQDN <-> hostname
|
||||||
|
|
||||||
---
|
---
|
||||||
win32:
|
win32:
|
||||||
need to support window stations
|
|
||||||
login screen on NT is a separate window station
|
|
||||||
provide taskbar icon
|
provide taskbar icon
|
||||||
|
|
||||||
win32 dll:
|
win32 dll:
|
||||||
|
@ -30,7 +34,91 @@ win32 dll:
|
||||||
don't use standard libraries
|
don't use standard libraries
|
||||||
use custom _DllMainCRTStartup(); just call DllMain() from it.
|
use custom _DllMainCRTStartup(); just call DllMain() from it.
|
||||||
use /MERGE linker switch to merge sections
|
use /MERGE linker switch to merge sections
|
||||||
should use mutex on all public functions
|
|
||||||
|
clean up c:\winnt\synergy.sgc
|
||||||
|
|
||||||
|
desktop switcher program failure when running synergy as service
|
||||||
|
returns access denied from CreateDesktop()
|
||||||
|
don't know why
|
||||||
|
|
||||||
|
log window may prevent changing desktop
|
||||||
|
should start console in a thread just for that purpose
|
||||||
|
|
||||||
|
client will need to be able to retry connecting to server
|
||||||
|
in case server isn't ready yet, client can camp
|
||||||
|
|
||||||
|
---
|
||||||
|
bug with half-duplex keys
|
||||||
|
win32 server sent num-lock to grace
|
||||||
|
grace converts to half-duplex so only synthesizes key down
|
||||||
|
now grace starts server and is locked to screen
|
||||||
|
grace should ignore half duplex keys when seeing if locked to screen
|
||||||
|
|
||||||
|
---
|
||||||
|
CClient and CServer:
|
||||||
|
not checking in stop() that we're actually running
|
||||||
|
must mutex m_primary/m_screen
|
||||||
|
they could be NULL if in the middle of shutting down
|
||||||
|
|
||||||
|
---
|
||||||
|
win32 screen saver
|
||||||
|
win95 etc:
|
||||||
|
keybd_event can terminate screen saver but not mouse_event
|
||||||
|
keybd_event resets screen saver start timer but not mouse_event
|
||||||
|
to kill screen saver (if it's known to be running):
|
||||||
|
PostMessage (GetActiveWindow(), WM_CLOSE, 0, 0L);
|
||||||
|
to find if screen saver is running:
|
||||||
|
FindWindow ("WindowsScreenSaverClass", NULL);
|
||||||
|
win nt 4:
|
||||||
|
mouse_event resets screen saver start timer but not keybd_event
|
||||||
|
neither can stop screen saver because it runs in a separate desktop
|
||||||
|
to kill screen saver:
|
||||||
|
BOOL CALLBACK KillScreenSaverFunc(HWND hwnd, LPARAM lParam)
|
||||||
|
{
|
||||||
|
if(IsWindowVisible(hwnd))
|
||||||
|
PostMessage(hwnd, WM_CLOSE, 0, 0);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
HDESK hdesk;
|
||||||
|
|
||||||
|
hdesk = OpenDesktop(TEXT("Screen-saver"),
|
||||||
|
0,
|
||||||
|
FALSE,
|
||||||
|
DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS);
|
||||||
|
if (hdesk)
|
||||||
|
{
|
||||||
|
EnumDesktopWindows(hdesk, KillScreenSaverFunc, 0);
|
||||||
|
CloseDesktop(hdesk);
|
||||||
|
}
|
||||||
|
|
||||||
|
---
|
||||||
|
unix:
|
||||||
|
restarting fails to connect until a user logs in:
|
||||||
|
Xlib: no protocol specified
|
||||||
|
this is caused by login manager
|
||||||
|
all clients are rejected, except those started by manager itself
|
||||||
|
workaround is to have synergy started by login manager
|
||||||
|
should then use --no-restart, though that's not necessary
|
||||||
|
affects client and server
|
||||||
|
cannot switch screens on login screen:
|
||||||
|
xdm,kdm grab keyboard for duration of login screen
|
||||||
|
synergy cannot switch unless it can grab keyboard
|
||||||
|
gdm doesn't appear to grab keyboard or mouse for duration
|
||||||
|
affects server, only
|
||||||
|
|
||||||
|
get auto-restart into platform code
|
||||||
|
provide a `int(*)(void)' ptr to an auto-restart function
|
||||||
|
function just forks(), calls ptr, waits, repeats
|
||||||
|
may need something else on win32 or maybe just skip it
|
||||||
|
|
||||||
|
---
|
||||||
|
bug in updating screens
|
||||||
|
saw a goofy set of screens after update
|
||||||
|
i think the config was similar to:
|
||||||
|
A B
|
||||||
|
C
|
||||||
|
D E
|
||||||
|
|
||||||
---
|
---
|
||||||
not handling international characters
|
not handling international characters
|
||||||
|
@ -49,42 +137,16 @@ not distinguishing between caps lock and shift lock
|
||||||
either the Lock or the Shift key turns off the mode.
|
either the Lock or the Shift key turns off the mode.
|
||||||
|
|
||||||
---
|
---
|
||||||
problems with CLIPBOARD and KDE and NEdit
|
|
||||||
KDE mail reader (others?) and NEdit never reply to selection request
|
|
||||||
perhaps a general Motif problem?
|
|
||||||
|
|
||||||
currently sending all clipboards to all clients
|
currently sending all clipboards to all clients
|
||||||
some clients may not need all clipboards
|
some clients may not need all clipboards
|
||||||
add filtering mechanism
|
add filtering mechanism
|
||||||
|
|
||||||
must find app that correctly sets the CLIPBOARD selection for testing
|
|
||||||
synergy must note changes to one or both selections
|
|
||||||
seems to be having trouble with noting CLIPBOARD after PRIMARY changes
|
|
||||||
|
|
||||||
investigate klipper
|
|
||||||
KDE's clipboard manager?
|
|
||||||
it crashed once when server did (see below)
|
|
||||||
|
|
||||||
---
|
|
||||||
blown assertion
|
|
||||||
between client being added to screen list and sending screen size:
|
|
||||||
attempt to switch to that screen blows assert
|
|
||||||
x,y isn't inside screen because screen has zero size
|
|
||||||
maybe have a "ready" flag for each client
|
|
||||||
only count ready clients when finding neighbor
|
|
||||||
or don't add client to screen list until fully ready
|
|
||||||
|
|
||||||
---
|
|
||||||
got crash when opening netscape window after trying copy in KDE mail
|
|
||||||
BadWindow in ChangeWindowAttributes
|
|
||||||
also got it when trying to transfer big clipboard from secondary
|
|
||||||
or just after transferring and perhaps trying to set locally
|
|
||||||
|
|
||||||
---
|
---
|
||||||
sometimes not sending correct clipboard
|
sometimes not sending correct clipboard
|
||||||
some kind of race condition i think
|
some kind of race condition i think
|
||||||
can select text then switch and get empty clipboard
|
can select text then switch and get empty clipboard
|
||||||
switching back to owner screen then out gets correct clipboard
|
switching back to owner screen then out gets correct clipboard
|
||||||
|
dunno if this is still a problem
|
||||||
|
|
||||||
---
|
---
|
||||||
win32 not sending correct clipboard
|
win32 not sending correct clipboard
|
||||||
|
@ -93,11 +155,17 @@ win32 not sending correct clipboard
|
||||||
problem persisted; also got 43 bytes for a 2 byte selection
|
problem persisted; also got 43 bytes for a 2 byte selection
|
||||||
|
|
||||||
---
|
---
|
||||||
slow leaving primary screen on X
|
need timeout on CXWindowsClipboard::CReply objects
|
||||||
possibly due to getting primary clipboards
|
should flush replies that are too old
|
||||||
possibly something else
|
assumption is that requestor is broken
|
||||||
could try asynchronously getting primary clipboard
|
|
||||||
race condition on secondary wrt pasting
|
---
|
||||||
|
inconsistencies
|
||||||
|
exceptions
|
||||||
|
using getWhat() in some places to return a code, elsewhere returns message
|
||||||
|
references/pointers
|
||||||
|
should use pointers for any in/out parameter
|
||||||
|
but using references in some places
|
||||||
|
|
||||||
---
|
---
|
||||||
win32 hook DLL sometimes not unloaded when server is killed?
|
win32 hook DLL sometimes not unloaded when server is killed?
|
||||||
|
@ -212,15 +280,6 @@ try to determine keyboard quirks automatically
|
||||||
in particular, set the half-duplex flags
|
in particular, set the half-duplex flags
|
||||||
maybe KBD extension will help determine this
|
maybe KBD extension will help determine this
|
||||||
|
|
||||||
---
|
|
||||||
blown assert:
|
|
||||||
client crashed and primary jumped to primary
|
|
||||||
left over queued motion events then processed
|
|
||||||
caused call to CServer::onMouseMoveSecondary
|
|
||||||
m_protocol is NULL because we're on primary screen
|
|
||||||
must flush queued events when jumping to primary
|
|
||||||
check for other things to do when jumping to primary
|
|
||||||
|
|
||||||
---
|
---
|
||||||
key events sent to console on win me (95/98?) are very slow
|
key events sent to console on win me (95/98?) are very slow
|
||||||
1/4 to 1/2 second delay before key up is processed
|
1/4 to 1/2 second delay before key up is processed
|
||||||
|
@ -237,6 +296,14 @@ adjust thread priorities on win32
|
||||||
a very high priority on client fixes delay when typeing into console
|
a very high priority on client fixes delay when typeing into console
|
||||||
is it the output console causing the slowness?
|
is it the output console causing the slowness?
|
||||||
|
|
||||||
|
---
|
||||||
|
must send up key events when leaving screen for keys still down
|
||||||
|
some key combos get eaten and the key ups aren't sent
|
||||||
|
e.g. ctrl+alt+del on win2k to grace
|
||||||
|
mouse is forced back to to win2k
|
||||||
|
ctrl and alt up not sent to grace
|
||||||
|
grace thinks ctrl and alt are down 'til user physically press/releases them
|
||||||
|
|
||||||
---
|
---
|
||||||
Accessibility Shortcuts
|
Accessibility Shortcuts
|
||||||
|
|
||||||
|
@ -281,26 +348,21 @@ Q179905
|
||||||
may prevent system from getting locked up when debugging.
|
may prevent system from getting locked up when debugging.
|
||||||
|
|
||||||
---
|
---
|
||||||
config file format:
|
how is CTCPSocket::connect() able to cancel?
|
||||||
|
looks like it can't
|
||||||
section screens
|
make it asynchronous and use poll() to wait for connection
|
||||||
<screen>:
|
use testCancel() to make it cancellable
|
||||||
# args in any order
|
|
||||||
# not sure if any args
|
|
||||||
end
|
|
||||||
|
|
||||||
section links
|
|
||||||
<screen>:
|
|
||||||
# args in any order
|
|
||||||
[left=<screen>]
|
|
||||||
[right=<screen>]
|
|
||||||
[up=<screen>]
|
|
||||||
[down=<screen>]
|
|
||||||
end
|
|
||||||
|
|
||||||
---
|
---
|
||||||
will have to redo clipboard stuff on win32
|
win32 rel notes:
|
||||||
|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServices
|
||||||
need timeout on CReply objects
|
can prevent an interactive service from running interactively.
|
||||||
should flush replies that are too old
|
how can we tell if we're not running interactively?
|
||||||
assumption is that requestor is broken
|
even if not interactive we can use MessageBox() to alert user
|
||||||
|
use MB_SERVICE_NOTIFICATION flag
|
||||||
|
must use a separate thread in initialization if called from handler
|
||||||
|
must close dialog if CTRL_LOGOFF_EVENT is received
|
||||||
|
see SetConsoleCtrlHandler() and CLog (which uses it)
|
||||||
|
maybe possible to get around NoInteractiveServices
|
||||||
|
modify DACLs on windows station/desktops to impersonate logged on user
|
||||||
|
see "Interacting with the User by a Win32 Service"
|
||||||
|
|
Loading…
Reference in New Issue