Commit Graph

186 Commits

Author SHA1 Message Date
zihao.jiang
2673a77905 server/shadow: Fix alpha pointer message so that it allows pixel with both 'xor' and 'and'.
Integrate idea from @bmiklautz: make convert_alpha_pointer_data function as common
2015-06-28 22:16:29 +08:00
zihao.jiang
457413727f server/shadow: Fix alpha pointer message so that it allows pixel with both 'xor' and 'and'.
Original pointer alpha update message is too specific for x11 implementation.
It doesn't allow pointer alpha mask with both 'xor' color and 'and' mask, e.g.: the 'edit' pointer in windows text box.

1. Move shadow_client_convert_alpha_pointer_data to x11 implementation as it is specific for x11.
2. Update message definition to be more generic: to accept 'xor/and' mask directly.
Implementation of subsystem can implement its own way to convert pointer mask data.
3. Fixed fault handling to free the resource allocated.
2015-06-28 22:16:29 +08:00
zihao.jiang
e00655c3c2 server/shadow: shadow encoder related enhancement/fix.
1. Export fps related API so that subsystem implementation no longer need to know about details in encoder structure.
2. Discard frameList dictionary.
The 'value' in this dictionary is never used and not properly free'ed when client is disconnected.
The dictionary was used to calculate 'inflight' frame count. Once an ACK is received from client, an item in the dictionary is removed.
We then calculate 'inflight' frame by the count of the items in the dictionary.
However, some rdp clients (win7 mstsc) skips frame ACK if it is inactive, ACK of some frame would actually never arrive.
We actually don't need the dictionary. We only need to record the latest acknowledged frame id, and the difference between last sent frame id is the inflight frame count.
3. Minor fix in default fps calculation. encoder->frameAck is wrongly used as integer while it's actually bool flag.
2015-06-23 14:36:53 +08:00
Marc-André Moreau
750e752d45 Merge pull request #2697 from realjiangms/shadow_audio
Shadow server: fix channel disposal and add audio support. fix message mechanism in client
2015-06-22 09:52:53 -04:00
Marc-André Moreau
82179c7d8b Merge pull request #2698 from realjiangms/shadow_stand_alone
server/shadow: Decouple shadow_subsystem and subsystem implementation detail.
2015-06-22 09:39:17 -04:00
Martin Haimberger
0c3a62be7a hardend remdesk channel 2015-06-22 00:12:25 -07:00
Martin Haimberger
6348e41479 channel rdpei hardend 2015-06-18 03:04:32 -07:00
Martin Haimberger
b9853f87eb channel encomsp hardend 2015-06-18 03:04:32 -07:00
Martin Haimberger
0cfbc6648b channel echo hardend 2015-06-18 03:04:32 -07:00
Martin Haimberger
0bf222ec50 hardend rdpdr channel 2015-06-18 03:04:32 -07:00
Martin Haimberger
e5d5cd3c94 hardend cliprdr
hardend cliprdr server and client
also updated all callbacks in the server and client
implementations
2015-06-18 03:04:31 -07:00
Martin Haimberger
156f86e487 hardend channel audin 2015-06-18 03:04:31 -07:00
Martin Haimberger
d06da4f1bd hardend drdynvc channel 2015-06-18 03:04:28 -07:00
zihao.jiang
2335a307cb server/shadow: integrate comment from @hardening
Return directly at subsystem->ClientConnect
Also change to argument to accept shadow_client instead of freerdp_peer
2015-06-16 00:43:17 +08:00
zihao.jiang
131f030e0e server/shadow: Decouple shadow_subsystem and subsystem implementation detail.
Make shadow_subsystem standalone so that others can implement customized shadow server with shadow library.
2015-06-14 22:20:47 +08:00
zihao.jiang
b169dfd930 server/shadow: add connect/disconnect anchor in subsystem callback
Other implementation of subsystem may want to track connect/disconnect of each client
2015-06-14 22:15:47 +08:00
zihao.jiang
8485d866d4 This is originally to add audio support. Several fixes included:
1. Introduce message queue in shadow client. No longer use subsytem->MsgPipe->out to deliver message to clients.
We used to use subsytem->MsgPipe->out for messages which need to be sent to client. But it's not correct. Only one client would get the message if multiple client exists
This problem make the fix in PR #2643 incomplete.
Introduced reference count based solution to release resource taken by the message.
Also added APIs for client message delivery.
Also fixed msg pipe in subsystem to clean resource when destroyed.
2. Discard unused StopEvent in client. We actually use quit message instead.
3. Enhance disposal of channels.
Free context for remdesk and encomsp channels. The original fix only stop the threads, but doesn't release resource.
Dispose channels earlier. The channels are built on client->vcm. Disposing channels after client->vcm is closed cause unknown behavior.
Original fix is #2644
4. Start to add audio support.
2015-06-14 21:45:52 +08:00
Marc-André Moreau
5526348079 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2015-05-21 13:29:59 -04:00
zihao.jiang
85dd90d817 shadow fix multi-client hang
Merge from commit d4df3a952b
Conflicts:

	server/shadow/shadow_subsystem.c
