Commit Graph

196 Commits

Author SHA1 Message Date
Armin Novak
e1c3adf61f freerdp_image_copy fixes, 8bit color improvements. 2016-10-06 13:42:59 +02:00
Armin Novak
716c5c53e9 256 color support. 2016-10-06 13:42:59 +02:00
Armin Novak
016f3a408b xxx. 2016-10-06 13:42:59 +02:00
Armin Novak
5633f5242a Fixed crashes. 2016-10-06 13:42:59 +02:00
Armin Novak
da956e0388 ... 2016-10-06 13:42:59 +02:00
Armin Novak
24599af991 More color fixes. 2016-10-06 13:42:58 +02:00
Armin Novak
df35c135d1 Fixed color conversion, unified GFX and updated API. 2016-10-06 13:42:58 +02:00
zihao.jiang
e7d9e91864 channels/rdpgfx: Make freerdp_client_codecs_prepare calls codec reset. It fix broken h264 client from #3328. Also it doesn't make sense that we don't need width and height for codec initialization while we need them for codec reset 2016-05-30 02:00:05 +08:00
Hardening
df81e842a5 Merge pull request #2932 from realjiangms/fix_gdi_brush
GDI: Fix usage of gdi_get_brush_pointer.
2015-12-18 10:50:51 +01:00
Bernhard Miklautz
7f7ef1a464 Merge pull request #2831 from akallabeth/gdi_fix
Fixed GDI_BITMAP, now using custom deallocation function.
2015-12-14 17:58:25 +01:00
zihao.jiang
e8fb821be7 GDI: Fix gdi_bitmap_update to check dest buffer size. 2015-10-18 17:53:22 +08:00
zihao.jiang
83d58ccfe8 GDI: Fix usage of gdi_get_brush_pointer.
Currently we get color from brush according to the offset in the paint region.
According to MSDN https://msdn.microsoft.com/en-us/library/dd183396(v=vs.85).aspx, it should get color according to dest position instead of offset in paint region.
2015-10-17 02:49:45 +08:00
Armin Novak
db3fa9a0d2 Added gdi_CreateBitmapEx function. 2015-08-26 12:14:46 +02:00
Armin Novak
e8554a51b8 Selecting correct bitmap in hdc now. 2015-08-12 12:53:35 +02:00
Armin Novak
253a60aaf3 Fixed GDI_BITMAP, now using custom deallocation function.
gdi_surface_bits: Now properly discarding old bitmap before creating a new one.
2015-08-12 11:01:05 +02:00
Norbert Federa
bb9536b867 libfreerdp/gdi: fixed gdi return value madness
Mostly booleanization to comply with the MS API
2015-06-26 14:32:38 +02:00
Marc-André Moreau
29d14773c8 Merge branch 'master' of github.com:FreeRDP/FreeRDP
Conflicts:
	client/Windows/wf_client.c
	libfreerdp/common/assistance.c
2015-05-20 10:12:24 -04:00
Norbert Federa
35c11c721e gdi: fix nullification of instance->context->cache 2015-05-14 20:33:21 +02:00
Norbert Federa
71a4349928 fixed multiple missing gdi return value checks
mainly gdi_Create* functions
2015-05-08 21:39:23 +02:00
Marc-André Moreau
30dd40e10a wfreerdp: fix and improve remote assistance 2015-05-07 14:20:49 -04:00
Norbert Federa
ef1fd12b15 Fix unchecked CreateEvent calls and misc fixes
1)
Added missing checks for CreateEvent which also required the
following related changes:

- changed freerdp_context_new API to BOOL
- changed freerdp_peer_context_new API to BOOL
- changed pRdpClientNew callback to BOOL
- changed pContextNew callback to BOOL
- changed psPeerAccepted callback to BOOL
- changed psPeerContextNew callback to BOOL

2)
Fixed lots of missing alloc and error checks in the
changed code's neighbourhood.

3)
Check freerdp_client_codecs_prepare result to avoid segfaults
caused by using non-initialized codecs.

4)
Fixed deadlocks in x11 caused by missing xf_unlock_x11() calls
in some error handlers

5)
Some fixes in thread pool:
- DEFAULT_POOL assignment did not match TP_POOL definition
- don't free the pool pointer if it points to the static DEFAULT_POOL
- added error handling and cleanup in InitializeThreadpool
2015-04-29 18:18:39 +02:00
Bernhard Miklautz
ff11057d49 gdi: fix problem with gdi_SelectObject check(s)
When a hdc is created no initial or default objects are created
therefore can the first call of gdi_SelectObject return NULL.
Because of this checking the return value of  gdi_SelectObject failed
for newly create hdc causing errors (disconnects).

