Commit Graph

172 Commits

Author SHA1 Message Date
Norbert Federa
84577b1ca7 codec/rfx: error checking and various fixes
- removed some unneeded null checks for free()
- fixed a memory leak in shadow_client
- removed rfx_compose_message_header from API

Changed the following functions to BOOL, check the result
where they are called and handle failures:
- rfx_compose_message
- rfx_compose_message_header
- rfx_write_tile
- rfx_write_message_tileset
- rfx_write_message_frame_begin
- rfx_write_message_region
- rfx_write_message_frame_end
- rfx_write_message

rfx_process_message:
- check memory allocation failures
- verify protocol-conform order of data messages to prevents memory
  leaks caused by repeated allocations
- verify that header messages were parsed/received before the
  data messages
- treat unknown rlgr mode as error
- fixed/added error handling
- fixed all callers to check/handle result

rfx_encode_message:
- fixed incorrect usage of realloc
- missing malloc check
- missing check of CreateThreadpoolWork
- correct cleanup on failure (threadpool, memory)
- check rfx_encode_message result

rfx_encode_messages:
- check rfx_split_message result
- correct cleanup on failure
- prevent memory leak on failure

rfx_write_message_context:
- fixed invalid channelId value (must be 0xFF for WBT_CONTEXT)

rfx_process_message_codec_versions:
- fixed invalid read size of codec_version (it is 16bit)

rfx_process_message_channels:
- verify protocol conform channelId value

rfx_process_message_region:
- replaced invalid reallocs with malloc
- read and verify regionType and numTileSets from stream

rfx_process_message_tileset:
- check allocation results
- fixed incorrect usages of realloc

setupWorkers:
- fixed incorrect usages of realloc

rfx_split_message:
- removed dead code
- missing malloc check

rfx_compose_message:
- fixed a memory leak
- check/handle rfx_encode_message result
2015-04-23 15:42:21 +02:00
Bernhard Miklautz
db81151ea4 gdi: fix broken return type checks
Integrates comments from pull request.
2015-04-21 14:18:07 +02:00
Bernhard Miklautz
2c072d33d3 Fix GDI return values and other fixes
* top level GDI functions return 0 on error and != 0 otherwise but the
  low level functions (16bpp.c, 8bpp.c 32bpp.c) which are called did it
	exactly the other way around. Those were adapted.
* change gdi_InvalidateRegion to BOOL and check calls where appropriate
* integrate comments from pull request
2015-04-21 14:18:07 +02:00
Bernhard Miklautz
515502ffa5 change return types of callbacks to BOOL
* change all client/server callbacks to BOOL
* update all clients accordingly
* add multiple return value checks
* small fixes
2015-04-21 14:18:07 +02:00
Norbert Federa
5c68b1cf22 xfreerdp: fix RDP order color conversion
Note: /gdi:sw was working fine, this commit fixes /gdi:hw

* calculate color channel shifts based on X11 visual color masks
* fast path to skip conversion if visual color masks equal rdp color masks
* successfully tested 8/15/16/24/32 bpp rdp sessions on 16/24/32 bpp visuals
2014-12-15 16:34:09 +01:00
Norbert Federa
85297fb343 xfreerdp: remove duplicated drawing operations
Most of xfreerdp's hw gdi callbacks did the the same X11 drawing operation
twice: Initially on the primary pixmap to keep the back buffer up to date
and then directly on the window in order to see the result.
This sequence is followed by a call to gdi_InvalidateRegion() to mark the
rectangular area of the drawing operation.
Since in xfreerdp's current design (or better current evolved state) the
backbuffer pixmap is obligatory, all drawing operations directly targeting
the window are redundant because of the subsequent EndPaint (mapped to
xf_hw_end_paint) where the damaged region is copied from the backbuffer
to the drawable.