2015-05-11 00:04:07 +08:00
Mike McDonald
b184a7531f Merge branch 'master' of https://github.com/awakecoding/FreeRDP into awakecoding-staging 2015-01-20 08:09:00 -05:00
Mike McDonald
b21331cf1a First cut at server side implementation of RDPDR drive redirection. 2014-12-27 21:17:34 -05:00
Marc-André Moreau
265e8b9e9d cliprdr/server: make channel thread optional 2014-12-18 11:11:36 -05:00
Marc-André Moreau
afce8061b3 cliprdr/server: split add Open/Close callbacks 2014-12-18 10:46:23 -05:00
Marc-André Moreau
a69eaddecd channels/cliprdr: add missing messages in cliprdr server 2014-12-15 17:05:32 -05:00
Armin Novak
e6fa0911a3 Fixed missing extern C 2014-12-01 13:12:51 +01:00
Hardening
ed6f380434 Add server-side RDPEI
This patch mutualize code between client and server for RDPEI. And add support for
the server-side.
2014-11-20 22:19:29 +01:00
Marc-André Moreau
04299bb18b shadow: improve pointer updates 2014-11-07 13:51:10 -05:00
Marc-André Moreau
abd87ace55 rdtk: initial commit 2014-09-29 16:08:08 -04:00
Marc-André Moreau
6eeace868b shadow: start bitmap font loader 2014-09-28 21:41:12 -04:00
Marc-André Moreau
668aa17a22 shadow: add X11 PAM authentication 2014-09-26 19:03:48 -04:00
Marc-André Moreau
aa2e6dacbb shadow: fix frame acks + bitmap negotiation 2014-09-19 12:06:12 -04:00
Marc-André Moreau
09fc388e03 shadow: add RefreshRect/SuppressOutput support 2014-09-18 22:18:58 -04:00
Marc-André Moreau
aa7571648c shadow: start using message queue 2014-09-18 17:22:44 -04:00
Marc-André Moreau
7ef55ab9b7 shadow: improve subsystem structure 2014-09-18 15:43:11 -04:00
Marc-André Moreau
527638c691 shadow: delay subsystem initialization for monitor enumeration 2014-09-18 13:06:49 -04:00
Marc-André Moreau
48d15998e7 shadow: add common subsystem code 2014-09-17 22:58:57 -04:00
Marc-André Moreau
e84e7928e3 server/shadow: split into library + executable 2014-09-17 21:18:47 -04:00
Marc-André Moreau
b7351e0795 Merge branch 'egfx' of github.com:awakecoding/FreeRDP into shadow 2014-09-13 12:04:02 -04:00
Marc-André Moreau
b0d27beae3 mfreerdp: add egfx support 2014-09-13 12:02:53 -04:00
Bernhard Miklautz
96cd479c99 rdpsnd_server_handle_messages: change return type
With BOOL as return type it is not possible to differentiate between
success and "no data can be read" (when a channel read would block).

rdpsnd_server_handle_messages returns now int with the following
possible values:

-1 if no data could be read
0 error (like connection close) (formerly FALSE)
1 succsess (also if further bytes need to be read) (formerly TRUE)

Not using -1 for error cases was chosen to be compatible with the BOOL
return values used before.
2014-09-11 13:45:23 +02:00
Bernhard Miklautz
bbaecbd42d rdpsnd server: add support for clients version < 6
MS-RDPEA 2.2.2.3 states (Appendix A <6>) that quality mode PDU
should be ignored if the client version is < 6. For these clients the sound
channel got never activated since activated was only called after
reception of the quality mode PDU.

