Commit Graph

124 Commits

Author SHA1 Message Date
Armin Novak
61d380943d Added bounds check in rdpgfx_recv_wire_to_surface_1_pdu 2021-03-12 10:52:04 +01:00
Armin Novak
75aab487e2 Added duplicate initialization check for plugins. 2020-08-10 16:17:44 +02:00
akallabeth
cac8c365f2 Reset pointer to NULL after free. 2020-05-20 15:10:08 +02:00
Vladyslav Hordiienko
15245c2abd fix typo in GFX logs 2020-05-18 10:56:40 +02:00
akallabeth
64ad42b95b Fixed DestroyListener arguments and call order 2020-05-13 17:11:17 +02:00
akallabeth
2f5e5359f6 Destroy channel listeners on terminate 2020-05-12 11:40:42 +02:00
Kobi Mizrachi
929457db4c egfx: client: add missing NULL checks 2020-03-09 08:28:40 +01:00
Armin Novak
35d7e896ae Fix GFX cache eviction, use 1 based indexing. 2020-03-04 11:01:23 +01:00
Martin Fleisz
174832150e
Merge pull request #5932 from nfedera/fix_gfx_bitmapcache_indexing
Fix RDPEGFX bitmap cache indexing
2020-03-04 09:31:52 +01:00
Norbert Federa
17e0d25104 dynvc/client: fix and improve channel closing code
- fixed and consolitate the duplicated code for sending the
  CLOSE_REQUEST_PDU to the server into dvcman_close_channel
- call dvcman_close_channel if a dynamic channel plugin fails
  to process the received channel data
- rdpegfx: don't try to remove a non-existing cache entry,
  return an error instead which now will close the channel, as
  expected by Microsoft's windows protocols test suite
2020-03-04 08:03:56 +01:00
Norbert Federa
39e12990e8 rdpegfx: rename MaxCacheSlot to MaxCacheSlots
Although Microsoft uses 1-based numbering on the wire for indexing the
GFX bitmap cache entries, the code in FreeRDP uses 0-based numbering and
therefore the name MaxCacheSlots is less confusing.
2020-03-02 09:55:25 +01:00
Norbert Federa
f4d5ec776f rdpegfx: use 1-based indexing for bitmap cache
Weird but Microsoft uses 1-based indexing in the RDPGFX bitmap
cache PDU's.

