Commit Graph

69 Commits

Author SHA1 Message Date
Alexander Larsson
ee035787ef Fix win32 build with pixman 0.18.0 2010-04-12 21:43:15 +02:00
Izik Eidus
85d4355d79 fix 16bpp support on cairo_canvas
Signed-off-by: Izik Eidus <ieidus@redhat.com>
2010-04-12 11:57:34 +03:00
Alexander Larsson
063af4a4f3 Always tread depth 24 (i.e. non alpha) as depth 32 when blitting
When blitting we don't really care about alpha mismatches, we just copy bits
anyway.
2010-04-12 10:32:25 +02:00
Izik Eidus
22d1ac9eb5 spice: win32 client: fix gdi locking
While the fix could have been more effective,
it seems like this patch stream better with the coding
logic that was there..., maybe later we will want to change
the locking into more effective way.

(There is just the primary surface to protect in reiality)

Signed-off-by: Izik Eidus <ieidus@redhat.com>
2010-04-09 05:09:02 +03:00
Alexander Larsson
de4306af33 Initialize _kill_mark so we don't get spurious valgrind warnings 2010-04-08 17:09:32 +02:00
Alexander Larsson
601509e5f8 Remove non-used lookup3.[ch] 2010-04-07 09:40:21 +02:00
Izik Eidus
e1a4d91896 spice: common: gdi_canvas fix gdi objects leak
BitmapMask was used by the draw_text function as well
therefore we need to mark from_surface = 0 if we want
it to release the boject...

(Was evil, took me few hours to understand from where
 the leak come...)

Signed-off-by: Izik Eidus <ieidus@redhat.com>
2010-04-05 22:57:37 +03:00
Izik Eidus
4a208b3644 libspice: add off screens support
Signed-off-by: Izik Eidus <ieidus@redhat.com>
2010-04-03 05:35:31 +03:00
Alexander Larsson
ce0d8a094c Add spice_strndup
Also, make str(n)dup handle NULL correctly
2010-03-24 17:02:20 +01:00
Alexander Larsson
dcef400d30 Fix uninitilized memory read in stroke_fill_spans()
y2 was not initialized
2010-03-18 10:40:18 +01:00
Alexander Larsson
da21e89daa Use nearest scaling for DRAW_ALPHA_BLEND since this is what win32 needs
DrvAlphaBlend is the only current user of DRAW_ALPHA_BLEND, and its
defined to do nearest (COLORONCOLOR) scaling, not bilinear.
2010-03-17 20:08:59 +01:00
Alexander Larsson
6664c12278 Fix up empty region checks in canvas operations
We rely on not passing on empty rects to the drawing operations by
checking for empty regions and exiting early. However the checks
were wrongly using pixman_region32_n_rects(region) == 0, whereas
we should be using pixman_region32_not_empty().
2010-03-17 10:06:40 +01:00
Alexander Larsson
af4672326b Use the spice allocator in common/ 2010-03-11 12:14:08 +01:00
Alexander Larsson
440ac41cf1 New memory allocators that exit on OOM and handle multiplication overflow
Every place that does a regular malloc/calloc and aborts on failure
should use spice_malloc/spice_mallo0 instead, which is leaner and cleaner.

Allocations of dynamically sized arrays can use g_malloc_n or g_new etc
which correctly handle multiplication overflow if some of the arguments
are not trusted.
2010-03-11 12:13:59 +01:00
Alexander Larsson
0230541af5 Define GL_GLEXT_PROTOTYPES in CFLAGS not in random places in the source 2010-03-10 21:28:47 +01:00
Alexander Larsson
454f44470d Update gdi canvas wrt latest changes
ALIGN -> SPICE_ALIGN
2010-03-09 16:01:12 +01:00
Alexander Larsson
90c5766caf Use macros from <spice/macros.h> rather than duplicate them 2010-03-09 11:10:00 +01:00
Alexander Larsson
5cb99e12c6 Move draw_rop3 to canvas_base 2010-03-08 19:45:28 +01:00
Alexander Larsson
a0c6344c6a Move canvas_draw_stroke to canvas_base 2010-03-08 19:45:28 +01:00
Alexander Larsson
e00bce8e25 Move most of the shared draw_xyz() methods from CairoCanvas to CanvasBase
This adds a set of virtual methods for low-level operations. A subclass
can choose to implement those and let the default CanvasBase implementations
handle the highlevel stuff.
2010-03-08 19:45:28 +01:00
Alexander Larsson
18606d99ea Move canvas_region and group_start/end to canvas_base 2010-03-08 19:45:28 +01:00
Alexander Larsson
f8217d8b96 Move virtualization of canvas drawing into common/canvas_base
Instead of having two virtualizations of the canvas we push the
virtualization into the canvas code itself. This not only avoids
the duplication of this code, it also makes the exposed API for the
canvas much smaller (in terms of exported API).