- removed X11 drawing operations which directly target the window drawable
- fixed some errors in the calculation of the required update regions
2014-12-01 11:19:27 +01:00
Norbert Federa
84a4514ca9 xfreerdp: fix polyline
X11 gdi polyline has been broken by commit 3de5c62.
We don't need to convert the point coordinates if XDrawLines is called with
coordinate mode CoordModePrevious.
2014-11-16 18:48:14 +01:00
Marc-André Moreau
f9814379cd xfreerdp: remove usage of XAllocColor (slow) 2014-11-10 11:15:37 -05:00
Hardening
7b108f1aa8 Merge pull request #2141 from zhangzl2013/polyline
fix polyline.
2014-10-31 22:15:13 +01:00
Marc-André Moreau
23e4963102 xfreerdp: remove dependency on clrconv 2014-10-21 22:19:11 -04:00
Marc-André Moreau
5f95f0776f libfreerdp-codec: add freerdp_image_copy_from_monochrome replacement function for deprecated freerdp_mono_image_convert 2014-10-21 21:56:10 -04:00
Zhang Zhaolong
3de5c62bf3 fix polyline. 2014-10-09 18:11:38 +08:00
Marc-André Moreau
2a5192b027 Merge branch 'master' of github.com:awakecoding/FreeRDP into egfx
Conflicts:
	client/Windows/wf_cliprdr.h
	client/Windows/wf_event.h
	client/X11/xf_client.c
	client/X11/xf_gdi.c
	libfreerdp/gdi/gdi.c
	server/Mac/mf_input.c
2014-09-17 19:09:56 -04:00
Marc-André Moreau
73471eb1f0 libfreerdp-gdi: fix 8bpp mode 2014-09-17 18:30:09 -04:00
Marc-André Moreau
48b35be953 xfreerdp: fix X11 16bpp mode 2014-09-17 14:29:56 -04:00
Marc-André Moreau
1b7a84419c xfreerdp: partial fix for X11 16bpp mode 2014-09-16 19:12:26 -04:00
Marc-André Moreau
b25258e8c6 libfreerdp-gdi: add support for ABGR plain colors 2014-09-15 16:28:53 -04:00
Armin Novak
7913a57bc5 Using wlog for logging in clients now. 2014-09-15 08:55:00 +02:00
Marc-André Moreau
7130b7064e libfreerdp-gdi: fix bitmap caching 2014-09-12 01:03:19 -04:00
Marc-André Moreau
45d2bab95d xfreerdp: optimize bitmap updates 2014-09-11 22:29:09 -04:00
Marc-André Moreau
08373c50bc Merge branch 'master' of github.com:FreeRDP/FreeRDP into egfx 2014-09-10 10:44:48 -04:00
Marc-André Moreau
c71e4e18a1 libfreerdp-core: refactor codec context management 2014-09-10 00:42:41 -04:00
Pavel Tsekov
831375aa47 xfreerdp: use _aligned_free instead of free
Use _aligned_free to release memory allocated with
freerdp_image_convert().

