Commit Graph

3129 Commits

Author SHA1 Message Date
David Fort
4e0003533e Parses the SupportStatusInfoPdu early capability and send it to clients if supported 2017-02-09 11:50:46 +01:00
Volth
e7487cea27 Add command line option to override action script path 2017-02-08 08:30:24 +00:00
David Fort
6d8969ece6 Merge pull request #3747 from nfedera/improve-generic-rgb-to-yuv420
primitives: RGB to YUV420 (non SIMD) optimizations
2017-02-07 11:19:25 +01:00
Norbert Federa
490473d26f primitives: RGB to YUV420 (non SIMD) optimizations
- added a dedicated non-simd encoder for BGR[AX] source formats
- simplified the generic RgbToYuv420 encoder and fixed the crash
  with odd dimensions
2017-02-06 15:48:52 +01:00
Norbert Federa
246801ec11 Merge pull request #3740 from akallabeth/gdi_color_conversion
Fix for GDI color decoding issues.
2017-02-06 15:13:56 +01:00
Armin Novak
8845b3ffa2 Added warning for unsupported color depth. 2017-02-06 10:31:43 +01:00
Norbert Federa
cb5dfd831f primitives: added SSSE3 rgb to yuv420 encoder
Currently supported source pixel formats are:
- PIXEL_FORMAT_BGRA32
- PIXEL_FORMAT_BGRX32

Support for PIXEL_FORMAT_RGB[XA]32 can simply be added if
required (see the comment in prim_YUV_opt.c).

On my old 3.1 GHz Core i5-2400 the new SSSE3 function can convert
over 900 1080p BGRX frames per second.

The current non-optimized C version (which supports all pixel formats)
can't do more than 40 yuv conversions per second on this cpu.

---------------------------+---------+-------------+-----------+-------
RGB TO YUV420 1080p 32bit  |   COUNT |       TOTAL |       AVG |    FPS
---------------------------+---------+-------------+-----------+-------
general_RGBToYUV420        |     500 |    13.1776s | 0.026355s |     38
ssse3_RGBToYUV420          |     500 |     0.5320s | 0.001064s |    940

