spice/server
Frediano Ziglio db7dcae353 red-parse-qxl: Fix QUIC images from QXL
The decoding is wrong, the Red and QXL structures are different so
code is not doing what is expected. red-parse-qxl translate from QXL
to Red structures, red-record-qxl saves Red structure to file,
red-replay-qxl is supposed to read from file into QXL directly.

If a Quic image is stored inside QXL memory the layout of the QXLImage
in memory is:
- QXLImageDescriptor
- QXLQUICData
- QXLDataChunk
- first chunk data
and all remaining data in linked QXLDataChunk.
red_replay_image was reading the image as data was all contained in
QXLImage->quic.data however "data" should store the first QXLDataChunk
followed by QXLDataChunk data.
Use proper base_size calling red_replay_data_chunks in order to
initialise the image with the first data chunk correctly.

Not easy to reproduce, the only driver is XDDM which means Windows XP
or similars. To enable QUIC encoding I added "image-compression=quic"
and "streaming-video=off" to "-spice" Qemu option in order to force
QUIC encoding in the guest driver (thanks to Uri Lublin for the help
reproducing it).

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Uri Lublin <uril@redhat.com>
2019-07-31 16:29:13 +01:00
..
tests tests: rename video-encoders to test-video-encoders 2019-07-22 11:21:23 +01:00
.gitignore gitignore: Reuse top-level gitignore 2016-12-14 19:09:21 +00:00
agent-msg-filter.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
agent-msg-filter.h agent-msg-filter: Add some comments to AgentMsgFilter structure 2019-02-11 15:15:59 +00:00
cache-item.h Unify header guards 2017-03-30 18:17:20 +01:00
cache-item.tmpl.c cache-item: Remove unused define 2019-06-21 08:30:56 +01:00
char-device.c char-device: Reuse macros to scan GList 2019-06-10 13:44:07 +01:00
char-device.h char-device: Fix some comments 2019-06-02 14:44:58 +03:00
common-graphics-channel.c common-graphics-channel: Avoid closing server if client send huge messages 2019-06-10 13:44:01 +01:00
common-graphics-channel.h common-graphics-channel: Move "qxl" property to DisplayChannel 2017-09-07 06:42:01 +01:00
cursor-channel-client.c cache-item: Remove only written fields 2019-06-21 08:30:56 +01:00
cursor-channel-client.h Make channel client callbacks virtual functions 2019-03-28 20:20:25 +00:00
cursor-channel.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
cursor-channel.h Make channel client callbacks virtual functions 2019-03-28 20:20:25 +00:00
dcc-private.h cache-item: Remove only written fields 2019-06-21 08:30:56 +01:00
dcc-send.c dcc-send: fix use-after-free 2019-07-11 09:37:34 +01:00
dcc.c streaming: Restart streams on video-codec changes 2019-07-11 09:28:51 +01:00
dcc.h Use "base" as pipe item base field name 2018-06-18 13:40:51 +01:00
dispatcher.c dispatcher: Port to Windows 2019-05-07 10:14:26 +01:00
dispatcher.h dispatcher: Allows to manage messages without registering them 2019-03-28 15:38:16 +00:00
display-channel-private.h Move image_compression field from RedWorker to DisplayChannel 2019-03-28 20:20:25 +00:00
display-channel.c streaming: Restart streams on video-codec changes 2019-07-11 09:28:51 +01:00
display-channel.h Move image_compression field from RedWorker to DisplayChannel 2019-03-28 20:20:25 +00:00
display-limits.h Receive the GraphicsDeviceInfo message from the streaming agent 2019-01-29 15:46:54 +01:00
event-loop.c event loop: improve implementation of watches for Unix systems 2019-07-24 11:19:38 +01:00
glib-compat.h Use verify instead of G_STATIC_ASSERT 2017-12-01 22:49:46 +00:00
glz-encode-match.tmpl.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
glz-encode.tmpl.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
glz-encoder-dict.c typo: fix the spelling of precede 2019-07-04 10:05:19 +01:00
glz-encoder-dict.h Make various functions static 2017-04-05 12:39:20 +02:00
glz-encoder-priv.h Unify header guards 2017-03-30 18:17:20 +01:00
glz-encoder.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
glz-encoder.h Unify header guards 2017-03-30 18:17:20 +01:00
gstreamer-encoder.c gst:mjpeg do not set max-threads 2019-07-17 11:21:55 +01:00
image-cache.c Use SPICE_CONTAINEROF to avoid some possible alignment warnings on MIPS 2019-06-18 09:48:28 +01:00
image-cache.h Unify header guards 2017-03-30 18:17:20 +01:00
image-encoders.c typo: image-encoders: fix the spelling of guaranteed 2019-07-04 10:05:16 +01:00
image-encoders.h Add possibly missing headers for pthread.h 2018-06-26 10:54:01 +01:00
inputs-channel-client.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
inputs-channel-client.h inputs-channel-client: Remove unused declarations 2019-06-13 07:44:10 +01:00
inputs-channel.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
inputs-channel.h inputs-channel: Move spice_server_kbd_leds to InputsChannel 2017-12-19 16:29:41 +00:00
jpeg-encoder.c jpeg: Support big endian machines 2019-06-19 10:36:10 +01:00
jpeg-encoder.h jpeg-encoder: Remove JPEG_IMAGE_TYPE_RGB24 2018-06-26 18:06:50 +01:00
lz4-encoder.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
lz4-encoder.h Unify header guards 2017-03-30 18:17:20 +01:00
main-channel-client.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
main-channel-client.h Use standard "Red" namespace 2017-10-21 08:47:02 +01:00
main-channel.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
main-channel.h Use standard "Red" namespace 2017-10-21 08:47:02 +01:00
main-dispatcher.c main-dispatcher: Use reds as opaque for dispatcher 2019-03-20 20:40:03 +00:00
main-dispatcher.h Remove core parameter from main_dispatcher_new 2019-02-12 22:34:52 +00:00
Makefile.am Add support for clients connecting with the WebSocket protocol. 2019-06-26 14:18:27 +01:00
memslot.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
memslot.h memslot: Remove error parameter from memslot_get_virt 2018-07-03 12:23:54 +01:00
meson.build Add support for clients connecting with the WebSocket protocol. 2019-06-26 14:18:27 +01:00
migration-protocol.h Use start/end-packet.h headers instead of direct GCC attribute 2019-07-22 14:56:00 +01:00
mjpeg-encoder.c jpeg: Support big endian machines 2019-06-19 10:36:10 +01:00
net-utils.c net-utils: Port to Windows 2019-05-07 10:14:08 +01:00
net-utils.h reds-stream: Introduce reds_stream_get_no_delay() helper 2017-03-31 12:22:52 +02:00
pixmap-cache.c Use SPICE_CONTAINEROF to avoid some possible alignment warnings on MIPS 2019-06-18 09:48:28 +01:00
pixmap-cache.h Unify header guards 2017-03-30 18:17:20 +01:00
red-channel-capabilities.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
red-channel-capabilities.h Unify header guards 2017-03-30 18:17:20 +01:00
red-channel-client.c windows: Disable code not working on Windows 2019-05-07 10:14:22 +01:00
red-channel-client.h Reuse SPICE_DECLARE_TYPE macro 2017-11-21 08:38:44 +00:00
red-channel.c Remove compile warnings on Linux 32bit system 2019-06-13 09:04:01 +01:00
red-channel.h red-channel: Remove unused declaration 2019-06-13 07:44:10 +01:00
red-client.c Remove compile warnings on Linux 32bit system 2019-06-13 09:04:01 +01:00
red-client.h Reuse SPICE_DECLARE_TYPE macro 2017-11-21 08:38:44 +00:00
red-common.h red-common: Add a comment for GLIST_FOREACH_GENERIC 2019-07-09 11:10:27 +01:00
red-parse-qxl.c red-parse-qxl: Reset mask attributes if brush image is missing 2019-07-02 13:47:18 +01:00
red-parse-qxl.h qxl: Release QXL resources in red_put_surface_cmd 2018-12-06 13:04:03 +00:00
red-pipe-item.c red-pipe-item: Use GLib memory functions 2017-10-11 12:52:17 +01:00
red-pipe-item.h red-pipe-item: Removed some not necessary headers inclusions 2019-02-23 05:12:59 +00:00
red-qxl.c red-qxl: Better encapsulation of device display information 2019-07-08 13:19:12 +01:00
red-qxl.h red-qxl: Better encapsulation of device display information 2019-07-08 13:19:12 +01:00
red-record-qxl.c Disable recording filtering for Windows 2019-05-07 10:14:33 +01:00
red-record-qxl.h red-record-qxl: Change license header to LGPLv2+ 2018-07-05 10:15:17 +02:00
red-replay-qxl.c red-parse-qxl: Fix QUIC images from QXL 2019-07-31 16:29:13 +01:00
red-stream-device.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
red-stream-device.h red-stream-device: Constify stream_device_get_device_display_info result 2019-02-04 19:44:12 +00:00
red-stream.c websocket: Handle text data 2019-06-26 14:19:10 +01:00
red-stream.h Add support for clients connecting with the WebSocket protocol. 2019-06-26 14:18:27 +01:00
red-worker.c windows: Disable code not working on Windows 2019-05-07 10:14:22 +01:00
red-worker.h red-worker: Remove unused definitions 2019-03-29 15:18:49 +00:00
reds-private.h Send the graphics device info to the vd_agent 2019-01-29 15:46:28 +01:00
reds.c Use start/end-packet.h headers instead of direct GCC attribute 2019-07-22 14:56:00 +01:00
reds.h reds: Add ability to query the video-codecs currently enabled 2019-07-05 11:11:57 +01:00
smartcard-channel-client.c smartcard-channel-client: Fix some typos in a comment 2019-06-13 07:38:50 +01:00
smartcard-channel-client.h Use standard "Red" namespace 2017-10-21 08:47:02 +01:00
smartcard.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
smartcard.h Reuse SPICE_DECLARE_TYPE macro 2017-11-21 08:38:44 +00:00
sound.c windows: Disable code not working on Windows 2019-05-07 10:14:22 +01:00
sound.h Change playback_compression to bool type 2017-04-07 15:08:43 -05:00
spice-audio.h Split spice.h 2014-11-27 14:27:18 +01:00
spice-bitmap-utils.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
spice-bitmap-utils.h Use verify instead of G_STATIC_ASSERT 2017-12-01 22:49:46 +00:00
spice-bitmap-utils.tmpl.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
spice-char.h spice-char: Add some documentation to SpiceCharDeviceInterface 2019-07-10 09:53:58 +01:00
spice-core.h windows: Do not include headers not available on Windows 2019-01-31 10:48:34 +00:00
spice-input.h Split spice.h 2014-11-27 14:27:18 +01:00
spice-migration.h server: Use SPICE_GNUC_DEPRECATED to avoid a dependency on glib.h 2016-08-12 09:47:40 +01:00
spice-qxl.h QXL interface: improve the spice_qxl_set_device_info documentation 2019-01-28 19:35:53 +00:00
spice-replay.h Unify header guards 2017-03-30 18:17:20 +01:00
spice-server-enums.c.tmpl Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
spice-server-enums.h.tmpl build: Rename spice-server-enums.tmpl.[ch] to spice-server-enums.[ch].tmpl 2018-03-07 10:04:04 -03:00
spice-server.h reds: Add ability to query the video-codecs currently enabled 2019-07-05 11:11:57 +01:00
spice-server.syms reds: Add ability to query the video-codecs currently enabled 2019-07-05 11:11:57 +01:00
spice-version.h.in build-sys: generate spice-version.h 2014-11-27 14:27:33 +01:00
spice.h Make red-replay-qxl.h a public header 2016-11-10 06:37:15 +00:00
spicevmc.c spicevmc: Reuse "sin" variable 2019-06-02 14:46:08 +03:00
stat-file.c windows: Disable code not working on Windows 2019-05-07 10:14:22 +01:00
stat-file.h Unify header guards 2017-03-30 18:17:20 +01:00
stat.h Unify header guards 2017-03-30 18:17:20 +01:00
stream-channel.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
stream-channel.h Make stream-channel.h self-contained 2017-10-30 12:01:24 +01:00
sw-canvas.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
sys-socket.c sys-socket: Add socket_newpair utility 2019-05-07 10:14:05 +01:00
sys-socket.h sys-socket: Add socket_newpair utility 2019-05-07 10:14:05 +01:00
tree.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
tree.h Unify header guards 2017-03-30 18:17:20 +01:00
utils.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
utils.h gstreamer-encoder: fix compiler warning with Fedora 30 2019-07-03 14:24:25 +01:00
video-encoder.h reds: Add ability to query the video-codecs currently enabled 2019-07-05 11:11:57 +01:00
video-stream.c reds: Add ability to query the video-codecs currently enabled 2019-07-05 11:11:57 +01:00
video-stream.h Use "base" as pipe item base field name 2018-06-18 13:40:51 +01:00
websocket.c websocket: Handle continuation and 0-size frames 2019-06-26 14:19:13 +01:00
websocket.h websocket: Include proper type header 2019-07-17 12:53:11 +01:00
zlib-encoder.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
zlib-encoder.h Unify header guards 2017-03-30 18:17:20 +01:00