Fixes #2075
2014-09-08 15:00:47 +02:00
Marc-André Moreau
66bbbf0519 libfreerdp-gdi: enable altsec frame markers 2014-09-05 16:06:19 -04:00
Marc-André Moreau
5107f07b52 Merge pull request #2057 from ptsekov/software-gdi-improvements
Adjust the X11 code to work with the new GDI color
2014-09-05 15:05:53 -04:00
Pavel Tsekov
cdfcbeff5c X11: Convert GDI color to X11 color troughout.
* client/X11/xf_client.c (xf_pre_connect): Set the field `colormap' of
`struct xfContext' to the default colormap.
* client/X11/xfreerdp.h (xf_gdi_get_color): Declare new external function.
* client/X11/xf_gdi.c (xf_gdi_get_color): Define new external function.
Use xf_gdi_get_color() to get the appropriate X color index from the GDI
color representation.
* client/X11/xf_graphics.c: Likewise.
2014-09-04 12:44:03 +03:00
Pavel Tsekov
08d60d01e0 Adjust the code to work with the new GDI color
representation.
* client/X11/xf_gdi.c:
Use freerdp_color_convert_drawing_order_color_to_gdi_color() to convert
from drawing order color representation to GDI color representation
troughout.
* client/X11/xf_graphics.c: Likewise.
2014-08-21 03:35:34 +03:00
Armin Novak
0780c0993e Replaced fprintf(stderr with DEBUG_WARN 2014-08-07 22:21:07 +02:00
Marc-André Moreau
83edc68422 xfreerdp: start integrating graphics pipeline 2014-06-04 18:03:25 -04:00
Marc-André Moreau
eb20d0f770 freerdp: fix order of OrderSupport initialization 2013-12-10 12:30:25 -05:00
ZhaoHongbo
1ce5e908eb Fix some software can not normal work 2013-12-03 09:57:57 +08:00
Armin Novak
1e2455fa4a Fixed various memory leaks and compiler warnings. 2013-09-05 12:14:33 +02:00
Marc-André Moreau
1e5118116d libfreerdp-codec: start implementing split NSCodec encoder 2013-08-14 23:16:13 -04:00
Marc-André Moreau
fe25303656 libfreerdp-codec: internal refactoring 2013-08-13 17:18:59 -04:00
Marc-André Moreau
bb78fb16f8 xfreerdp: refactor to make use of single xfContext* and remove xfInfo* 2013-06-12 18:57:25 -04:00
Hardening
7701c9d934 Replace printf(...) by fprintf(stderr, ...) 2013-03-28 23:06:34 +01:00
Marc-André Moreau
c19c8a40dd libfreerdp-core: fix some async updates race conditions 2013-02-14 17:43:37 -05:00
Marc-André Moreau
5034ad7aa4 xfreerdp: combine X11 updates 2013-02-09 18:10:45 -05:00
Marc-André Moreau
4269ac5c14 xfreerdp: improve asynchronicity 2013-02-09 17:13:53 -05:00
Marc-André Moreau
2d38f99db0 libfreerdp-core: add true asynchronous input and update 2013-02-06 21:57:49 -05:00
Marc-André Moreau
9d1fdbacfe Merge branch 'master' of github.com:FreeRDP/FreeRDP 2013-02-04 11:41:45 -05:00
Marc-André Moreau
72a7b83a7b Merge branch 'master' of github.com:FreeRDP/FreeRDP 2013-02-04 11:05:50 -05:00
Christian Landvogt
69d85ed350 X11-client: fully fix swapped R<->B colours
as in commit 38c85de539
2013-02-04 16:22:37 +01:00
Christian Landvogt
3d8c2d510b x11-client: added brush style BS_HATCHED
according to [MS-RDPEGDI] 2.2.2.2.1.1.2.3 PatBlt (PATBLT_ORDER)
2013-02-04 15:28:48 +01:00
Marc-André Moreau
e18a0b807f libfreerdp-core: fix async updates with palettes 2013-02-03 16:19:25 -05:00
Vic Lee
6b91ed5830 Frame acknowledgement should be sent by client UI. 2013-01-17 12:58:01 +08:00
rdp.effort
4d90284657 Renamed CODEC_ID_NONE to RDP_CODEC_ID_NONE as it is already defined in
avcodecs.h
Fixed a warning in schannel_openssl.c
Added checks for: input, mcs, tpdu, certificate, license
2013-01-12 14:49:01 +01:00
Marc-André Moreau
8a32de3801 libfreerdp: purged source tree from deprecated memory utils 2012-11-21 21:22:06 -05:00
Marc-André Moreau
ebc09d17d8 libfreerdp-core: started refactoring rdpSettings 2012-11-07 10:33:06 -05:00
Marc-André Moreau
9d064171a7 freerdp: get rid of old types 2012-10-09 03:26:39 -04:00
Marc-André Moreau
1bf8a45519 freerdp: change uint8, sint8, uint16, sint16 to BYTE, INT8, UINT16, INT16 2012-10-09 03:01:37 -04:00
Marc-André Moreau
1ed644786c freerdp: change boolean type to BOOL type 2012-10-09 02:38:39 -04:00
Marc-André Moreau
5612bc43f8 freerdp: change true/false to TRUE/FALSE 2012-10-09 02:31:28 -04:00
Marc-André Moreau
9909a12af5 libfreerdp-utils: get rid of xmalloc, xrealloc and xfree 2012-10-08 23:21:26 -04:00
Marc-André Moreau
e60a092d81 freerdp: fix headers 2012-10-08 23:02:04 -04:00
Marc-André Moreau
faa4311232 libwinpr: add proper config.h inclusions 2012-08-14 17:20:53 -04:00
lysannkessler
6b754ab836 casting context to xfContext in more lines and more code clarity 2012-07-25 19:05:03 +02:00
Lysann Kessler
083711fd09 use xfContext->settings->color_depth instead of xfi->srcBpp 2012-07-25 00:09:14 +02:00
Vic Lee
aca53f3973 x11: implement frame marker. 2012-05-26 14:41:38 +08:00
Aurimas Fišeras
64ad250f2d fix more color conversion problems for 16-bit displays
based on d588e30a
2012-05-17 21:55:51 +03:00
Bernhard Miklautz
25107cde67 xfreerdp: nocodec/nscodec free ximages after use 2012-03-29 13:01:42 +02:00
Vic Lee
3fa2c4830e nsc: refactor nsc decoder #1
o the decoded argb buffer can be reused to enhance performance
o pass width, height and bpp through nsc_process_message() call
o rename nsc_context_destroy to nsc_context_free and make it actually free the context
2012-03-05 17:32:14 +08:00
Aaron Small
135a380d7f When a server sends an update where the bitmap data is insufficient to
cover the area the server indicates in width and height, discard the
update instead of crashing.
2012-03-04 16:59:15 -05:00
Michael Osborne
d588e30a38 correct colors for 16-bit displays 2012-03-02 16:49:52 -06:00
Christian Nilsson
38c85de539 fix known swaped b<>r colors in polygon drawings. 2012-02-13 22:07:20 +01:00
Marc-André Moreau
233b0b6ef4 libfreerdp-gdi: add mem3blt support 2012-02-12 19:41:39 -05:00
Marc-André Moreau
46e9eeb695 xfreerdp: added support for Mem3Blt 2012-02-12 18:12:28 -05:00
Marc-André Moreau
f7a71079dd xfreerdp: reintroduce Polygon drawing 2012-02-12 17:14:59 -05:00
David Sundstrom
88d55493a9 Resolve a race condition between a local move update to the RDP server, GDI orders, and RAIL orders. Previously we could receive new GDI orders for the new window position before we received the RAIL order for the new position. The caused drawing errors.
Also correct some errors in managing the GDI damage region.
2012-01-13 18:08:51 -06:00
Marc-André Moreau
c7cc745575 libfreerdp-codec: add freerdp_convert_color_var() 2012-01-09 18:45:36 -05:00
David Sundstrom
dcdf1d7a5b Invert rectangle colors when X server uses inverted colors 2012-01-09 15:39:19 -06:00
Anthony Tong
adfb223133 xfreerdp: fix patblt pixmap leak & quick fix for patblt brush 2011-12-31 16:00:26 -06:00
Marc-André Moreau
2d34a62ce8 libfreerdp-codec: fix color conversion issues for OpaqueRect with --gdi sw,hw 2011-12-30 10:00:03 -05:00
Anthony Tong
b455455365 xfreerdp: patblt fix, set stipple before drawing the rect 2011-12-21 18:51:22 -05:00
Marc-André Moreau
af6e914cf3 update: modify surface frame marker callback 2011-11-25 11:30:15 -05:00
Norbert Federa
c2514dbcae core: add update callback for the surface frame marker command
- clients will need this to present the offscreen to the display
  in the correct state in order to avoid flickering and artefacts
  and to do frame acknowledgement.

- added empty callback to xfreerdp.
2011-11-25 11:48:51 +01:00
Marc-André Moreau
587cc8eaaf update: move secondary drawing orders to sub-interface 2011-11-21 19:41:49 -05:00
Marc-André Moreau
f17a25e08d update: move primary orders into sub-interface 2011-11-21 18:11:43 -05:00
Marc-André Moreau
a63a196f53 types: refactoring to make use of standard data types when available 2011-11-19 12:19:16 -05:00
Marc-André Moreau
b1afaccafe xfreerdp: fix red text cursor bug 2011-11-17 16:54:08 -05:00
Marc-André Moreau
55294ad654 xfreerdp: fix opaque rect with 16bpp surfaces 2011-11-15 14:10:34 -05:00
Marc-André Moreau
b2644901f4 libfreerdp-cache: refactoring of color table cache 2011-11-11 02:07:53 -05:00
Marc-André Moreau
a1b8dfd79f libfreerdp-cache: got glyph drawing partially working 2011-11-09 12:16:09 -05:00
Marc-André Moreau
823e3414d6 libfreerdp-cache: initial glyph cache support 2011-11-08 23:26:44 -05:00
Alan Pearson
4735dcc5c7 Reorder header files. X11 headers need to be before freerdp/types.h otherwise we get warnings about redefinition of True and False 2011-10-27 10:29:16 -07:00
Marc-André Moreau
9165505e0d xfreerdp: improved 8bpp support 2011-10-21 12:17:04 -04:00
Marc-André Moreau
488a4161f5 libfreerdp-core: refactoring of callback prefix 2011-10-20 23:15:18 -04:00
Marc-André Moreau
b7e7067176 libfreerdp-core: refactoring of core bitmap objects 2011-10-20 17:28:59 -04:00
Nicolas Graziano
73e8afcd65 Reset XSetFunction to GXcopy afert each command.
There is a function wich do not correctly set XSetFunction to GXcopy, but
I did not find which one.
So Reset to GXcopy after each modification, it's a bit overkill but it's
 prevent black square on screen.
2011-10-19 16:35:49 +02:00
Marc-André Moreau
5d9e8b2e28 libfreerdp-core: cleanup of freerdp interface 2011-10-16 21:02:28 -04:00
Marc-André Moreau
fb5a7d73e4 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2011-10-16 00:50:48 -04:00
Marc-André Moreau
c639ec8593 libfreerdp-core: refactoring of context pointers into rdpContext 2011-10-16 00:50:10 -04:00
Anthony Tong
0f69c586da fix xf_gdi_bitmap_update() memory leak 2011-10-15 11:32:12 -05:00
Marc-André Moreau
be6d043dd6 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2011-10-13 15:51:20 -04:00
Marc-André Moreau
8999bd8599 libfreerdp-cache: refactoring of bitmap and offscreen bitmap cache, fix major memory leaks 2011-10-13 15:51:07 -04:00
Marc-André Moreau
a40a971ea3 libfreerdp-core: fix polyline order parsing 2011-10-12 18:10:54 -04:00
Marc-André Moreau
fadce7ca56 xfreerdp: fix region invalidation in polyline 2011-10-12 16:00:10 -04:00
Marc-André Moreau
2121a4a5cc libfreerdp-gdi: merge fix from ngraziano for offscreen cache handling 2011-10-11 21:15:32 -04:00
Nicolas Graziano
2f06da5dae In memblt when index is 255 get from offscreen.
See http://msdn.microsoft.com/en-us/library/cc241608(v=prot.10).aspx
2011-10-12 02:21:35 +02:00
Nicolas Graziano
d08e82c171 Correct creation of offscreen bitmap.
data is null in xf_bitmap_new when called from xf_gdi_create_offscreen_bitmap.
2011-10-12 02:19:14 +02:00