Also fixed an error in TestPrimitivesYUV which generated resolutions
with height or width set to zero
2017-02-03 13:56:50 +01:00
Norbert Federa
6001cb710d Merge pull request #3717 from akallabeth/prim_fixes
Fixed primitives.
2017-02-01 11:11:27 +01:00
Armin Novak
df764f5aad Fixed GDI color decoding issues. 2017-02-01 11:02:23 +01:00
Armin Novak
16de1bca2b Removed unused profiler. 2017-01-31 14:18:28 +01:00
Martin Fleisz
c2eacd3b31 Build: Use correct pdb names when installing with symbols 2017-01-31 13:32:51 +01:00
Armin Novak
dbfbd5b086 Fixed argument order of yCbCrToRGB_16s8u_P3AC4R 2017-01-31 10:49:59 +01:00
Armin Novak
c4122d342c Added performance profiler to YUV test. 2017-01-31 10:31:34 +01:00
Armin Novak
a926c73641 Fixed compiler warning. 2017-01-31 10:05:45 +01:00
Armin Novak
d7426d4516 Reverted RGB2V 2017-01-31 10:04:00 +01:00
akallabeth
0d0eb78838 Merge pull request #3725 from chipitsine/master
make cppcheck even more happier
2017-01-27 18:49:35 +01:00
David Fort
a6dbc32cf3 Added missing const modifiers for source pointers in codecs 2017-01-27 11:23:08 +01:00
Ilya Shipitsin
12f5368819 make cppcheck even more happier:
[channels/tsmf/client/gstreamer/tsmf_X11.c:317] -> [channels/tsmf/client/gstreamer/tsmf_X11.c:322]: (warning) Either the condition '!decoder' is redundant or there is possible null pointer dereference: decoder.
[channels/tsmf/client/gstreamer/tsmf_X11.c:470] -> [channels/tsmf/client/gstreamer/tsmf_X11.c:475]: (warning) Either the condition '!decoder' is redundant or there is possible null pointer dereference: decoder.
[channels/tsmf/client/gstreamer/tsmf_X11.c:472] -> [channels/tsmf/client/gstreamer/tsmf_X11.c:475]: (warning) Either the condition '!decoder' is redundant or there is possible null pointer dereference: decoder.
[channels/tsmf/client/tsmf_media.c:179] -> [channels/tsmf/client/tsmf_media.c:181]: (warning) Either the condition '!stream' is redundant or there is possible null pointer dereference: stream.
[client/Windows/wf_cliprdr.c:2219] -> [client/Windows/wf_cliprdr.c:2222]: (warning) Either the condition '!formatDataResponse' is redundant or there is possible null pointer dereference: formatDataResponse
[client/Windows/wf_cliprdr.c:2445] -> [client/Windows/wf_cliprdr.c:2448]: (warning) Either the condition '!fileContentsResponse' is redundant or there is possible null pointer dereference: fileContentsResponse.
[client/X11/xf_cliprdr.c:911] -> [client/X11/xf_cliprdr.c:913]: (warning) Either the condition '!clipboard' is redundant or there is possible null pointer dereference: clipboard.
[client/X11/xf_graphics.c:504] -> [client/X11/xf_graphics.c:506]: (warning) Either the condition '!xfc' is redundant or there is possible null pointer dereference: xfc.
[libfreerdp/core/transport.c:861] -> [libfreerdp/core/transport.c:863]: (warning) Either the condition '!transport' is redundant or there is possible null pointer dereference: transport.
[server/shadow/shadow_server.c:777] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:778] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:779] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:781] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:782] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:783] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:784] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:785] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:787] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:789] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
2017-01-26 14:44:19 +05:00
Armin Novak
d39f4a4d3d Removed unused functions. 2017-01-24 12:54:02 +01:00
Armin Novak
b04b8303e6 Using faster transformation for RFX decoder. 2017-01-24 11:37:24 +01:00
Armin Novak
0d6fb17921 Fixed NEON primitives. 2017-01-24 09:08:03 +01:00
Armin Novak
dd430f78f6 Fixed YUV tests. 2017-01-24 09:08:03 +01:00
Armin Novak
adcd09cd46 Enabled ASM primitives. 2017-01-24 09:08:03 +01:00
Bernhard Miklautz
924a84b324 Merge pull request #3708 from akallabeth/termination_fixes
Client channel shutdown fixes
2017-01-23 15:47:39 +01:00
Armin Novak
7ed99623df Fixed channel connected status. 2017-01-23 14:18:19 +01:00
Armin Novak
b233afc076 Fixed uninitialized variable warning. 2017-01-23 13:27:30 +01:00
Armin Novak
00c32f62d3 Fixed alpha channel for color formats without. 2017-01-23 11:32:26 +01:00
Armin Novak
6188a12b37 Fixed planar with if local framebuffer is 16bpp 2017-01-23 11:32:25 +01:00
Bernhard Miklautz
85da68c334 Merge pull request #3703 from akallabeth/prim_optimize
[PERFORMANCE] Inlined heavily used functions
2017-01-23 10:39:02 +01:00
David Fort
f68888a978 Add a callback that allows to adjust monitors layout
This callback is useful in server mode when you want to adjust the monitor
layout just before the server monitor layout PDU is built and sent.
2017-01-19 18:05:44 +01:00
David Fort
e775a2a46f Treat the result of the Capabilities callback
The result was ignored. Plus return the correct value in case of licence error (-1
instead of FALSE).
2017-01-19 17:57:44 +01:00
Armin Novak
34eb0e5d9d Progressive structs to private header for tests. 2017-01-18 16:41:02 +01:00
Armin Novak
d9810dd7a4 Progressive struct now opaque. 2017-01-18 16:16:29 +01:00
Armin Novak
ace5100e21 Progressive conversion and speed fixes
* Using destination color format and precomputed tile stride
* Using preallocated logger
2017-01-18 15:28:53 +01:00
Armin Novak
7198970a4e Removed obsolete primitive usage. 2017-01-18 15:28:53 +01:00
Armin Novak
7e4c6c6a48 Optimized functions, removed duplicates. 2017-01-18 15:28:53 +01:00
Armin Novak
9cf6af36fb Inlined shift operations. 2017-01-18 15:28:53 +01:00
Armin Novak
326aafc7f8 Inlined freerdp_image_copy helpers. 2017-01-18 15:28:53 +01:00
Armin Novak
da84552ba7 Inlined interleaved helper functions. 2017-01-18 15:28:53 +01:00
Armin Novak
6be6eb2f18 Optimized freerdp_image_fill 2017-01-18 15:28:53 +01:00
Armin Novak
6b7b1cec39 Optimized general_YUV444ToRGB_8u_P3AC4R for BGRX 2017-01-18 15:28:53 +01:00
Armin Novak
4d40b3c58e Inlined heavy used functions. 2017-01-18 15:28:53 +01:00
Armin Novak
948e633ed3 Optimized general_RGBToRGB_16s8u_P3AC4R for BGRX 2017-01-18 15:28:53 +01:00
Armin Novak
d76ecc7662 Optimized general_yCbCrToRGB_16s8u_P3AC4R for BGRX 2017-01-18 15:28:53 +01:00
Armin Novak
69dde84c72 Fixed broken variable declaration. 2017-01-18 14:30:06 +01:00
Bernhard Miklautz
de34329ed6 Merge pull request #3702 from akallabeth/clear_reset_fix
ClearCodec fix #3642
2017-01-18 14:28:27 +01:00
Martin Fleisz
95b3665f11 Merge pull request #3704 from bmiklautz/versioning
Library naming and man pages
2017-01-17 19:14:56 +01:00
Armin Novak
ea45c148c0 Return OK in case of channel not connected. 2017-01-17 16:27:56 +01:00
Armin Novak
56a1425bca Do not terminate channel disconnect if one fails. 2017-01-17 16:06:12 +01:00
Norbert Federa
1046c95751 Merge pull request #3669 from xhaakon/master
Limit MultifragMaxRequestSize in server mode
2017-01-16 18:18:43 +01:00
Bernhard Miklautz
3a4e1adee7 utils: remove unnecessary debug message.
Change the level from info to debug as it's nothing a regular users
would have interest in.
2017-01-16 11:11:58 +01:00
Bernhard Miklautz
bbb6bf6b43 Include major version number in library names
Currently it is not possible to cleanly install multiple major version
of FreeRDP concurrently as some of the development libraries (.so files)
files can conflict.

This change renames all libraries to include the major version number in
the library name to fix this limitation.

The list of changed libraries:

libwinpr-tools.so -> libwinpr-tools2.so
libwinpr.so -> libwinpr2.so
libfreerdp.so -> libfreerdp2.so
libfreerdp-client.so -> libfreerdp-client2.so
libfreerdp-shadow.so -> libfreerdp-shadow2.so
libfreerdp-server.so ->  libfreerdp-server2.so
libfreerdp-shadow-subsystem.so -> libfreerdp-shadow-subsystem2.so
libuwac.so -> libuwac0.so

As the library names have changed, projects that use FreeRDP will need to
update their dependencies. -
If pkg-config or cmake find modules are used, reconfiguration might be
sufficient.

Fixes #3460
2017-01-16 11:11:58 +01:00
Martin Fleisz
e218dc03af Merge pull request #3701 from akallabeth/progressive_inlined
[performance] Progressive inlined
2017-01-16 10:36:28 +01:00
Armin Novak
6fec7e591d Do not reset V-Bar storage. 2017-01-13 11:14:30 +01:00
Norbert Federa
71ce3378da Merge pull request #3665 from realjiangms/fix_ssl_add_all_digests
Winpr/openssl: Fix digests initialization in multi-thread
2017-01-13 09:46:14 +01:00
Martin Fleisz
99c9195218 Merge pull request #3694 from akallabeth/avc420_black_artifact_fix
Fixed solid fill command.
2017-01-13 09:24:52 +01:00
Martin Fleisz
ae9e6c9d7e Merge pull request #3688 from akallabeth/clear_codec_buffer_resize_fix
Clear codec buffer resize fix
2017-01-12 17:27:05 +01:00
Armin Novak
fa3af20771 Inlined progressive helper functions. 2017-01-12 15:35:19 +01:00
Armin Novak
ebfa0ccc7d Unified clipping of byte values. 2017-01-12 15:30:06 +01:00
Jakub Adam
463cb41596 Allow custom MultifragMaxRequestSize in server mode
FreeRDP calculates default request size in server mode based upon
the desktop resolution. In practice, however, I've found clients (namely
MS Lync 2013) which would show only a black screen when the value is
greater than 0x3EFFFF.