This does not seem to be documented but can be deducted from the
RDP client test code in Microsoft's "Windows Protocol Test Suites"
GitHub repository and the observation that mstsc aborts with a
protocol error if the cacheSlot index value 0 is used in e.g. a
GFX surface to cache PDU.
2020-03-02 09:55:25 +01:00
Armin Novak
03e2106f25 Fixed accidental reorder of surface delete and disconnect 2020-01-16 15:24:55 +01:00
Kobi Mizrachi
18be21a4fa rdpgfx: client: fix leak when using rdpgfx_client_context_new API 2020-01-13 13:41:44 +01:00
Armin Novak
72ca88f49c Reformatted to new style 2019-11-07 10:53:54 +01:00
kubistika
bf2e1a33d0 channels: rdpgfx: export API to create rdpgfx client 2019-10-24 12:19:31 +02:00
Armin Novak
f93d625cde Use GetTickCount64 instead of GetTickCountPrecise. 2019-09-02 15:46:36 +02:00
kubistika
bf618fb929 rdpgfx/client: Update gfx->UnacknowlegedFrame correctly 2019-06-06 10:24:27 +03:00
kubistika
bf97d3e041 rdpgfx/client: Expose QoeFrameAck 2019-06-06 07:53:34 +03:00
kubistika
98e09af2ff rdpgfx/client: Implement CacheImportOffer PDU 2019-06-06 07:53:34 +03:00
kubistika
e2eeb9f870 rdpgfx: Add WITH_DEBUG_RDPGFX option 2019-06-04 10:29:05 +03:00
Armin Novak
f22b77d49c Fixed GFX flags and CapsConfirm return checks 2019-05-09 12:46:10 +02:00
Armin Novak
7b2608a938 Added gfx capability filter option.
With this new option it is possible to selectively disable certain
GFX capability versions. This way buggy behaviour can be addressed
at runtime.
2019-05-08 11:43:22 +02:00
Armin Novak
1bb933b991 Fixed missing argument checks.
The arguments for rdpgfx_send_frame_acknowledge_pdu must be checked
as in some call stacks they might be NULL.
2019-05-07 13:46:24 +02:00
Armin Novak
3b7e46fb0e Updated GFX to 10.6 spec 2019-05-07 12:10:13 +02:00
akallabeth
95b8b43d4d
Merge pull request #5376 from kubistika/bugfix/rdpgfx-server-v10.6-PDUs
rdpgfx: Fix GFX v10.6 PDUs parsing and naming according to the spec
2019-05-06 15:32:32 +02:00
akallabeth
314fcee41e
Merge pull request #5377 from m4ntis/gfx/fix-caps-confirm-recv
client/rdgpfx_main.c: Fix rdpgfx_recv_caps_confirm_pdu caps length read
2019-05-06 12:51:23 +02:00
Armin Novak
841cb70f91 Fixed const correctness of gfx function pointer
Signed-off-by: Mati Shabtay <matishabtay@gmail.com>
2019-05-05 16:17:15 +03:00
Mati Shabtay
eee234c239 rdpgfx/client: Add callbacks for manual caps sending and frame acking 2019-05-05 15:56:35 +03:00
Mati Shabtay
e9dfe13a70 client/rdgpfx_main.c: Fix rdpgfx_recv_caps_confirm_pdu caps length read 2019-05-05 13:39:04 +03:00
kubistika
e9faaedc85 rdpgfx: Fix GFX v10.6 PDUs parsing and naming according to the spec 2019-05-05 12:34:57 +03:00
Mati Shabtay
6e8c02c9ee Added optional PreFrameAck callback to RdpgfxClientContext (#5303)
* RdpgfxClientContext: Add PreFrameAck callback

* client/rdpgfx_main.c: Call PreFrameAck callback before acking frame

* client/rdpgfx_main.c: Fix windows_msbuild_vs2010 CI build

* client/rdpgfx_main.c: Fix error logs log level
2019-04-05 13:37:51 +02:00
Mati Shabtay
5d808226af client/rdpgfx_main.c: Fix wire to surface 2 pixel format decode 2019-03-18 16:07:18 +02:00
Armin Novak
11cefecb7b Temporarily disable GFX version >= 10.3 2019-03-04 09:07:27 +01:00
Armin Novak
9be2324be8 Disabled RDPGFX_CAPVERSION_106 for good. 2019-02-28 13:43:11 +01:00
Armin Novak
69e9571d9e Fixed EGFX capability parsing, respect length fields.
Disable RDPGFX_CAPVERSION_106 as we currently do not support scaled
outputs.
2019-02-27 17:15:43 +01:00
Armin Novak
e8c8e7b6d0 Updated EGFX support to 10.6 2019-02-27 16:36:15 +01:00
Armin Novak
5904cad1f7 Replaced hardcoded xfreerdp program name 2019-02-12 10:53:30 +01:00
Armin Novak
25076cfce1 Fixed a memory leak. 2018-02-09 10:23:48 +01:00
David Fort
191b8f950f Fix for #4330
Since ec027bf dynamic resolution is broken when used with egfx. Before that commit
we were tracking a server sent resize by setting a DesktopResize callback. This callback
is called when the desktop is resized by the server. Anyway the problem was that when this
callback is called, the activation sequence is not always completed, which were leading to
some freeze with 2012r2 servers (sending packets before the sequence is finished).
So with the faulty commit, we are tracking server resizes by subscribing to the Actived
event, that is called at the end of a reactivation sequence, so we're sure to not send packets
when not fully activated.
Anyway the issue that shows on (#4330) is that when you use egfx, no reactivation sequence happens,
the server only sends a ResetGraphics message with the new size, and so we miss the resized event.
This fix introduces a new GraphicsReset event, makes the display channel subscribe to that event,
and react accordingly.
2017-12-23 13:50:54 +01:00
David Fort
158840429d micro code style changes 2017-12-23 10:26:25 +01:00
David Fort
41823080f9 Fix users of Stream_GetPosition() that returns size_t 2017-12-11 22:38:58 +01:00
David Fort
5d5376faa7 egfx: fix disconnection caused by invalid cache entries due to wrong announced cache size
Added some checks so that when setting a cache entry fails, we close connection (or
we fail later when trying to use that empty entry).
The small cache egfx capability has also been fixed.
2017-10-10 17:12:16 +02:00
Martin Fleisz
e28ea4555f channels: Don't send gfx capversion 10 if AVC420 is requested 2017-09-11 12:05:03 +02:00
Mike Gabriel
c045bddf3f Fix typos in some error messages 2017-08-03 08:38:05 +02:00
Armin Novak
0490aeb018 Fixed clang malloc integer overflow warnings. 2017-07-20 09:29:48 +02:00
Armin Novak
5764d5a78a Disable GFX H264 if no backend compiled in. 2017-07-17 09:25:21 +02:00
Armin Novak
f414522b7a Added setting for QoeAck. 2017-05-18 14:07:09 +02:00
Armin Novak
b6e5ec5039 Added client RDPGFX_QOE_FRAME_ACKNOWLEDGE_PDU 2017-05-18 14:07:09 +02:00
Armin Novak
2a92cc9631 Use a preallocated logger instance for GFX
The static logger functions of WLog have quite a heavy performance
penalty. Use a pointer to an allocated logger to speed things up.
2017-05-15 17:24:47 +02:00