Commit Graph

151 Commits

Author SHA1 Message Date
Alon Levy
248c08768d common/sw_canvas: remove unused error val
This is the only unused var change I'll want to revisit eventually,
I'm submitting anyway since it doesn't change current behavior. I'm
talking about ignoring the return value from canvas creation. Adding
a print is possible but I didn't test (may be too verbose, also
preferable to be a debug print if so, and we don't have that option
in the code atm - probably an environment variable will do, or adding
some spice_server_set_logging_level api, maybe even
spice_server_set_logging_fd?)
2012-03-20 15:25:50 +01:00
Alon Levy
b48fee5d7c common/canvas_base.c: remove unused variables 2012-03-20 15:25:50 +01:00
Alon Levy
9db2743262 common, canvas_get_jpeg_alpha: let top_down be any value
Allow top_down flag to have any value, only ASSERT it is positive
when needs to be positive and zero otherwise. Allows older server
bug of sending 4 instead of 1 in top down flag to not affect newer
clients (previous patch fixes server).
2012-03-20 15:25:50 +01:00
Alon Levy
c309d923aa mingw32 build: various fixes 2012-03-20 15:25:50 +01:00
Alon Levy
f5bfbff82f mingw32 build: fix two functions 2012-03-20 15:25:50 +01:00
Alon Levy
f4f40a3a30 mingw32 build: fix signed/unsigned warnings as errors 2012-03-20 15:25:50 +01:00
Gerd Hoffmann
2e2dbb5479 mingw32 build: fix build errors
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-03-20 15:25:50 +01:00
Alexander Larsson
a95a9fe41c Initialize variable to avoid compiler warning
Seems the OSX gcc warns on saveRight not being initialzied.
2012-03-20 15:25:50 +01:00
Alexander Larsson
c3d7a087e4 Handle surface images in DrawOpaque 2012-03-20 15:25:50 +01:00
Alexander Larsson
49c6fca7cf Fix crash when resetting pixman image transform
Resetting the transform is done by setting it to the identity
transform, not passing in NULL. Passing in NULL causes a crash.
2012-03-20 15:25:49 +01:00
Alexander Larsson
96faad998e Fix scaling with large magnification
When scaling part of an image we need to specify the source
coordinates in transformed coordinates. For large magnifications this
means we will get pretty large values.

Now, if e.g. src_x * transform is larger than 32765, then the
coordinate ends up outside the pixman 16bit image size, so the
rendering will not work.

The fix is to make the src_x/y offset part of the transformation.
This means its automatically transformed by the correct scaling, and
the coordinates passed into pixman are not (typically) over 16bit.
2012-03-20 15:25:49 +01:00
Alexander Larsson
4b0da43949 Revert "Fix scaling with large magnification"
This reverts commit e13be77f33609cb3fdae354ce1f2686ae865f9e0.
2012-03-20 15:25:49 +01:00
Alexander Larsson
deaf22e9bc Fix scaling with large magnification
When scaling part of an image we need to specify the source coordinates
in transformed coordinates. For large magnifications this means
we will get pretty large values.

Now, if e.g. src_x * transform is larger than 32765, then the coordinate
ends up outside the pixman 16bit image size, so the rendering
will not work.

In order to work around this we generate a "sub-image" of the pixman
image such that the src_x/y values we have to specify are zero (or near
zero).
2012-03-20 15:25:49 +01:00
Alexander Larsson
b0fe22b6ff canvas: Better coordinate rounding in scaling
When scaling in pixman you give the source coordinates in transformed
space rather than in the source coordinates. This is a bit problematic
when both source and destination coordinates are at integer positions, but
the scaling factor is not an exact 16.16 fixed point value. We used
to calculate the transformed source based on the floating point
transformation, which gave the wrong answer sometimes. Now we do the
calculations based on the fixed point transform that we give pixman.

However, even with this patch I can still sometimes see issues related
to this, although they are less bad.
2012-03-20 15:25:49 +01:00
Alexander Larsson
6264783c53 server: Fix alloc_lz_image_surface stride allocations
All lz surfaces are not 4 bytes per pixel, calculate the right stride
based on the pixman format.
2012-03-20 15:25:49 +01:00
Alexander Larsson
c74a845198 Stride can be negative, so don't use size_t for it 2012-03-20 15:25:49 +01:00
Alexander Larsson
68d204f649 Don't send padding over the network with video data 2012-03-20 15:25:49 +01:00
Alexander Larsson
bdcfb2c83d codegen: Various cleanups
Remove all uses of @end in the marshaller, instead just using
the C struct array-at-end-of-struct. To make this work we also remove
all use of @end for switches (making them C unions).

We drop the zero member of the notify message so that we can avoid this
use of @end for a primitive in the marshaller (plus its useless to send
over the wire).