This change allows to override the default in such special cases by
assigning a different value to server->settings->MultifragMaxRequestSize
after the shadow server structure is initialized in shadow_server_new().
2017-01-11 16:36:05 +01:00
Armin Novak
2f9ec8c61a Unified clear internal buffer resize.
Internal datastructures now opaque.
2017-01-11 15:39:04 +01:00
Armin Novak
c444ccbe6e Removed duplicated format variable. 2017-01-11 15:39:03 +01:00
Armin Novak
8f58e7fc06 Initializing gdi.stride on resize. 2017-01-11 15:31:48 +01:00
Armin Novak
0bae21e619 Initialize alpha channel in planar decode. 2017-01-11 13:41:47 +01:00
Armin Novak
936e5a05dc Fixed solid fill command.
If the alpha channel must be ignored in this command.
2017-01-11 13:25:44 +01:00
akallabeth
3762401d43 Merge pull request #1750 from ccpp/master
Support for HTTP-Proxy
2017-01-11 11:02:00 +01:00
Martin Fleisz
72bcc7367e Merge pull request #3661 from akallabeth/error_status
Error status for DNS errors
2017-01-11 11:01:48 +01:00
akallabeth
1c39601740 Merge pull request #3684 from akallabeth/channel_attach_warn_fix
Fixed function argument types. #3683
2017-01-11 10:15:09 +01:00
Armin Novak
dd52f039f0 Fixed function argument types. #3683 2017-01-10 09:17:14 +01:00
akallabeth
8fd926f085 Merge pull request #3681 from mfleisz/openssl110_include_fix
Fix compilation with OpenSSL 1.1.0 using MSVC
2017-01-09 17:07:08 +01:00
Bernhard Miklautz
caebc3d629 Merge pull request #3680 from akallabeth/patblt_fix
Fixed patblt for mono color. #3678
2017-01-09 17:02:49 +01:00
Martin Fleisz
4f5aa69efc Merge pull request #3662 from akallabeth/session_detach_support
Session detach support
2017-01-09 16:58:57 +01:00
Martin Fleisz
ac090520c3 Fix compilation with OpenSSL 1.1.0 using MSVC 2017-01-09 16:43:28 +01:00
Armin Novak
08606323d6 Fixed software GDI line to pen color. 2017-01-09 16:35:34 +01:00
Bernhard Miklautz
6be43d43c2 Use common handle ids for all channels
Channels with regular and extended interface need to live in the same
handle name space otherwise they can't be uniquely identified in the
global channel manager.
2016-12-28 12:05:01 +01:00
Armin Novak
6d075ad719 Add "Ex" interface support for external channels
Support the VirtualChannelEntryEx interface also for channels that are
not static (as in compiled in).
2016-12-28 11:21:14 +01:00
zihao.jiang
a505a6cd27 Winpr/openssl: Fix digests initialization in multi-thread
SSL functions like OpenSSL_add_all_digests should be invoked at very beginning as they are not MT safe.
If not we might meet double free exception as following:

 #0  0x00007f23ddd71c37 in raise () from /lib/x86_64-linux-gnu/libc.so.6
 #1  0x00007f23ddd75028 in abort () from /lib/x86_64-linux-gnu/libc.so.6
 #2  0x00007f23dddae2a4 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
 #3  0x00007f23dddba55e in ?? () from /lib/x86_64-linux-gnu/libc.so.6
 #4  0x00007f23dc6ecfcd in CRYPTO_free () from /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
 #5  0x00007f23dc6ef8d1 in OBJ_NAME_add () from /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
 #6  0x00007f23dc77dcd8 in EVP_add_digest () from /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
 #7  0x00007f23dc782321 in OpenSSL_add_all_digests () from /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
 #8  0x00007f23c781da28 in winpr_openssl_get_evp_md (md=4) at /home/zihao/workspace/zihao_FreeRDP/winpr/libwinpr/crypto/hash.c:52
 #9  0x00007f23c781dccb in winpr_Digest_Init (ctx=0x7f22d064d470, md=<optimized out>) at /home/zihao/workspace/zihao_FreeRDP/winpr/libwinpr/crypto/hash.c:344
 #10 0x00007f23d486139b in security_salted_mac_signature (rdp=0x7f23859f5a20, data=0x7f238542d4fb "\004\204\022\004", length=4743, encryption=<optimized out>, output=0x7
     at /home/zihao/workspace/zihao_FreeRDP/libfreerdp/core/security.c:378
 #11 0x00007f23d488d73f in fastpath_send_update_pdu (fastpath=<optimized out>, updateCode=4 '\004', s=0x7f23859f5f40, skipCompression=true)
     at /home/zihao/workspace/zihao_FreeRDP/libfreerdp/core/fastpath.c:1076
 #12 0x00007f23d4891c4f in update_send_surface_frame_bits (context=0x7f23859f5540, cmd=0x7f22b2ffcc80, first=true, last=true, frameId=6)
     at /home/zihao/workspace/zihao_FreeRDP/libfreerdp/core/update.c:1041

