Commit Graph

67 Commits

Author SHA1 Message Date
Christophe Fergeau
7989644092 red_parse_qxl: Change spice_error() to spice_warning()
After eb09c25c, red_parse_qxl.c still has some spice_error() which
will kill the server even though the code is trying to return an error
when the spice_error() is hit.
This commit replaces these occurrences with a spice_warning() which
will not kill spice-server.
2013-09-02 18:13:04 +02:00
Uri Lublin
eb09c25c62 server: bitmap_consistent: replace spice_error with spice_warning
bitmap_consistent should return true or false.
Currently it aborts instead of returning false, due to spice_error.
Replacing spice_error with spice_warning, provides information and returns
false, as expected.

This fixes Fedora bz#997932
2013-09-02 13:31:20 +03:00
Uri Lublin
d6092f11b6 syntax-check: remove trailing whitespaces
Only whitespace changes in this commit.
2013-07-16 23:37:29 +03:00
Uri Lublin
a89b1b5543 syntax-check: fix avoid_if_before_free 2013-07-16 23:37:28 +03:00
Alon Levy
5170589c21 server/red_parse_qxl: two coding convention pointer cast fix 2013-05-17 11:06:34 -04:00
Yonit Halperin
812b65984d red_parse_qxl: fix throwing away drawables that have masks
Non rgb bitmaps are allowed to not have a palette in case they
are masks (which are 1BIT bitmaps).

Related: rhbz#864982
2012-12-20 10:13:09 -05:00
Alon Levy
5579d8721b server/red_parse_qxl: fix bitmap_consistent again 2012-09-05 23:00:55 +03:00
Alon Levy
bf29ff4296 server/red_parse_qxl: fix wrong bitmap_consistent
The bit calculation was wrong for all the paletted types by a factor of
between 8 and 1 (SPICE_BITMAP_FMT_{1,4,8}BIT_PLT_{LE,BE})
2012-09-05 19:18:31 +03:00
Alon Levy
1c4e315e3e server/red_parse_qxl: add bitmap consistency check
Just checks stride vs width times bpp.

This fixes a potential abort on guest generated bad images in
glz_encoder.

Other files touched to move some consts to red_common, they are
static so no problem to be defined in both red_worker.c and
red_parse_qxl.c .
2012-09-03 19:27:22 +03:00
Søren Sandmann Pedersen
a91daa2feb Add support for QXLComposite to spice server
In red-parse-qxl.c add support for parsing QXLComposite into
SpiceComposite. In red-worker.c add support for marshalling
SpiceComposite onto the wire.
2012-08-24 13:44:42 -04:00
Søren Sandmann Pedersen
22b64d2ae2 Add support for LZ compression of A8 images
Graduality is irrelevant for A8 images, so instead of using RGB-ness
as a short-cut, add a new macro BITMAP_FMT_HAS_GRADUALITY() that
returns true for the existing RGB images, but false for A8.
2012-08-24 13:44:32 -04:00
Alon Levy
e29dc5250c server/red_parse_qxl: red_get_image: fix leaks on bad image 2012-07-22 13:50:16 +03:00
Alon Levy
827f40e05c server/red_parse_qxl: disallow zero area bitmaps
prevents division by zero later (SIGFPE, Arithmetic exception) in
spice-common code, at spice-common/common/canvas_base.c:646
for both client and server (server only upon rendering).
2012-07-22 13:37:44 +03:00
Alon Levy
341d273bad server/red_parse_qxl: get_path: remove return NULL
introduced by 2ec2dbc78a
2012-07-22 13:37:44 +03:00
Alon Levy
b8ccb7da65 server: don't abort on guest images with missing palettes 2012-07-22 11:58:36 +03:00
Alon Levy
05f4276cc1 server: move self_bitmap_image to RedDrawable
Simplify keeping count of self_bitmap_image by putting it in
RedDrawable. It is allocated on reading from the command pipe and
deallocated when the last reference to the RedDrawable is dropped,
instead of keeping track of it in GlzDrawable and Drawable.
2012-05-15 18:01:54 +03:00
Alon Levy
2ec2dbc78a server: allow failure in getvirt
This patch changed getvirt to continue working even if spice_critical
doesn't abort (i.e. SPICE_ABORT_LEVEL != -1). This is in preparation to
make getvirt not abort at all. The reason is that getvirt is run on
guest provided memory, so a bad driver can crash the vm.
2012-04-05 18:28:49 +03:00
Marc-André Lureau
b34fd7432d Use the spice-common logging functions
It will abort by default for critical level messages. That behaviour
can be tuned at runtime.
2012-03-25 19:00:00 +02:00
Daniel P. Berrange
02d56750bd Remove trailing blank lines
Remove any blank lines at the end of all source files
2012-01-13 18:11:59 +02:00
Daniel P. Berrange
faf0947ebb Remove useless if() before free()
The free() function allows NULL to be passed in, so any
code which puts a if() before free() is wasting time
2012-01-13 18:11:58 +02:00
Hans de Goede
ee315779a0 server/red_parse_qxl.h: License should be LGPLv2+ rather then GPLv2+
Also fixup the header of server/red_parse_qxl.c, which still contained
some GPL (program rather then library) text in its header.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2011-12-15 13:12:31 +01:00
Alon Levy
096f49afbf server: add async io support
The new _ASYNC io's in qxl_dev listed at the end get six new api
functions, and an additional callback function "async_complete". When
the async version of a specific io is used, completion is notified by
calling async_complete, and no READY message is written or expected by
the dispatcher.

