Commit Graph

1620 Commits

Author SHA1 Message Date
akallabeth
8b3f9431de Cleanup/code formatting 2022-02-22 09:44:13 +01:00
Armin Novak
f03059e718 Extended AINPUT API:
* Each event now has a timestamp
* Relative and absolute events are sent simultaneously
* Added a flag indicating relative events are available
2022-02-22 09:44:13 +01:00
akallabeth
e136444f51 Fixed xinput and x11 event priority
* Prefer xinput events over x11 events for mouse input
* Prefer xinput raw events over xinput events:
  * Only use when the mouse is grabbed (events are not bound to a
    specific window but are global)
  * Only use for relative mouse input
2022-02-22 09:44:13 +01:00
akallabeth
d4be1717c2 Fixed window check
Ignore mouse events not originating in session window
2022-02-22 09:44:13 +01:00
akallabeth
db00082974 Implemented xfreerdp relative mouse input 2022-02-22 09:44:13 +01:00
akallabeth
b1a2efde7d Implemented xfreerdp mouse grab 2022-02-22 09:44:13 +01:00
akallabeth
700d6dcd9e Use client/common mouse functions 2022-02-22 09:44:13 +01:00
akallabeth
b2b70fcf6d Use common client channel handling 2022-02-22 09:44:13 +01:00
akallabeth
cdbfff87ea Unified client stop 2022-02-22 09:44:13 +01:00
akallabeth
7641710f60 Use a client/common context component
* Allows moving common client code from specific client to a
  generic client/common implementation