Related reports: https://rt.openssl.org/Ticket/Display.html?id=2216&user=guest&pass=guest
2016-12-28 03:48:40 +08:00
Armin Novak
9f19da798c Added attach/detach support for channels. 2016-12-19 17:07:01 +01:00
Armin Novak
ece9491932 Printing a warning if a error is overwritten. 2016-12-19 14:13:36 +01:00
Armin Novak
8250bbd6c8 Setting DNS error if lookup fails. 2016-12-19 13:49:40 +01:00
Norbert Federa
9359ae8ee9 fix format specifier in profiler_print 2016-12-19 10:01:18 +01:00
Norbert Federa
f71b6b46e8 fix string format specifiers
- fixed invalid, missing or additional arguments
- removed all type casts from arguments
- added missing (void*) typecasts for %p arguments
- use inttypes defines where appropriate
2016-12-16 13:48:43 +01:00
Bernhard Miklautz
227efd34f3 rfx: fix possible segfault in error case 2016-12-14 10:31:17 +01:00
Christian Plattner
8658f04f42 Code reformatting of proxy.c, proxy.h 2016-12-13 12:12:04 +01:00
Christian Plattner
3cc39b2dcd Dynamic environment variable length of $https_proxy 2016-12-12 17:16:12 +01:00
Armin Novak
1a149e5e1e Clear codec internal format: keep API compatible 2016-12-12 17:04:41 +01:00
Christian Plattner
50a3f55063 Bug: strndup not supported in windows 2016-12-12 16:56:52 +01:00
Christian Plattner
58ef7cc42d More abstracted proxy handling 2016-12-10 23:13:35 +01:00
Christian Plattner
a72c184108 Bugfix setting HTTP proxy name (fixes environment variable detection) 2016-12-10 19:00:32 +01:00
Christian Plattner
d9e28c24ad Use logging API for HTTP proxy 2016-12-10 18:59:58 +01:00
Christian Plattner
5d10b3bf5b Merge branch 'gateway-http-bugfix'
Conflicts:
	client/common/cmdline.c
	include/freerdp/settings.h
	libfreerdp/common/settings.c
	libfreerdp/core/settings.c
	libfreerdp/core/tcp.c
	libfreerdp/core/transport.c
2016-12-09 20:43:02 +01:00
Christian Plattner
49a6273c91 Revert "HTTP Proxy: Simplify using buffered BIO and trio_asprintf"
This reverts commit 91eddce7fb.

Conflicts:
	libfreerdp/core/proxy.c
	libfreerdp/core/tcp.c
2016-12-09 19:18:42 +01:00
Armin Novak
39b08ebdb7 Provide clear codec intermediate format. 2016-12-07 13:47:56 +01:00
Armin Novak
319c767f7c Fixed clear codec glyph cache. 2016-12-07 13:28:42 +01:00
Armin Novak
514a33d435 Respecting color depth with RDP_CODEC_ID_NONE. 2016-12-07 13:22:52 +01:00
Armin Novak
d4b823d5cb Using a single codec context per session. 2016-12-07 13:22:00 +01:00
Bernhard Miklautz
d1e0d44f22 Merge pull request #3626 from akallabeth/primitives_speedup
Added optimized pixel write functions for colors.
2016-12-06 14:34:35 +01:00
Martin Fleisz
055d0126ab client/win: Too many params in function call 2016-12-05 13:47:19 +01:00
Martin Fleisz
f12100d9de codec: Fix broken return values 2016-12-05 13:44:08 +01:00
Martin Fleisz
4b65a95f5a codec: Minor code cleanup 2016-12-05 13:43:45 +01:00
Armin Novak
a1b2325c1d Ensure securityFlags are always initialized. 2016-12-02 12:04:53 +01:00
Martin Fleisz
c75142a894 codec: Fix compiler errors 2016-12-02 11:13:20 +01:00
Armin Novak
dc9e748c2f Extensive debug messages for clear_decompress. 2016-12-02 09:41:02 +01:00
akallabeth
ac9e7530d3 Merge pull request #3637 from mfleisz/rfx_api_simplify
codec: Remove src format parameter from rfx_process_message
2016-12-02 09:38:33 +01:00
Martin Fleisz
e059e3dea3 codec: Remove src format parameter from rfx_process_message
This parameter is not required. Default param is BGRX32
and if an other format is required rfx_codec_set_pixel_format
can be used.
2016-12-01 17:21:06 +01:00
Armin Novak
c33754ae1d Fixed unused and uninitialized warnings. 2016-12-01 15:36:49 +01:00
Bernhard Miklautz
00dae7c5ef Fix some spelling errors
Fixes #3633
2016-12-01 15:36:49 +01:00
Armin Novak
7a8f7c2f1b Added optimized pixel write functions for colors. 2016-11-28 09:21:12 +01:00
Norbert Federa
c6e6b44143 countless WLog/printf format specifier fixes 2016-11-25 17:06:25 +01:00
akallabeth
215fbe8446 Merge pull request #3613 from mfleisz/rlgr_api_revamp
codec: Revamp of rfx rlgr API
2016-11-25 13:44:23 +01:00
Martin Fleisz
9e474b43d1 Merge pull request #3623 from akallabeth/mouse_wheel_event_check
Check hwheel capability before sending mouse event.
2016-11-25 13:41:07 +01:00
akallabeth
3e6c54f9bd Merge pull request #3624 from mfleisz/comp_fix
primitives: Fix compiler error
2016-11-25 11:12:10 +01:00
akallabeth
f23487907e Merge pull request #3615 from nfedera/openssl_1.1.0
Support for OpenSSL 1.1.0
2016-11-25 11:07:58 +01:00
Martin Fleisz
cf4b8a1ae9 primitives: Fix compiler error 2016-11-25 10:47:00 +01:00
Martin Fleisz
506aa78857 Merge pull request #3619 from akallabeth/image_copy_ignore_alpha
Ignore alpha channel in freerdp_image_copy
2016-11-25 10:38:56 +01:00
Norbert Federa
53bd98883e winpr/crypt api changes and memory leak fixes
- winpr_HMAC_New() now just returnes the opaque WINPR_HMAC_CTX* pointer
  which has to be passed to winpr_HMAC_Init() for (re)initialization
  and since winpr_HMAC_Final() no more frees the context you always have to
  use the new function winpr_HMAC_Free() once winpr_HMAC_New() has succeded

- winpr_Digest_New() now just returns the opaque WINPR_DIGEST_CTX* pointer
  which has to be passed to winpr_Digest_Init() for (re)initialization
  and since winpr_Digest_Final() no more frees the context you always have to
  use the new function winpr_Digest_Free() once winpr_Digest_New() has succeded