For clients < version 6 activated is now called after
CLIENT_AUDIO_VERSION_AND_FORMATS was received.
2014-09-11 12:30:37 +02:00
Marc-André Moreau
e1e8da9490 shadow: add ability to share rectangle within monitor 2014-09-10 16:27:24 -04:00
Marc-André Moreau
34756850e4 shadow: add ability to select monitor to share 2014-09-10 14:58:14 -04:00
Marc-André Moreau
8b4cf07c8a shadow: make use of synchronization barrier 2014-08-08 18:47:46 -04:00
Marc-André Moreau
d9d9bf3609 shadow: start detecting invalid regions manually 2014-08-06 17:51:38 -04:00
Marc-André Moreau
9838200068 libfreerdp-core: fix unix domain socket support 2014-08-06 12:08:00 -04:00
Marc-André Moreau
c45ddc783e shadow: improve DXGI 1.2 error checking 2014-07-18 17:26:21 -04:00
Marc-André Moreau
d8b858811f shadow: initial windows server-side connectivity 2014-07-17 21:15:22 -04:00
Marc-André Moreau
5d4f28a788 Merge branch 'master' of github.com:awakecoding/FreeRDP into shadow 2014-07-17 17:33:33 -04:00
Marc-André Moreau
78520d5141 shadow: add basic server-side encomsp server 2014-07-15 16:34:15 -04:00
Vic Lee
0ba59c842d echo: add server echo channel api. 2014-07-15 11:42:12 +08:00
Marc-André Moreau
e7fb6e67f5 shadow: add basic lobby functionality 2014-07-14 18:01:29 -04:00
Marc-André Moreau
f0ce0b8148 shadow: initial X11 multi-monitor support 2014-07-14 13:33:20 -04:00
Marc-André Moreau
8c9434f0dc shadow: remove header include dependency on subsystem 2014-07-13 21:20:36 -04:00
Marc-André Moreau
04aaf5d59d shadow: add support for frame acks 2014-07-13 19:42:57 -04:00
Marc-André Moreau
e9818e95ac shadow: hook X11 input 2014-07-12 01:18:08 -04:00
Marc-André Moreau
c865fed299 shadow: start hooking X11 subsystem with shadow server core 2014-07-12 00:01:29 -04:00
Marc-André Moreau
3d57659efb shadow: start structuring X11 code as shadow subsystem 2014-07-11 23:01:34 -04:00
Marc-André Moreau
5135467037 shadow: stub more components 2014-07-11 20:49:56 -04:00
Marc-André Moreau
8ae00f7385 shadow: start hooking X11 code as subsystem 2014-07-11 19:30:40 -04:00
Marc-André Moreau
0196a02354 freerdp-shadow: start new cross-platform shadowing server 2014-07-10 15:46:34 -04:00
Hardening
4b6edb913c Make server sound thread optionnal
This patch makes the server-side sound channel thread optionnal, and
exposes functions to handle channel traffic from the outside.
2014-07-02 10:31:45 +02:00
Marc-André Moreau
f7f07c56ba channels/remdesk: stub virtual channel 2014-06-28 17:24:44 -04:00
Marc-André Moreau
64b8ded9f2 encomsp: stub client/server virtual channel 2014-06-23 16:18:03 -04:00
Hardening
f33f755635 Also specify the timestamp when sending samples
This patch complements the SendSample() callback to take the timestamp
as extra argument.
2014-06-18 23:44:34 +02:00
Hardening
99d531655c Implement a confirm block callback
This patch adds a callback called when we receive feedback from the
client.
2014-06-18 23:44:34 +02:00
Hardening
a7023769d0 Fixes in the server-side sound channel
This patch:
* treats OOM situations
* adds checks when reading audio channel messages
2014-04-29 01:02:35 +02:00
Marc-André Moreau
6e1cdf1b67 libfreerdp-core: expose opaque HANDLE instead of WTSVirtualChannelManager* 2014-02-27 13:30:04 -05:00
Marc-André Moreau
9afddf66ad libfreerdp-core: implement WTSVirtualChannelOpenEx 2014-02-16 23:00:58 -05:00
Marc-André Moreau
8a81208059 libfreerdp-core: move server-side virtual channels back into core 2014-02-15 17:42:59 -05:00
Marc-André Moreau
4fbbc03ac9 channels/cliprdr: fix conflict with CLIPRDR_HEADER 2013-11-24 15:35:26 -05:00
Marc-André Moreau
23a8354656 channels: rdpsnd refactoring, drdynvc initial server-side code 2013-08-18 21:52:55 -04:00
Marc-André Moreau
363bd27d76 channels/rdpdr: start server-side device redirection 2013-08-18 18:09:12 -04:00
Marc-André Moreau
af93bee5d2 channels/cliprdr: implement initialization of server-side cliprdr 2013-08-18 15:39:28 -04:00
Marc-André Moreau
0fd705c6c7 channels/cliprdr: start server-side implementation 2013-08-16 16:46:47 -04:00
Vic Lee
5aa49de0c0 include: add some missing extern C decl. 2013-05-19 21:57:08 -07:00
Marc-André Moreau
8ad5932a3d channels: continue event refactoring 2013-03-28 19:33:31 -04:00
Marc-André Moreau
2b9174a69b channels/rdpsnd: cleanup 2013-02-25 21:46:48 -05:00
Marc-André Moreau
709e66a596 libfreerdp: header cleanup 2012-12-14 00:25:48 -05:00
Marc-André Moreau
5b1a7104a0 channels: refactor static server channels 2012-10-13 10:17:52 -04:00
Marc-André Moreau
9d064171a7 freerdp: get rid of old types 2012-10-09 03:26:39 -04:00
Marc-André Moreau
1ed644786c freerdp: change boolean type to BOOL type 2012-10-09 02:38:39 -04:00
Marc-André Moreau
e60a092d81 freerdp: fix headers 2012-10-08 23:02:04 -04:00
Vic Lee
364166a672 server: add audio input server channel. 2012-06-26 14:49:39 +08:00
Vic Lee
106b20cbb0 server/rdpsnd: add SetVolume support. 2012-05-29 22:22:38 +08:00
Vic Lee
052f841d7f server: add rdpsnd server channel library. 2012-05-24 14:03:21 +08:00