2022-02-22 09:44:13 +01:00
akallabeth
8cc6582044
Unify struct definitions (#7633)
* Unified enum/struct definitions, fixed include issues

* Fixed mac compilation issues

* Added missing include

* Fixed windows server build warnings

* Fixed VS2010 build issue

* Removed unnecessary library linking

* Fixed ThreadPool WinXP compatibility

* Fixed pr review remarks
2022-02-14 14:59:22 +01:00
Armin Novak
2e17cee5a9 Fixed various warnings. 2022-01-31 15:55:10 +01:00
akallabeth
7dedfbb0b0 Added support for getpwuid_r, replaced duplicate code
* Use GetUserNameExA to get current user name when required.
* Add support for getpwuid_r if available
2022-01-25 15:33:04 +01:00
akallabeth
e6e6ed5dbd Cleaned up PubSub
* Callback arguments now const
* Fixed missing includes
2022-01-19 09:24:57 +01:00
Armin Novak
339cdded45 Fixed memory sanitizer warnings 2022-01-11 14:32:18 +01:00
Armin Novak
fd5ac4eed0 Cleaned up wnd.h includes 2021-12-23 14:27:12 +01:00
akallabeth
4a4d783d4f
Moved clipboard custom context checks to implementation (#7501) 2021-12-17 13:47:20 +01:00
akallabeth
298d32164c Removed recursive xf_lock_x11 warning 2021-12-16 12:54:53 +01:00
jackyzy823
90b1b3d540 x11: Add size in xf_cliprdr_fuse_getattr resopnse 2021-11-25 12:24:50 +01:00
Armin Novak
41d77cae46 Fixed /video buffer alignment, added assertions 2021-10-18 10:53:05 +02:00
Armin Novak
9444dab58a Renamed global argument struct 2021-10-14 13:04:59 +02:00
Ian Weir
aa4c3dfb8a Add exit codes for more errors 2021-10-11 08:27:41 +02:00
Armin Novak
b3209fe2b9 Fixed #7326: Ensure proper window size
When leaving fullscreen with enabled smart sizing the window size
did shrink due to first resizing the window, then enabling window
decorations and finally moving to the correct position.
2021-10-05 10:56:33 +02:00
akallabeth
03a9ca80c8
Refactor proxy (#7312)
* Added hidden transport dump and replay options

* Added settings to enable transport dump and replay
* Added check in freerdp_connect to skip authentication on
  dump replay

* Fixed proxy issues

* Proper shutdown handling
* Uninitialized variables
* Skip proxy-client channels, initialize from peer channels and
  config
* Filter static channels like dynamic ones
* Added proxy module filtering from config data (channels, input, ...)

* Removed oboslete proxy decoding related files

* Added defines for RDPECAM channel

* Added proxy config options:

* VideoRedirection
* CameraRedirection

* Fixed duplicate channel free
2021-09-23 14:52:03 +02:00
Hans-Peter Jansen
1d8002f831 Improve fix 2021-09-20 08:13:22 +02:00
Hans-Peter Jansen
ab4b99ec2e Fix X11 floatbar: XGetWindowAttributes returns zero on error 2021-09-20 08:13:22 +02:00
akallabeth
41aaafef77 Added unicode input for xfreerdp 2021-09-17 07:21:45 +02:00
akallabeth
c762aacb3c Fixed XRRGetMonitors leak in xfreerdp 2021-09-13 11:04:03 +02:00
Armin Novak
673fb46836 Fixed uninitialized warnings 2021-09-10 08:16:25 +02:00
Armin Novak
0fe1e2359e Fixed all reserved-id-macro warnings 2021-09-10 08:16:25 +02:00
Armin Novak
b336751861 Fixed AuthenticateEx issues 2021-09-09 08:53:20 +02:00
Armin Novak
520367b2da Fixed smart sizing
Do not limit resolutions when smart sizing is activated
2021-09-09 08:53:20 +02:00
Armin Novak
0f8c52b9ca Fixed const warnings with argument parser 2021-09-09 08:53:20 +02:00
akallabeth
a485306c9e
Moved global static variables to context (#7264)
xfreerdp and wlfreerdp used global static variables for multitouch input. Use fields in client context instead.
2021-09-01 09:44:11 +02:00
Armin Novak
c073ca8ac8 Use MAXIMUM_WAIT_OBJECTS 2021-08-25 13:41:38 +02:00
Armin Novak
5afa592244 Fixed cast-qual warnings 2021-08-24 11:10:51 +02:00
Armin Novak
f515bd4560 Fixed shadowing and type errors 2021-08-24 10:45:57 +02:00
Armin Novak
610396e197 Fixed compilation warnings
Try to get the number of warnings down
2021-08-02 10:28:06 +02:00
Armin Novak
35474abc24 Fixed setting of primary monitor 2021-07-29 15:09:53 +02:00
liuchenghao
8e87e9d6eb Fix that when the window is minimized, click the dock to restore the window, it cannot be restored normally 2021-07-20 12:23:43 +02:00
akallabeth
242f1734ec Fixed dpkg-buildpackage warnings 2021-06-30 11:57:23 +02:00
Ian Weir
a2cf4f591e Add exit codes for logon failure and account locked out 2021-06-28 09:18:17 +02:00
Armin Novak
8ef57bf296 Replaced CMAKE_[SOURCE|BINARY]_DIR with PROJECT_[SOURCE|BINARY]_DIR
Thanks @Pollux42 for the hint in #7096
2021-06-22 08:54:18 +02:00
akallabeth
b453d5e40e Fixed rdtk, uwac and winpr standalone builds 2021-06-22 08:54:18 +02:00
Armin Novak
390e329807 client: Fixed warnings 2021-06-18 11:32:16 +02:00
akallabeth
8d82adb28a Fixed warnings 2021-06-17 10:35:22 +02:00
Armin Novak
ccfe0c129e Removed checks already done by WINPR_ASSERT 2021-06-16 11:46:42 +02:00
Armin Novak
31862e60f9 Added missing return checks 2021-06-16 11:46:42 +02:00
Armin Novak
216f65336e Fixed HashTable and ArrayList use errors 2021-06-16 11:46:42 +02:00
Armin Novak
c2bef2bfa9 Fixed return value checks for ArrayList_Append and HashTable_Insert 2021-06-16 11:46:42 +02:00
Armin Novak
924f1bfebd Fixed xfreerdp check against wrong variable 2021-06-16 11:46:42 +02:00
Armin Novak
d6c84c28fb Renamed ArrayList_Add to ArrayList_Append
* Do not break API silently
2021-06-16 11:46:42 +02:00
Armin Novak
a1c8e4cf85 Refactored ArrayList_Add to conform to other functions 2021-06-16 11:46:42 +02:00
Armin Novak
880c603c26 Renamed HashTable_Add to HashTable_Insert
* Since the changes break HashTable_Add rename it so that it will
  not fail silently
2021-06-16 11:46:42 +02:00
Armin Novak
cb642699c8 Modified HashTable API to be opaque
* Reuse wObject function pointers
* Add missing getters/setters
* Clean up return types, const correctness of arguments
2021-06-16 11:46:42 +02:00
Armin Novak
d36d94766e Replaced assert with WINPR_ASSERT 2021-06-14 09:37:07 +02:00
akallabeth
6b36c6d417
Replace fopen and path functions with wrappers (#7043)
Functions like fopen, PathFileExists, PathMakePath need to call
the wide character versions on windows for utf-8 support.
2021-05-31 11:42:03 +02:00
Armin Novak
1d53117508 Fixed async-input quit 2021-05-20 15:08:40 +02:00
David Fort
4753c64038 X11: don't instanciate a clipboard implementation when clipboard is disabled 2021-05-12 09:19:55 +02:00
Ondrej Holy
892cbe3261 Fix various memory leaks reported by Coverity
Covscan report contains various memory leak defects which were marked
as important. I have spent some time analyzing them and although they
were marked as important, most of them are in error cases, so probably
nothing serious. Let's fix most of them anyway. The rest are false
positives, or too complicated to fix, or already fixed in master, or
simply I am unsure about them.

Relates: https://github.com/FreeRDP/FreeRDP/issues/6981
2021-04-27 14:25:20 +02:00
akallabeth
9f573a1b40 Fixed #6938: Remote app mode clipboard fix
In remote app mode the _FREERDP_TIMESTAMP_PROPERTY does not work.
Therefore ignore it
2021-04-16 11:18:00 +02:00
Norbert Federa
689cb70da2 client/x11: fix parent window size restrictions
If a parent window id is specified, the "workarea limits" of the
display must not apply.
2021-04-16 10:28:14 +02:00
Armin Novak
1fa0b80f7f Removed nautilus clipboard file hack
This prevents remote to properly paste text
2021-03-10 15:48:58 +01:00
Armin Novak
df785f7b77 Refactored X11 clipboard 2021-03-10 15:48:58 +01:00
akallabeth
618227d751 Fix xf_Pointer_SetPosition with smart-sizing 2021-03-08 14:25:59 +01:00
Armin Novak
b1ff171413 Fixed #6014: XFCE minimized state 2021-02-25 14:17:39 +01:00
sss
6574fdf6e4 reverted changes from clang-format 2021-02-25 14:05:40 +01:00
Gluzskiy Alexandr
bee2e1526d allow to use in single threaded mode
(some client side channels and all server side channels still need to be
ported to new api)

server: build fix, do not disable threads for rfx encoder

cliprdr client channel: implemented support for DisableThreads option
looks like thread does not make sense at all for this channel

do not initialize disabled image codecs (respect settings)

channels: client: rail: added support for DisableThreads setting

changed "BOOL DisableThreads" to "UINT32 ThreadingFlags"
dropped unnecessary apu changes

draft implementation of threading settings aware message handling api
for addins/channels

rail: use new messaging api

fixed memory leak

msgs handlers external api changes (as requested)

msgs_handlers: init fix

fixed memory leak

logic fix

resolved problems appeared after rebase to master, dropped unnecessary
changes

git clang-format origin/master

fixed TestFreeRDPCodecRemoteFX.c

"formatting, run `clang-format` please"

properly use new "rfx_context_new(BOOL, UINT32)" everywhere

passed Threading Flags to "rfx_context_new" where available

in older C standarts veriables declaration must be done before any code

requested changes

clang-format as requested

use broken signatures of standert C functions for m$ s**tos

clang-format

requested changes

requested changes

moved ThreadingFlags to stable api zone

define type for channel msg handler

typo fix

clang-format

build fix

us ThreadingFlags from server settings

git clang-format origin/master

clang-format
2021-02-25 14:05:40 +01:00
Max Roncace
bf9bce2c3e Fix /monitor-list flag being ignored on X11/Wayland 2021-02-25 11:47:18 +01:00
Malte Starostik
06219e4ecb X11 client: ignore grab related LeaveNotify events
This fixes click and drag or more generally any press-hold-release combinations
for the primary mouse button.
Without this, click and drag, drag and drop and in, some remote applications
that presumably rely on the full press-release sequence, even button
presses don't always work.
2021-02-23 14:05:11 +01:00
akallabeth
43311130a2 Fixed CodeQL warnings 2021-02-19 11:19:49 +01:00
akallabeth
1dae0552d7 Fixed various warnings 2021-02-16 16:28:57 +01:00
akallabeth
293d7511e9 Fixed #6712: Use window size from settings
The xfc->window might be NULL (remote app, ...)
2021-02-15 09:03:03 +01:00
Martin Fleisz
6b686eb834
Merge pull request #6806 from akallabeth/xfreerdp-twos-complement-wheel-mask
clients: Use the correct wheel rotation value
2021-02-11 12:21:50 +01:00
Pascal Nowack
1087a5e1a6 clients: Use the correct wheel rotation value
For the negative scrolling direction, RDP uses the two's complement,
instead of the positive wheel value with the negative flag.
xfreerdp currently uses the positive wheel value in addition to the
negative flag, which results in a wrong wheel value on the server side
(136 instead of 120).

Fix this, by using the correct wheel rotation value, which is in the
two's complement.
2021-02-11 09:54:03 +01:00
akallabeth
d3ed42a799 Fixed #6801: Delay sending of resolution change
Changed the logic of the disp channel to wait for 800ms after a
ConfigureNotify before sending the new resolution.
The problem fixed with this patch is the following:
1.  Resize the window with the mouse
2.  ConfigureNotify triggers a resize notification
3.  The server resizes to the desired resolution
3a. More ConfigureNotify events are generated
4.  The local window resize to the new resolution triggers another
    ConfigureNotify

a. Depending on the timing (sending is already rate limited) the
   events from 3a and 4 will make the size of the window jump
b. Very fast resizing will pick a random resolution from the
   sequence of ConfigureNotify events as the final resolution
2021-02-10 15:38:03 +01:00
Armin Novak
65647d5763 Use separate codec contexts for legacy and GFX 2021-02-10 10:38:24 +01:00
Martin Fleisz
784f445aa1
Merge pull request #6609 from akallabeth/clip_response
Fixed sending of clipboard format request response
2021-02-05 10:18:08 +01:00
Martin Fleisz
21158c0e8b
Merge pull request #6537 from akallabeth/kbd_remap
Added option to remap scancodes
2021-02-05 09:31:45 +01:00
akallabeth
a51f4ccaaa Filter out duplicate ClientFormatList announcements 2021-01-25 10:34:11 +01:00
akallabeth
2efb7d9274 Fixed sending of clipboard format request response
If a request was pending and new formats were announced the response
to a ServerFormatDataRequest was never sent.
2021-01-25 10:32:50 +01:00
akallabeth
f3dad4106a Fixed support for huge files in clipboard 2021-01-25 08:43:46 +01:00
Ondrej Holy
d7566f5f5a
client: Fix exit codes for /help and similar option (#6741)
* client: Fix exit codes for /help and similar option

Currently, non-zero exit code is returned for /version, /buildconfig, /help,
/monitor-list, /kbd-list and /kbd-lang-list command-line options for several
clients. This is against conventions because 0 is usually returned in
such cases. Also, there is potentially another problem that the returned
codes overflow on UNIX systems (where the exit code is a number between 0
and 255). Let's fix the clients to return 0 in the mentioned cases to honor
conventions and 1 for the command-line parsing errors (or -1 for clients
who already use that value).

Fixes: https://github.com/FreeRDP/FreeRDP/issues/6686

* Refactored freerdp_client_settings_command_line_status_print_ex

Now returns 0 if help or version information was requested.

* Do not eliminate original error status.

Co-authored-by: akallabeth <akallabeth@posteo.net>
2021-01-22 09:44:55 +01:00
akallabeth
4ca2090f03 Return ENOENT if fuse_ino_t is not found 2021-01-18 19:13:56 +01:00
Armin Novak
78435c2eea Added missing errno.h include 2021-01-18 19:13:56 +01:00
Armin Novak
72d9b7f7f5 Added add_definitions(-D_FILE_OFFSET_BITS=64) 2021-01-18 19:13:56 +01:00
jackyzy823
b972d70a9e x11: refactor fuse code 2021-01-18 19:13:56 +01:00
jackyzy823
7f043ebb52 x11: update cmake file to build with fuse2/fuse3 or without fuse 2021-01-18 19:13:56 +01:00
jackyzy823
1de1f113ed x11: more error handling for remote to local file copy 2021-01-18 19:13:56 +01:00
jackyzy823
a61c185d30 x11: implement all related code to file content request for size and FD_WRITESTIME flag in response , fix include dir for fuse 2021-01-18 19:13:56 +01:00
jackyzy823
d537988f28 x11: add support for remote to local clipboard file copy 2021-01-18 19:13:56 +01:00
Armin Novak
555e1ad8f2 Properly discard xfc->appWindow on focus loss 2021-01-11 15:18:30 +01:00
akallabeth
50e1c20786 Fixed #6635: Use correct window handle for pointer operations 2021-01-11 15:18:30 +01:00
kubistika
32ed597f5a x11: use correct contact flag names in xf_input_touch_state_string 2021-01-02 11:05:10 +01:00
Simon Tatham
1dc8198803 Command-line option to choose an X selection.
I personally find it more convenient to have pasted data written to
the X11 PRIMARY selection, so that I can paste it with a fast middle-
button click, than to write to CLIPBOARD which typically needs a key
sequence or menu action.

This commit adds a command-line option to let me express that
preference: now I can say "/clipboard:use-selection:PRIMARY" on the
command line, which not only enables clipboard transfer but also says
which X selection I want it to talk to. The previous options
"+clipboard" and "-clipboard" are also still supported.
2020-11-20 08:34:20 +01:00
Simon Tatham
c90479c7f5 winpr/utils: allow COMMAND_LINE_VALUE_{OPTIONAL,BOOL} to coexist.
Now you can give an option the combination of flags
COMMAND_LINE_VALUE_OPTIONAL and COMMAND_LINE_VALUE_BOOL. If you do,
then all three of the syntaxes +foo, -foo and /foo:value are allowed
at once, and the receiving code can tell the difference because the
Value field is set to BoolValueTrue, BoolValueFalse or a valid char
pointer.
2020-11-20 08:34:20 +01:00
Simon Tatham
3c104d9b9b xf_cliprdr: fill in support for TIMESTAMP requests.
A selection owner is supposed to respond to a request for the
selection target TIMESTAMP by providing the X server time at which the
selection was written. There was a /* TODO */ comment in xf_cliprdr
where the code to do that should have been.

The absence of this can cause a problem when pasting into some X
clients. xtightvncviewer, in particular, will give up the attempt to
read from the clipboard at all if it doesn't get a satisfactory
response to the initial TIMESTAMP request - and the non-answer zero
value "CurrentTime" counts as unsatisfactory. It won't be happy with
anything short of a real X server time value.

(Checking the VNC source code, that's because it reads both PRIMARY
and CLIPBOARD and picks the one with the later timestamp. So it does
depend on the timestamps existing.)

When you're writing to the selection in response to a normal X event
like a mouse click or keyboard action, you get the selection timestamp
by copying the time field out of that X event. Here, we're doing it on
our own initiative, so we have to _request_ the X server time. There
isn't a GetServerTime request in the X protocol, so I work around it
by setting a property on our own window, and waiting for a
PropertyNotify event to come back telling me it's been done - which
will have a timestamp we can use.
2020-11-20 08:34:20 +01:00
akallabeth
13c8a60b70 Fixed display channel anounce race
* The display resolution change message was prone to a race condition
* Check for actual fullscreen state instead of settings
* Assume 75dpi for display resolution to mm conversion
2020-11-13 18:09:07 +01:00
akallabeth
dfbf300389 Conservative keyboard state sync, refactored input API 2020-11-10 10:26:41 +01:00
akallabeth
66dc4cc9ee Fixed compilation warnings. 2020-11-10 08:53:43 +01:00