We change the offsets and stuff in the migration messages to real pointers.
2012-03-20 15:25:48 +01:00
Yonit Halperin
f43de528fa canvas_base jpeg_alpha: supply the correct size to jpeg_decoder 2012-03-20 15:25:48 +01:00
Alexander Larsson
7c8a4e1ac6 Add files i forgot to commit 2012-03-20 15:25:48 +01:00
Alexander Larsson
1b8f3388b0 Make distcheck work 2012-03-20 15:25:48 +01:00
Alexander Larsson
f6735d7d9f Fix various misspellings
letancy -> latency
compund -> compound
SpicedSubMessage -> SpiceSubMessage
modifaiers -> modifiers
massage -> message
outgoiong -> outgoing
AlphaBlnd -> AlphaBlend
remoth -> remote
modifires -> modifiers
secore -> secure
2012-03-20 15:25:48 +01:00
Alexander Larsson
58d52d5ec7 Fix sign warnings from win32 compiler 2012-03-20 15:25:48 +01:00
Alexander Larsson
24c2e3c85f Fix inclusion of common files, no need for common/ part 2012-03-20 15:25:48 +01:00
Alexander Larsson
fb935fe73b Simplify spice_pixman_region32_init_rects with new types
Don't manually of SpiceRects to pixman_box32_t now that they are compatible
and SpiceRect is internal.
2012-03-20 15:25:48 +01:00
Alexander Larsson
12a734e336 Make all internal structures not be packed 2012-03-20 15:25:48 +01:00
Alexander Larsson
69c1444add Move SpiceChunks to mem.h 2012-03-20 15:25:48 +01:00
Alexander Larsson
c471990a9f Move in spice/draw.h from spice-protocol to common/ 2012-03-20 15:25:48 +01:00
Alexander Larsson
4bcb58cc9f Properly parse QXLLineAttrs.style 2012-03-20 15:25:47 +01:00
Gerd Hoffmann
e37ce72809 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).
2012-03-20 15:25:47 +01:00
Alexander Larsson
cd9b3dac8b Add spice_marshaller_add_ref_chunks 2012-03-20 15:25:47 +01:00
Alexander Larsson
8f568a4073 Add spice_chunks_* helpers 2012-03-20 15:25:47 +01:00
Alexander Larsson
09d9a18702 Convert SpicePath.segments to a pointer array 2012-03-20 15:25:47 +01:00
Gerd Hoffmann
c5d06102b7 Properly parse and marshall SpiceString 2012-03-20 15:25:46 +01:00
Alexander Larsson
dabdea4fac Fix build on win32 2012-03-20 15:25:46 +01:00
Alexander Larsson
f90b89d521 Update for the SpicePath.segments type change 2012-03-20 15:25:46 +01:00
Alexander Larsson
bef8a0cf19 Simplify SpiceLineAttr by removing unsed stuff
Also in new protocol don't send style data if not needed.
2012-03-20 15:25:46 +01:00
Alexander Larsson
e6eb19e752 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
2012-03-20 15:25:46 +01:00
Alexander Larsson
93405abac7 Add spice_marshaller_set_uint32
With this function you can update an added uint32 after it being added.
To make this possible all the spice_marshaller_add_add_foo functions
now return a pointer that can be used as a reference when later
setting a value.
2012-03-20 15:25:46 +01:00
Gerd Hoffmann
51c71e6883 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.
2012-03-20 15:25:46 +01:00
Gerd Hoffmann
908c841563 qxl abi: parse QXLCopy + QXLBlend.
Also adapt to tyops fix (s/rop_decriptor/rop_descriptor/).
2012-03-20 15:25:46 +01:00
Gerd Hoffmann
6ba331f45e qxl abi: parse QXLOpaque.
Also adapt to tyops fix (s/rop_decriptor/rop_descriptor/).
2012-03-20 15:25:45 +01:00
Gerd Hoffmann
bc1c2837f3 qxl abi: parse QXLFill.
Also adapt to tyops fix (s/rop_decriptor/rop_descriptor/).
2012-03-20 15:25:45 +01:00
Alexander Larsson
90193bf160 Remove support for clip by path
This is not supported currently anyway and was not generated before.
2012-03-20 15:25:45 +01:00
Gerd Hoffmann
d217864737 fix use-after-free in spice_marshaller_reset 2012-03-20 15:25:45 +01:00
Yonit Halperin
9c906e0c2f Lossy compression of RGBA images (on WAN connection)
The RGB channels are compressed using JPEG.
The alpha channel is compressed using LZ.
2012-03-20 15:25:44 +01:00
Yonit Halperin
e48d14df78 applying zlib compression over glz on WAN connection 2012-03-20 15:25:44 +01:00
Alexander Larsson
075087b180 Make generated marshallers build on win32 2012-03-20 15:25:44 +01:00
Alexander Larsson
08d94f60b1 Make sound data @as_ptr to avoid copying data 2012-03-20 15:25:44 +01:00
Alexander Larsson
ebd34a4291 Make ping data @as_ptr to avoid copying data 2012-03-20 15:25:44 +01:00