2016-11-24 18:27:29 +01:00
Norbert Federa
7befab856c Support for OpenSSL 1.1.0 2016-11-24 17:50:09 +01:00
Armin Novak
3f6bd603e9 Fixed addin loader, prefer system library paths. 2016-11-24 15:28:41 +01:00
Armin Novak
a0fed88574 Check hwheel capability before sending mouse event. 2016-11-24 13:19:46 +01:00
Armin Novak
9818ed3883 Reduced number of test runs. Fixes 3617. 2016-11-24 10:50:16 +01:00
Armin Novak
b9072bf0ea Added optimized write functions. 2016-11-24 10:37:21 +01:00
Armin Novak
4cc291869a Added optimized write functions. 2016-11-24 10:36:57 +01:00
Armin Novak
d1e2dd3281 Moved format size calculation out of loop. 2016-11-24 10:01:45 +01:00
akallabeth
aaae190ee1 Merge pull request #3610 from FreeRDP/mh-channels-new-api
Channels - use new VirtualChannelEx api
2016-11-24 09:42:30 +01:00
Armin Novak
1c4c57821b Ignore alpha channel in freerdp_image_copy
When copying image data consider formats that only differ on use
of alpha data equal. This allows using the optimized copy routine
instead of the slower color conversion routine. Fixes #3616
2016-11-24 09:31:14 +01:00
Martin Fleisz
c11211181d codec: Use context functions for rfx decoding 2016-11-23 14:22:42 +01:00
Martin Fleisz
6c9df44846 codec: Revamp of rfx rlgr API
This PR contains following changes:
- Give rlgr encode/decode APIs a similar interface
- Make rlgr encode API accessible again
- Make it possible to exchange rlgr functions
- Make use of RLGR1/3 defines instead of 0/1 in decoding
2016-11-23 13:21:59 +01:00
Martin Haimberger
7fe28a8a78 virtualChannel: removed static variable usage from
VirtualChannelApi
2016-11-23 04:17:56 -08:00
Martin Fleisz
e45c300824 codec: Fix compilation with VS2010 2016-11-22 12:12:08 +01:00
Martin Fleisz
06d47530b6 Merge pull request #3594 from akallabeth/line_draw_color_format
Fixed line drawing color format #3592
2016-11-18 12:46:14 +01:00
Martin Fleisz
f8bcd706f6 Merge pull request #3581 from akallabeth/alignment_fix
Fixed surface alignment.
2016-11-17 15:41:17 +01:00
akallabeth
15716695fa Merge pull request #3593 from ccpp/gateway-http-bugfix
Bugfix in RDP Gateway HTTP: read/skip full HTTP body
2016-11-16 19:27:55 +01:00
Marc-André Moreau
128ce8a5a4 Merge pull request #3597 from awakecoding/tls_channel_fix
Virtual Channel Mapping Fix
2016-11-16 11:37:14 -05:00
Marc-André Moreau
36db0cc325 channels: properly handle VirtualChannelEntryEx in static virtual channel loading 2016-11-16 09:52:24 -05:00
Marc-André Moreau
dee76617d9 channels: remove thread-local storage usage 2016-11-15 11:41:01 -05:00
Marc-André Moreau
2cce8e9fbc channels: migrate drdynvc to extended virtual channel API 2016-11-15 10:58:38 -05:00
Marc-André Moreau
2259e91adc channels: prepare virtual channel system for extended virtual channel API 2016-11-15 09:09:30 -05:00
Marc-André Moreau
23eae318c5 channels: start working on extended virtual channel API 2016-11-14 16:44:45 -05:00
Marc-André Moreau
70c4646722 channels: restore global tables for initHandle, openHandle mappings instead of thread local storage 2016-11-14 15:23:05 -05:00
Armin Novak
1203315b50 Fixed line drawing color format #3592 2016-11-14 09:37:15 +01:00
Christian Plattner
b6e97cbad4 Bugfix in RDP Gateway HTTP: read/skip full HTTP body for non-RPC responses
This fixes issues #3300 and #3479, but it reveals that there might be a timeout issue with /gt:http and /gt:auto
2016-11-13 03:26:01 +01:00
David Fort
ea24c1f8e1 Merge pull request #3578 from realjiangms/fix_server_for_limit_frames
Fix server side code to be aware of rereadEvent
2016-11-03 22:50:08 +01:00
Armin Novak
95a3144b34 Scanline alignment for GFX cache. 2016-10-31 07:56:10 +01:00
zihao.jiang
7676b29176 cleanup unnecessary code per comments 2016-10-29 13:18:17 +08:00
zihao.jiang
b58ee586e7 keeping the old callback and adding the new one at the end of the struct, so that it can be potentially binary compatible. 2016-10-29 00:28:10 +08:00
Armin Novak
f62d00445e Fixed surface alignment. 2016-10-28 11:54:34 +02:00
zihao.jiang
ddc326d6d3 Fix server side code to be aware of rereadEvent 2016-10-27 23:43:09 +08:00
Armin Novak
5bc691c79d Improved error handling if channel is missing. 2016-10-27 14:41:05 +02:00
Armin Novak
6276f3d39a Added log messages for invalid function call. 2016-10-27 14:36:48 +02:00
akallabeth
a6f41176fc Merge pull request #3364 from hardening/limit_frames
Limit the time passed in transport check loop
2016-10-20 12:53:23 +02:00
Martin Fleisz
f5a6645832 Merge pull request #3571 from akallabeth/clang_fixes
Clang fixes
2016-10-19 15:45:17 +02:00
Martin Fleisz
f2abcaabc0 Merge pull request #3554 from akallabeth/color_refactor
Replaced _VF formats with copy flags.
2016-10-19 13:31:54 +02:00
Armin Novak
5c446dd5c3 Fixed missing NULL checks. 2016-10-19 11:11:35 +02:00
Armin Novak
30b5b01cf1 Fixed invalid arguments for gdi_resize_ex 2016-10-18 15:16:58 +02:00
Martin Fleisz
e8fbdf503d crypto: Remove unneeded update (+) flag from file open mode 2016-10-17 14:49:26 +02:00
David Fort
f92860de87 Applied astyle formatting 2016-10-14 15:12:48 +02:00
David Fort
60cffef8d1 Release the reread event on transport_free 2016-10-14 15:12:48 +02:00
David Fort
fd7ebdc6a5 Took in account comment remarks 2016-10-14 15:12:48 +02:00
David Fort
03abf197ca test-connect: use a random port instead of always 3389
Doing so we have less chances to have a failure when we run 2 tests in parallel
on the same host (as sfrerdp-server listen on a socket).
2016-10-14 15:12:48 +02:00
David Fort
71fd5cc148 Limit the time passed in transport check loop
This patch make it possible to limit the time that is passed when we call
XXX_check_fds functions. This should smooth the treatment between handling inputs
and handling incoming bitmap updates.
The default maximum time is set to 100 ms.
2016-10-14 15:12:48 +02:00
Armin Novak
9c50e1a635 Replaced _VF formats with copy flags. 2016-10-14 10:36:52 +02:00
Armin Novak
8fbc885f19 Removed unused variable. 2016-10-13 16:57:51 +02:00
Armin Novak
d1a28c59f7 Fixed uninitialized variable. 2016-10-13 16:57:51 +02:00
Armin Novak
99ade05330 Fixed uninitialized variable. 2016-10-13 16:57:51 +02:00
Armin Novak
ae5689709c Fixed uninitialized variables. 2016-10-13 16:57:51 +02:00
Bernhard Miklautz
5a5f091b7c Merge pull request #3545 from akallabeth/legacy_rfx_fixes
Fixed Windows 7 RFX issues.
2016-10-13 13:01:53 +02:00
Bernhard Miklautz
de44204683 Merge pull request #3537 from akallabeth/gdi_speedup
Inlined heavily used functions.
2016-10-13 10:28:57 +02:00
Armin Novak
79e8a6d61c Reverted NSC format, decoded data is always BGRA! 2016-10-13 10:16:24 +02:00
Armin Novak
714e704352 Color format for surface bits unified. 2016-10-12 09:32:59 +02:00
Armin Novak
985ca171ff Respecting tile offsets. 2016-10-12 09:21:21 +02:00
Armin Novak
8286fa4b96 Fixed format flip and offsets for GDI. 2016-10-11 18:50:01 +02:00
zihao.jiang
5e1f745868 Fix nsc server side after color conversion.
We use new color format system and PIXEL_FORMAT_BGRX32 is the unified buffer color format. Add support for PIXEL_FORMAT_BGRX32 in nsc
2016-10-11 23:31:12 +08:00
Armin Novak
c3058ba580 Optimized ROP for GDI_SRCCOPY and GDI_DSTCOPY. 2016-10-11 14:47:26 +02:00
Armin Novak
c2787d7c5f Optimized gdi_FillRect 2016-10-11 14:47:26 +02:00
Armin Novak
c405e1515e Inlined heavily used function. 2016-10-11 14:47:26 +02:00
Armin Novak
94c6473250 Inlined heavily used functions. 2016-10-11 14:47:26 +02:00
Armin Novak
404ae7d83c Fixed Windows 7 RFX issues. 2016-10-11 14:34:07 +02:00
Martin Fleisz
9afc0cca26 Merge pull request #3536 from akallabeth/memory_leak_fixes
Memory leak fixes
2016-10-11 09:29:49 +02:00
zihao.jiang
34b4bca119 Fix nsc client after after color conversion huge fix
nsc codec client doesn't work:
1. We should mark invalid region for software gdi
2. Checked the code before color conversion fix, the correct color format should be PIXEL_FORMAT_BGRX32_VF (corresponds to old PIXEL_FORMAT_XRGB32_VF)
3. For gdi:hw: xfc->bitmap_buffer is never used/initialized. However gdi->primary_buffer is always maintained. So use primary_buffer to hold the decoded bitmap data
2016-10-11 02:18:31 +08:00
Bernhard Miklautz
aa673986e8 Merge pull request #3533 from akallabeth/glyph_cache_disable
Glyph cache disable
2016-10-10 16:04:09 +02:00
Armin Novak
c6ae62f700 Fixed memory leak in certificate check. 2016-10-10 13:34:57 +02:00
Armin Novak
fa71427c6b Removed unused function. 2016-10-10 11:33:31 +02:00
Armin Novak
eecc4b189f Fixed leak in bitmap handling. 2016-10-10 10:42:14 +02:00
Armin Novak
bc69730863 Fixed memory leak in pointer free. 2016-10-10 10:42:14 +02:00
Armin Novak
8f75516650 Deactivated glyph cache. 2016-10-10 09:07:28 +02:00
Armin Novak
afc4408a6c Reformatted file. 2016-10-10 09:06:05 +02:00
Armin Novak
7709542d05 Using C99 compatible variadic macros. 2016-10-07 14:14:56 +02:00
Armin Novak
14fcfbbf31 Addin loader using proper function pointer defines. 2016-10-07 14:06:46 +02:00
Armin Novak
943e295714 WLog using C99 compatible variadic macros. 2016-10-07 14:05:27 +02:00
Armin Novak
649d270ccd Fixed GDI_RGN->null initialization. 2016-10-06 13:43:15 +02:00
Armin Novak
2db04736ac Fixed memory leak. 2016-10-06 13:43:15 +02:00
Bernhard Miklautz
ddced3f3ca Fix compiler warnings
clang version 3.9.1-svn281634-1~exp1 (branches/release_39)