update_area has been changed to push QXLRects to the worker thread, where
the conversion to SpiceRect takes place.

A cookie has been added to each async call to QXLWorker, and is passed back via
async_complete.

Added api:

QXLWorker:
    update_area_async
    add_memslot_async
    destroy_surfaces_async
    destroy_primary_surface_async
    create_primary_surface_async
    destroy_surface_wait_async

QXLInterface:
    async_complete
2011-07-20 16:00:19 +03:00
Christophe Fergeau
78c1465ed3 add #include <config.h> to all source files
When using config.h, it must be the very first include in all source
files since it contains #define that may change the compilation process
(eg libc structure layout changes when it's used to enable large file
support on 32 bit x86 archs). This commit adds it at the beginning
of all .c and .cpp files
2011-05-03 14:44:10 +02:00
Alon Levy
46c70521d5 client/server: warning fixes (gcc 4.6.0)
gcc 4.6.0 added "[-Werror=unused-but-set-variable]", this and the next
few fixes tend to that. Mostly harmless.
2011-01-25 17:22:48 +02:00
Hans de Goede
c29e4f9dd8 Update license header for server/red_parse_qxl.c
This one mistakenly had a GPL header rather then an LGPL header.
2011-01-21 15:37:04 +01:00
Alexander Larsson
5322d43146 server: Don't leak QUIC image chunks
red_put_image() needs to free the chunks for QUIC images, as we
allocate these when creating the image.
2010-09-21 20:09:59 +02:00
Gerd Hoffmann
69bad628cc fix palette handling for 0.4 compat
spice 0.4 guests pass 16bpp palette colors when running in
a 16bpp video mode.  Convert them to 32bpp.
2010-09-14 10:44:22 +02:00
Gerd Hoffmann
f7aa863d54 fix brush handling for 0.4 compat
spice 0.4 guests pass 16bpp colors for brushes when running in
a 16bpp video mode.  Convert them to 32bpp.
2010-09-14 10:43:16 +02:00
Gerd Hoffmann
4207c49fe2 move command flags handling to the qxl parser
Pass through command flags to the qxl parser, so we can hide all
compat bits for spice 0.4 within the qxl parser.
2010-09-14 10:41:49 +02:00
Gerd Hoffmann
3ce690d58d qxl parser: complete parsing of QXLCompatDrawable structs 2010-08-31 13:17:15 +02:00
Gerd Hoffmann
36a8113380 red_get_cursor: avoid extra copy 2010-08-27 08:43:44 +02:00
Gerd Hoffmann
a05741ce1b qxl parser: add cursor parsing 2010-08-26 23:37:24 +02:00
Gerd Hoffmann
ea2f97a810 qxl parser: complete QXL_SURFACE_CMD_CREATE parsing 2010-08-26 22:29:12 +02:00
Alexander Larsson
1a6e77d6d4 Fix various misspellings
letancy -> latency
compund -> compound
SpicedSubMessage -> SpiceSubMessage
modifaiers -> modifiers
massage -> message
outgoiong -> outgoing
AlphaBlnd -> AlphaBlend
remoth -> remote
modifires -> modifiers
secore -> secure
2010-07-08 18:26:37 +02:00
Alexander Larsson
aa3d3db9f4 Use QXLPHYSICAL, not SPICE_ADDRESS in qxl parser 2010-07-08 13:11:31 +02:00
Alexander Larsson
31d2d6e4e4 Properly parse QXLLineAttrs.style 2010-07-08 12:43:33 +02:00
Gerd Hoffmann
5ac88aa79f Properly parse QXLImage to the new-world SpiceImage
SpiceImage now replaces RedImage and has all image types in it.
All image data are now chunked (and as such not copied when demarshalling).
2010-07-07 23:58:33 +02:00
Alexander Larsson
f39d64f40b Convert SpicePath.segments to a pointer array 2010-07-05 20:45:13 +02:00
Gerd Hoffmann
3764a36472 Properly parse and marshall SpiceString 2010-07-02 16:47:51 +02:00
Alexander Larsson
007d128973 Update for the SpicePath.segments type change 2010-07-01 16:07:02 +02:00
Alexander Larsson
00e1caf45d Simplify SpiceLineAttr by removing unsed stuff
Also in new protocol don't send style data if not needed.
2010-06-30 22:35:17 +02:00
Alexander Larsson
a24a8ff72a Store SpicePath segment count rather than size
Internally and in the network protocol (for the new version) we
now store the actual number of segments rather than the size of the
full segments array in bytes. This change consists of multiple changes
to handle this:

* Make the qxl parser calculate num_segments
* Make the canvas stroke code handle the new SpicePath layout.
* Fix up is_equal_path in red_worker.c for the new layout
* replace multiple calls to spice_marshall_PathSegment with a single
  spice_marshall_Path call
* Make the byte_size() array size handling do the conversion from
  network size to number of elements when marshalling/demarshalling.
* Update the current spice protocol to send the segment count rather than
  the size
* Update the old spice protocol to use the new byte_size functionallity
  to calculate the size sent and the number of elements recieved
2010-06-30 22:35:17 +02:00
Gerd Hoffmann
f87f63fdf5 qxl-abi: handle clip rect and path references.
red_parse_qxl.c starts to follow QXLPHYSICAL references and build up
data structures.  Can zap a bunch of get_virt calls in red_worker.c,
followed by cleanups.

(de-) marshaller needs updates to deal with that.  Also I suspect with
the get_virt() calls being gone we can offload more work to generated
marshaller code.

client doesn't build.
2010-06-30 22:34:57 +02:00
Gerd Hoffmann
905c6283d5 add qxl chunk parser 2010-06-30 22:34:47 +02:00
Gerd Hoffmann
58c23b6686 qxl abi: parse QXLRect. 2010-06-29 12:30:20 +02:00
Gerd Hoffmann
4fb61b9aa5 qxl abi: parse QXLPoint & friends. 2010-06-29 12:30:20 +02:00
Gerd Hoffmann
e7ec85a08f qxl abi: parse QXLCursorCmd. 2010-06-29 12:30:20 +02:00
Gerd Hoffmann
e03e4f0fc9 qxl abi: parse QXLSurfaceCmd. 2010-06-29 12:30:20 +02:00
Gerd Hoffmann
5de492e930 qxl abi: parse QXLMessage. 2010-06-29 12:30:20 +02:00
Gerd Hoffmann
fada35a173 qxl abi: parse QXLUpdateCmd. 2010-06-29 12:30:20 +02:00