Since all types of HGDIOBJECT are handled and the return value of
gdi_SelectObject isn't used the recently added checks were removed
again.
2015-04-26 22:28:49 +02:00
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
Bernhard Miklautz
f75ced240d gdi: remove unnecessary includes 2015-03-25 17:38:20 +01:00
Marc-André Moreau
bfdd3bd606 libfreerdp-gdi: fix bitmap update scanline size 2014-11-07 17:19:46 -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
8b1ad6a6cd libfreerdp-gdi: remove some dead code 2014-09-25 10:39:23 -04:00
Marc-André Moreau
bbf4732470 Merge branch 'master' of github.com:FreeRDP/FreeRDP
Conflicts:
	libfreerdp/gdi/gdi.c
2014-09-25 10:34:56 -04:00
Armin Novak
8d7de50f6f Decreased log level for not implemented GDI functions.
All functions only used within gdi.c are now static.
2014-09-25 08:56:55 +02:00
Marc-André Moreau
73c90e0505 libfreerdp-gdi: remove frame marker error output 2014-09-19 14:45:58 -04:00
Marc-André Moreau
24c8e0c4b5 libfreerdp-gdi: fix clipping of bitmap update 2014-09-17 19:55:39 -04:00
Marc-André Moreau
02c1bf14ce libfreerdp-gdi: fix gdi_init 2014-09-17 19:44:59 -04:00
Marc-André Moreau
25f1073aa5 freerdp: fix build problems 2014-09-17 19:19:37 -04: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
3b02eccc06 libfreerdp-gdi: fix 16bpp internal buffer format 2014-09-17 14:55:52 -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
Marc-André Moreau
501386b790 libfreerdp-gdi: partial support for internal ABGR buffer format 2014-09-15 16:08:06 -04:00
Armin Novak
06b609062d Removed remaining printf and DEBUG_* usages. 2014-09-15 09:01:05 +02:00
Armin Novak
2f519d7f16 Replaced logging in libfreerdp with wlog defines. 2014-09-15 08:48:46 +02:00
Marc-André Moreau
198f94fe03 libfreerdp-gdi: add RDP8 graphics pipeline support 2014-09-12 14:57:44 -04: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
a3cdcc1641 libfreerdp-gdi: fix and cleanup new bitmap update code 2014-09-11 20:46:15 -04:00
Marc-André Moreau
5b2a465ee6 libfreerdp-gdi: start optimizing gdi bitmap update 2014-09-11 20:12:32 -04:00
Marc-André Moreau
c71e4e18a1 libfreerdp-core: refactor codec context management 2014-09-10 00:42:41 -04:00
Marc-André Moreau
033e75467b Merge branch 'master' of github.com:awakecoding/FreeRDP into egfx 2014-09-05 17:29:35 -04:00
Marc-André Moreau
66bbbf0519 libfreerdp-gdi: enable altsec frame markers 2014-09-05 16:06:19 -04:00
Marc-André Moreau
320b1d35ed libwinpr-utils: centralize bitmap utils 2014-09-03 16:20:50 -04:00
Marc-André Moreau
82a53057a1 Merge pull request #2023 from ptsekov/software-gdi-improvements
Software GDI improvements
2014-08-18 16:22:23 -04:00
Pavel Tsekov
651887c7e0 Fix erronous use of colors in gdi_patblt().
* libfreerdp/gdi/gdi.c:
(gdi_patblt): Fix a call to freerdp_mono_image_convert() which was
still passed colors in drawing order representation instead of GDI
representation.
2014-08-14 20:21:49 +03:00
Marc-André Moreau
cff9c16c1e Merge branch 'master' of github.com:FreeRDP/FreeRDP
Conflicts:
	channels/disp/client/disp_main.c