freerdp-firerds/libfreerdp/core/channels.c:270:9: warning: returning
      'const WtsApiFunctionTable *' (aka 'const struct _WtsApiFunctionTable *') from a function with
      result type 'PWtsApiFunctionTable' (aka 'struct _WtsApiFunctionTable *') discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
        return &FreeRDP_WtsApiFunctionTable;
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

uwac/libuwac/uwac-display.c:502:12: warning: comparison of
      unsigned enum expression < 0 is always false [-Wtautological-compare]
        if (error < 0 || error >= UWAC_ERROR_LAST)
            ~~~~~ ^ ~
2016-10-06 13:43:15 +02:00
Armin Novak
4fa2bd2e07 Fixed memory leak and argument checks. 2016-10-06 13:43:14 +02:00
Armin Novak
ded84b1528 Fixed error message. 2016-10-06 13:43:14 +02:00
Armin Novak
b0b6dce0a1 Fixed NULL pointer checks. 2016-10-06 13:43:14 +02:00
Armin Novak
2cf5f1b0ba Fixed missing NULL pointer checks. 2016-10-06 13:43:14 +02:00
Armin Novak
dd676c7b29 Fixed missing NULL checks. 2016-10-06 13:43:13 +02:00
Armin Novak
d55690db23 Fixed RFX encoding. 2016-10-06 13:43:12 +02:00
Armin Novak
9ab04711fa Fixed shadow server color encoding. 2016-10-06 13:43:12 +02:00
Armin Novak
f5fff7658a Made some functions static. 2016-10-06 13:43:12 +02:00
Armin Novak
3220b15730 Added missing event handle. 2016-10-06 13:43:12 +02:00
Armin Novak
f2d7766db6 Moved common async input handling to core library. 2016-10-06 13:43:12 +02:00
Armin Novak
b8b84473a3 Fixed post disconnect hook. 2016-10-06 13:43:12 +02:00
Armin Novak
296bc026dc Fixed ellipse test. 2016-10-06 13:43:11 +02:00
Armin Novak
399c318187 Fixed test loop. 2016-10-06 13:43:11 +02:00
Armin Novak
161685b25c Fixed some more glyph chache bugs. 2016-10-06 13:43:11 +02:00
Armin Novak
dbab3dd7e3 Fixed tests and not intialized values. 2016-10-06 13:43:11 +02:00
Armin Novak
0c57065c73 GlyphCache: Erasing destination if not redundant. 2016-10-06 13:43:11 +02:00
Armin Novak
b7f32353f4 Fixed pattern checks. 2016-10-06 13:43:11 +02:00
Armin Novak
823b1ec2f0 Added proper brush support to fill rect. 2016-10-06 13:43:11 +02:00
Armin Novak
9471f82fea Fixed missing include preventing symbol export. 2016-10-06 13:43:11 +02:00
Armin Novak
416801a106 Fixed warning. 2016-10-06 13:43:10 +02:00
Armin Novak
22ddec810b Moved pre and post channel hooks. 2016-10-06 13:43:10 +02:00
Armin Novak
44b8756617 Warning fixes. 2016-10-06 13:43:10 +02:00
Armin Novak
9c64e77a84 Disabled thread local storage on iOS.
iOS does not support Thread Local Storage.
Disabling it for now until a solution is found.
Print a compiler warning informing developers about this issue.
2016-10-06 13:43:10 +02:00
Armin Novak
64c5d78b3f Fixed clang warnings. 2016-10-06 13:43:09 +02:00
Armin Novak
c7448c03fb Added FREERDP_LOCAL
CMake 2.8 does not support default visibility on windows.
To allow building tests add the FREERDP_LOCAL define for each
function that is internal to FreeRDP.
When build with testing these functions are exported and available
for use by tests.
2016-10-06 13:43:09 +02:00
Armin Novak
6d6b991c26 Fixed BitBlt function for overlapping areas. 2016-10-06 13:43:09 +02:00
Armin Novak
5554d805db Code cleanup. 2016-10-06 13:43:09 +02:00
Armin Novak
122f25eb60 Fixed channel cleanup. 2016-10-06 13:43:09 +02:00
Armin Novak
d35823cf69 Moved channel init code to core library. 2016-10-06 13:43:09 +02:00
Armin Novak
dadc5262ae Removed static channel variables.
Global static variables do not work, if more than one instance
of an RDP client is running in the same process space.
Removed the varaibles where possible and replaced them with
thread local storage where necessary.
2016-10-06 13:43:09 +02:00
Armin Novak
f16ffaefa7 Fixed glyph cache issues. 2016-10-06 13:43:08 +02:00
Armin Novak
0d56de57c4 Glyph offset fix. 2016-10-06 13:43:08 +02:00
Armin Novak
b765374d32 Refactored BitBlt, implementing everything now. 2016-10-06 13:43:08 +02:00
Armin Novak
f17f1475d8 Fixed font drawing. 2016-10-06 13:43:08 +02:00
Armin Novak
dd9354d55f Added argument checks. 2016-10-06 13:43:08 +02:00
Armin Novak
9fcfc38bd2 Fixed planar decoding. 2016-10-06 13:43:08 +02:00
Armin Novak
844f7b7941 Made logging less verbose. 2016-10-06 13:43:08 +02:00
Armin Novak
b888059bd7 Fixed color conversion issues. 2016-10-06 13:43:08 +02:00
Armin Novak
a978ccc0bb Added argument checks. 2016-10-06 13:43:07 +02:00
Armin Novak
ab4725dd5d Fixed error message parameter. 2016-10-06 13:43:07 +02:00
Armin Novak
fb36121ba9 Added signal handler for android. 2016-10-06 13:43:07 +02:00
Armin Novak
896f500e7e Fixed h264 dummy init. 2016-10-06 13:43:06 +02:00
Armin Novak
bc5aa1be0c Added more GDI orders. 2016-10-06 13:43:06 +02:00
Armin Novak
a76b0df598 Fixed reading of colors from order. 2016-10-06 13:43:06 +02:00
Armin Novak
60ac63854c 32bpp cursor fix. 2016-10-06 13:43:06 +02:00
Armin Novak
c00fc5715f Cursor color decoding fixes. 2016-10-06 13:43:05 +02:00
Armin Novak
984bec733f Simplified gdi_patblt 2016-10-06 13:43:05 +02:00
Armin Novak
d1a3362a8f Fixed windows software GDI issues. 2016-10-06 13:43:05 +02:00
Armin Novak
66cf000efd Fixed broken test. 2016-10-06 13:43:05 +02:00
Armin Novak
e3b43b991d Fixed some bitblt issues. 2016-10-06 13:43:05 +02:00
Armin Novak
5fa9344c8f Deactivated broken tests. 2016-10-06 13:43:05 +02:00
Armin Novak
9034867bb7 Added brush helper function to retrieve style. 2016-10-06 13:43:05 +02:00
Armin Novak
b505220328 Fixed Get/SetPixel function tests. 2016-10-06 13:43:05 +02:00
Armin Novak
f3d9e8de08 Fixed (some) planar codec tests. 2016-10-06 13:43:05 +02:00
Armin Novak
e4d89067b2 Fixed splitting of color planes. 2016-10-06 13:43:04 +02:00
Armin Novak
d3538fc930 Fixed gdi LineTo and tests. 2016-10-06 13:43:04 +02:00
Armin Novak
35f1347d53 Fixed warnings and mac build. 2016-10-06 13:43:04 +02:00
Armin Novak
d0f09c8d15 Fixed warnings and stride default. 2016-10-06 13:43:04 +02:00
Armin Novak
a372009fc4 Internal functions static. 2016-10-06 13:43:04 +02:00
Armin Novak
a06ceb6239 Fixed duplicate setting of callback. 2016-10-06 13:43:04 +02:00
Armin Novak
0e1b385b5f Internal functions static. 2016-10-06 13:43:03 +02:00
Armin Novak
867528015a Simplified bitmap drawing. 2016-10-06 13:43:03 +02:00
Armin Novak
ec0d68bf4c Fixed bitmap update decoding. 2016-10-06 13:43:03 +02:00
Armin Novak
c22d16bc09 Reverted bitmap update changes. 2016-10-06 13:43:03 +02:00
Armin Novak
3898b56618 Fixed drawing orders. 2016-10-06 13:43:03 +02:00
Armin Novak
e3f88ad7ec Fixed BitBlt_PSDPxax 2016-10-06 13:43:03 +02:00
Armin Novak
032bdef955 Unified bitmap drawing. 2016-10-06 13:43:03 +02:00
Armin Novak
b8ff3cb235 Fixed (a lot of) GDI drawing issues. 2016-10-06 13:43:03 +02:00
Armin Novak
bb82d48506 Fixed part of font cache issue. 2016-10-06 13:43:03 +02:00
Armin Novak
3f90966da6 Bug fixes. 2016-10-06 13:43:03 +02:00
Armin Novak
85bbe2a908 API refactoring. 2016-10-06 13:43:03 +02:00
Armin Novak
f680b62d03 Fixed PATINVERT. 2016-10-06 13:43:02 +02:00
Armin Novak
e650fdb2b6 Bugfixes. 2016-10-06 13:43:02 +02:00
Armin Novak
17fd5526ac Cleanups. 2016-10-06 13:43:02 +02:00
Armin Novak
7a20ff5c30 Refactored bitmap API. 2016-10-06 13:43:02 +02:00
Armin Novak
8b69b16cbb Refactored Glyph API. 2016-10-06 13:43:02 +02:00
Armin Novak
9d5ca34d0d Fixed pointer initialisation for X11. 2016-10-06 13:43:02 +02:00
Armin Novak
04fb4e4e4c Fixed rectangle clipping and warnings. 2016-10-06 13:43:02 +02:00
Armin Novak
c229a1939d Updated codec API, unified drawing order color decoding. 2016-10-06 13:43:02 +02:00
Armin Novak
e32ed83bf7 Updated interleaved and planar API. 2016-10-06 13:43:02 +02:00
Armin Novak
6525a564f1 Fixed 24bit color format. 2016-10-06 13:43:01 +02:00
Armin Novak
39d6ad3acf Fixed source format for bitmap decompress. 2016-10-06 13:43:01 +02:00
Armin Novak
f9a89ae6b4 Bug fixes, refactoring. 2016-10-06 13:43:01 +02:00
Armin Novak
960bc26e9a Further refactored tests. 2016-10-06 13:43:01 +02:00
Armin Novak
9f0a9c3b92 Refactored GDI. 2016-10-06 13:43:01 +02:00
Armin Novak
c5b6e7e4ea Fixed GDI tests. 2016-10-06 13:43:01 +02:00
Armin Novak
2594262ed4 Fixed progressive decoding. 2016-10-06 13:43:01 +02:00
Armin Novak
1608799522 Cleaned up clear codec. 2016-10-06 13:43:01 +02:00
Armin Novak
8fffda5740 Fixed clearcodec and codecs reset. 2016-10-06 13:43:01 +02:00
Armin Novak
5e9c9f90ab Code refactoring. 2016-10-06 13:43:01 +02:00
Armin Novak
e6e8f2d4f2 Added ROP to string function. 2016-10-06 13:43:00 +02:00
Armin Novak
9fc8dc6b5d Removed gdi->codecs, unused. 2016-10-06 13:43:00 +02:00
Armin Novak
076b92dd72 Fixed primitives misuse. 2016-10-06 13:43:00 +02:00
Armin Novak
a6cef5cde7 Fixed GFX related issues. 2016-10-06 13:43:00 +02:00
Armin Novak
99c418766c Updated primitives API and tests. 2016-10-06 13:43:00 +02:00
Armin Novak
e860fde4bc Fixed function arguments. 2016-10-06 13:43:00 +02:00
Armin Novak
7d01fe14ce Fixed planar tests, deactivated them for clear 2016-10-06 13:43:00 +02:00
Armin Novak
03907c82a9 Fixed issues. 2016-10-06 13:43:00 +02:00
Armin Novak
d98677094e Fixed warnings. 2016-10-06 13:43:00 +02:00
Armin Novak
bbae42d9c3 Compile fix 2016-10-06 13:43:00 +02:00
Armin Novak
5039a82d8b GDI fixes. 2016-10-06 13:43:00 +02:00
Armin Novak
e1c3adf61f freerdp_image_copy fixes, 8bit color improvements. 2016-10-06 13:42:59 +02:00
Armin Novak
c12c5dd2f5 Added overlapped copy support. 2016-10-06 13:42:59 +02:00
Armin Novak
716c5c53e9 256 color support. 2016-10-06 13:42:59 +02:00
Armin Novak
48d1b4ee13 Fixed color ordering for GDI. 2016-10-06 13:42:59 +02:00
Armin Novak
016f3a408b xxx. 2016-10-06 13:42:59 +02:00
Armin Novak
b668b0d75e Api update. 2016-10-06 13:42:59 +02:00
Armin Novak
0e7bb508c1 Bitmaps now remember their format. 2016-10-06 13:42:59 +02:00