It also lets us use the virtualization to implement basic support
for operations in canvas_base which is then overridden by each canvas
implementation.
2010-03-08 19:45:28 +01:00
Alexander Larsson
05697e502d Make virt mapping an interface 2010-03-08 19:45:28 +01:00
Alexander Larsson
f7a77f9881 Make glz_decoder non-optional canvas_base in canvas constructors
It can still be NULL, but we simplify the headers by always including it.
There is no practical performance difference here.
2010-03-08 19:45:27 +01:00
Alexander Larsson
c0fdcd1a10 Make canvas Glz decoder integration nicer
We use a dynamic interface similar to e.g. SpiceImageCache instead
of passing both function and opaque
2010-03-08 19:45:27 +01:00
Alexander Larsson
04b35fe7ff Fix colorkeying in pixman_utils.c
We were masking out the alpha bit in the key color not int
the source pixel, so colorkeying didn't work when the high byte
was != 0. For instance in the shutdown dialog in XP.
2010-03-08 19:41:34 +01:00
Larsson@.(none)
c28169976a Make gdi canvas build in the new pixman world 2010-03-01 15:12:35 +01:00
Larsson@.(none)
98f7d96336 Always include spice/types.h before pixman so standard int types exist 2010-03-01 15:12:33 +01:00
Larsson@.(none)
ea92e6c063 Fix warnings from visual studio compiler 2010-03-01 15:12:32 +01:00
Larsson@.(none)
bb77edf643 Have only one copy of ROUND macro and cast to int explicitly 2010-03-01 15:12:30 +01:00
Alexander Larsson
e995040b1e Remove last cairo use from canvas_base 2010-02-23 22:52:06 +01:00
Alexander Larsson
7992266ccf Remove cairo_t from cairo canvas 2010-02-23 22:52:06 +01:00
Alexander Larsson
b5693ca0fc Covert cairo canvas put_image() to pixman 2010-02-23 22:52:06 +01:00
Alexander Larsson
98dde80ed3 Replace custom region implementation with pixman_region32_t
pixman_region32_t is an efficient well tested region implementation (its
the one used in X) that we already depend on via pixman and use in
some places. No need to have a custom region implementation.
2010-02-23 22:52:06 +01:00
Alexander Larsson
8f912e4917 Convert cairo canvas clear() to pixman 2010-02-23 22:52:06 +01:00
Alexander Larsson
d430a6c79b Convert cairo canvas group_start/end to pixman 2010-02-23 22:52:06 +01:00
Alexander Larsson
ceff9ca642 Convert cairo canvas read_bits() to pixman 2010-02-23 22:52:06 +01:00
Alexander Larsson
f7c071514b Remove unused cairo helper functions 2010-02-23 22:52:06 +01:00
Alexander Larsson
23d4fdbe8a Convert cairo canvas to use pixman for draw_stroke 2010-02-23 22:52:06 +01:00
Alexander Larsson
e57cfae896 Convert cairo canvas draw_transparent to use pixman 2010-02-23 22:52:06 +01:00
Alexander Larsson
f32185a01d Convert cairo canvas draw_rop3 to using pixman 2010-02-23 22:52:05 +01:00
Alexander Larsson
3b2f1fcb22 Convert draw_blackness/whiteness/invers to using pixman 2010-02-23 22:52:05 +01:00
Alexander Larsson
974c662ae4 Convert cairo canvas alpha_blend to using pixman 2010-02-23 22:52:05 +01:00
Alexander Larsson
824496405a Convert cairo canvas draw_text to using pixman 2010-02-23 22:52:05 +01:00
Alexander Larsson
bf0d038e76 Convert cairo canvas copy bits to pixman 2010-02-23 22:52:05 +01:00
Alexander Larsson
7fe1df4e14 Convert cairo canvas draw_copy() to using pixman
This is just identical to draw_blend().
2010-02-23 22:52:05 +01:00
Alexander Larsson
eff0aa0298 Convert cairo canvas draw_blend() to using pixman 2010-02-23 22:52:05 +01:00
Alexander Larsson
0cb87a507c Convert cairo canvas draw_opaque() to using pixman 2010-02-23 22:52:05 +01:00
Alexander Larsson
864881c318 Convert cairo canvas draw_fill() to using pixman 2010-02-23 22:52:05 +01:00
Alexander Larsson
a7ceb98ea1 Add possibility to not invert bitmask in canvas_get_mask()
This allows the pixman implementation to instead invert the (generally
smaller) region instead of duplicating the bitmap to invert it.
2010-02-23 22:52:05 +01:00