2014-08-11 10:36:07 -04:00
Pavel Tsekov
052173de5f Do not assume 32bpp framebuffer when flipping NSCodec bitmaps.
* libfreerdp/gdi/gdi.c (gdi_surface_bits): Do not assume 32bpp
framebuffer when flipping NSCodec compressed bitmaps.
2014-08-07 20:37:06 +03:00
Pavel Tsekov
adb750f7ca Convert NSCodec compressed bitmaps to framebuffer format.
* libfreerdp/gdi/gdi.c (gdi_surface_bits): Convert NSCodec compressed
bitmaps to framebuffer format.
2014-08-07 20:33:30 +03:00
Armin Novak
f4c133eaf8 Replaced custom logging mechanism with WLog wrapper. 2014-08-07 16:51:24 +02:00
Pavel Tsekov
c51c5df2ff * include/freerdp/codec/color.h:
(freerdp_color_convert_drawing_order_color_to_gdi_color): Declare new
function.
* libfreerdp/codec/color.c:
(freerdp_color_convert_drawing_order_color_to_gdi_color): Implement.
(freerdp_image_convert_8bpp): Properly use the ARGB32/ABGR32/RGB32/BGR32
macros when converting 8bpp data to 32bpp.
(freerdp_image_convert_32bpp): Fix CLRCONV_ALPHA and CLRCONV_INVERT
processing for 32bpp destination.
(freerdp_mono_image_convert): Use ARGB32/ABGR32 when converting to 32bpp
and CLRCONV_ALPHA is set.
* libfreerdp/core/orders.c: Color data from drawing orders is
interpreted in big endian mode.
* libfreerdp/core/update.c (update_read_palette): Likewise.
* libfreerdp/gdi/16bpp.c (gdi_get_color_16bpp): GDI colors are stored as
RGB now.
* libfreerdp/gdi/32bpp.c (gdi_get_color_32bpp): Likewise.
* libfreerdp/gdi/gdi.c:
Use freerdp_color_convert_drawing_order_color_to_gdi_color() to convert
from drawing order color representation to GDI color representation
troughout.
* libfreerdp/gdi/graphics.c (gdi_Glyph_BeginDraw): Likewise.
(gdi_Glyph_EndDraw): Likewise.
2014-08-07 00:58:58 +03:00
Benoît LeBlanc
1f2f9dfbdc fix gdi_resize: set primary_buffer to NULL to avoid use after free 2014-08-06 17:02:21 -04:00
Marc-André Moreau
c492017fa1 libfreerdp-codec: fix build bot warnings 2014-07-08 15:48:29 -04:00
Marc-André Moreau
ac7d23b9a3 libfreerdp-gdi: migrate to _aligned_malloc/_aligned_free 2014-07-08 15:07:19 -04:00
Marc-André Moreau
35a1aeac99 libfreerdp-gdi: minor cleanup, set text color on PatBlt 2014-02-13 11:59:05 -05:00
Marc-André Moreau
0a2af868ef libfreerdp-gdi: fix mem3blt SetTextColor 2014-02-11 18:02:26 -05:00
Marc-André Moreau
7fbdf13a61 libfreerdp-gdi: fix mem3blt color conversion 2014-02-11 17:32:08 -05:00
Marc-André Moreau
97dd904a36 libfreerdp-gdi: fix invalidation of region with line drawing 2014-01-28 21:46:47 -05:00
Marc-André Moreau
3cdc490bf4 libfreerdp-cache: refactor glyph cache and add logging 2013-11-01 10:01:16 -04:00
Marc-André Moreau
f790831e7d Merge branch 'master' of github.com:awakecoding/FreeRDP into xrdp-ng 2013-09-05 15:23:19 -04:00
Marc-André Moreau
7edfe66274 freerdp: various missing link dependencies and symbol exports 2013-09-03 21:48:26 -04:00
Marc-André Moreau
0fd705c6c7 channels/cliprdr: start server-side implementation 2013-08-16 16:46:47 -04: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
Norbert Federa
e0e337e278 libfreerdp-gdi: added gdi_surface_frame_marker
Frame markes are not really implemented. Just SendFrameAcknowledge on
SURFACECMD_FRAMEACTION_END if settings->FrameAcknowledge > 0

This fixes issue #1352
2013-07-15 15:00:18 +02:00
Benoit LeBlanc
3f12dc351b wfreerdp: fixed upscaling 2013-04-30 12:56:16 -04:00
Hardening
7701c9d934 Replace printf(...) by fprintf(stderr, ...) 2013-03-28 23:06:34 +01:00
Marc-André Moreau
fc02276b11 libfreerdp-gdi: implemented mem3blt pattern brush support 2013-02-04 11:40:40 -05:00
Marc-André Moreau
72a7b83a7b Merge branch 'master' of github.com:FreeRDP/FreeRDP 2013-02-04 11:05:50 -05:00
Christian Landvogt
401787eeb8 libfreerdp-gdi: added brush style BS_HATCHED
according to [MS-RDPEGDI] 2.2.2.2.1.1.2.3 PatBlt (PATBLT_ORDER)
	16bit and 8bit colour depth are drawn with wrong background colour
2013-02-04 15:58:22 +01:00
Marc-André Moreau
e18a0b807f libfreerdp-core: fix async updates with palettes 2013-02-03 16:19:25 -05:00
Marc-André Moreau
d9ac2cca39 libfreerdp-gdi: fix 8bpp FillRect color 2013-02-03 15:16:37 -05:00
Marc-André Moreau
e1d0fad519 libfreerdp-core: fix memory leaks 2013-01-25 17:52:37 -05: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
b2c3ca8cc4 libfreerdp-utils: replace all calls to deprecated function xzalloc 2012-11-21 19:22:41 -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
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
d5d1eb7762 libfreerdp: add proper config.h inclusions 2012-08-14 17:09:01 -04:00
Marc-André Moreau
19028a27b0 libfreerdp: move all libraries to libfreerdp directory, one step closer to monolithic build option 2012-08-13 23:19:51 -04:00