* Added new command line argument --port to allow starting the sample server on a port different than default 3389. * Using GetKnownSubPath now to determine location of temporary directory for server socket. * Using distinct server socket files for each port.
Allows the WinPR HANDLE functions WaitForSingleObject and WaitForMultipleObjects to signal in case of write events. This is used by CreateFileDescriptor and SetEventFileDescriptor, which got an API change accomodating for this new feature.
If SA_SIGINFO isn't set in the flags sa_handler is used instead of sa_sigaction. This fixes also the compiler warning: FreeRDP/winpr/libwinpr/thread/process.c: In function ‘_CreateProcessExA’: FreeRDP/winpr/libwinpr/thread/process.c:282:20: warning: assignment from incompatible pointer type [enabled by default]
The calling thread of CreateProcess can be in any library and can have arbitrary signal masks and handlers. We now save the caller's mask and block all signals before forking. After fork: - child resets the handlers and unblocks all signals. - parent restores the caller's original signal mask.
…lect should be WSAEVENT instead of normal event. From MSDN, it looks same as CreateEvent(NULL, FALSE, FALSE, NULL): The WSACreateEvent function creates a manual-reset event object with an initial state of nonsignaled. The event object is unnamed. However they are not really equivalent. When we use normal event, the WSAEventSelect still works but the event appears to be 'auto-reset'.
Passing True to XSync() discards any pending X11 events. Occasionally this caused ButtonRelease or KeyRelease to be lost and not forwarded to the remote computed, leading to stuck keys and buttons. This should resolve issue #2391