Commit graph

4942 commits

Author SHA1 Message Date
Benjamin Otte
7745ea21e1 gl: acquire/release properly in _cairo_gl_draw_image()
Fixes various testsuite failures, in particular ones related to masks.
2010-04-15 18:31:00 +02:00
Benjamin Otte
596d3017a1 gl: acquire/release context when getting images
Avoids Mesa complaining about no current context.
2010-04-15 18:31:00 +02:00
Benjamin Otte
46ef05c3d7 glx: Add getters for device's Display and GLXContext 2010-04-15 18:31:00 +02:00
Benjamin Otte
712919223d gl: Make code safe for multithreaded access
The code callss the gl device's acquire/release in
cairo_device_acquire/release(). This way, external APIs can use these
functions to prepare for rendering GL.

Also adds code to unset the glx context if it wasn't set when acquiring
the device. This allows multithreaded apps to work fine with just using
cairo APIs, but might introduce penalties in single-threaded
applications.
2010-04-15 18:30:54 +02:00
Benjamin Otte
8f2e82cea3 xcb: Make code not complain about every new format 2010-04-15 17:48:24 +02:00
Benjamin Otte
1d753b2f4d xlib: Make code not complain about every new format 2010-04-15 17:47:01 +02:00
Benjamin Otte
ebc9cc46fe gl: Use right format
The internal format should always be GL_RGBA.
2010-04-15 17:43:32 +02:00
Chris Wilson
4142f0836d gl: Handle component-alpha ADD
A simple extension to the component-alpha OVER [as ca-ADD is just the
second pass in ca-OVER] to support amalgamation of glyph masks. This
speeds up firefox-36 by ~5% on g45.

Before:
  firefox-36-20090611   76.185
After:
  firefox-36-20090611   72.863
2010-04-15 09:21:05 +01:00
Benjamin Otte
a4bae1956b gl: Really don't write error status to the inert object. 2010-04-14 22:46:34 +02:00
Chris Wilson
6826f02001 gl: Don't write error status to the inert object.
Reported-by: Benjamin Otte <otte@redhat.com>
2010-04-14 20:26:48 +01:00
Chris Wilson
03f7bfc351 rtree: Remove the false assert upon collapse. 2010-04-14 20:14:39 +01:00
Chris Wilson
b0383d0cd2 svg: Don't write error status to the inert object.
Reported-by: Benjamin Otte <otte@redhat.com>
2010-04-14 19:42:20 +01:00
Chris Wilson
5274b63adb ps: Don't write error status to the inert object.
Reported-by: Benjamin Otte <otte@redhat.com>
2010-04-14 19:42:20 +01:00
Chris Wilson
45d23b8a79 pdf: Don't write error status to the inert object.
Reported-by: Benjamin Otte <otte@redhat.com>
2010-04-14 19:42:16 +01:00
Chris Wilson
bd17b898b1 surface: Propagate the error status to _cairo_surface_get_device()
If the surface is in error, the appropriate action is report the error
using an inert error cairo_device_t.

Reported-by: Benjamin Otte <otte@redhat.com>
2010-04-14 19:31:35 +01:00
Chris Wilson
005596907f xlib: Don't operate on an error object inside setters.
Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=599574

The backend API manipulated the surface prior to checking whether it was
an inert error surface - and in the event of an error surface, tried to
overwrite it's error status.
2010-04-14 19:31:31 +01:00
Chris Wilson
8afd4e4c3d hull: _cairo_hull_vertex_compare() return 0 for identical elements
Andreas Falkenhahn reported a bizarre situation with some
implementations of qsort that actually compare the same elements and
require the comparator to return 0. So be it.

Reported-by: Andreas Falkenhahn <andreas@airsoftsoftwair.de>
2010-04-13 17:56:14 +01:00
Chris Wilson
d95037db99 cache: Tidy _cairo_cache_shrink_to_accommodate()
There is no need to shrink the cache if we add an entry of size 0, so
don't by moving the guards in _cairo_cache_shrink_to_accommodate() to the
callers.
2010-04-11 21:06:53 +01:00
Chris Wilson
e6309c6307 xcb: Use normal finish to decouple from surface cache.
Hook into the standard finishing process for a more robust cache removal
mechanism. firefox was able to trigger some double free asserts
otherwise.
2010-04-11 21:06:53 +01:00
Chris Wilson
6986970ea5 clip: Compile fix for previous clip.
PEBKAC.
2010-04-10 17:05:38 +01:00
Chris Wilson
0899852c97 clip: Compare the whole clip when testing for equality.
Should fix test/clip-contexts
2010-04-10 16:03:14 +01:00
Chris Wilson
a9f5064933 script: Another RGB16_565 warning. 2010-04-10 16:03:14 +01:00
Adrian Johnson
42b5cac766 PDF-operators: ensure text operations flushed before emitting clip 2010-04-10 22:15:01 +09:30
Chris Wilson
c004800fae script: Compile without FT_FONT 2010-04-07 22:50:34 +01:00
Chris Wilson
bdf8f50ada script: Another RGB16_565 warning. 2010-04-07 22:50:21 +01:00
Andrea Canciani
70ca0040fd Actually check for memory allocation failure
Clang static analyzer signals "Dereference of null pointer" in case
the malloc returns NULL, as the code is checking the wrong pointer.
2010-04-07 22:58:36 +02:00
Benjamin Otte
d7f71ac5c2 region: Make the 2nd argument to intersect and union const 2010-04-07 22:04:39 +02:00
Kristian Rietveld
ded3a9639b quartz: Define cairo_quartz_float_t and use instead of float
On Mac OS 10.6 and newer cairo_quartz_float_t is defined to be a
CGFloat, resolving issues with the 64-bit builds.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=25814
2010-04-04 12:34:29 +02:00
Andrea Canciani
7c2c3f621f Correct masking optimization
In _cairo_surface_mask() there was an invaild optimization (it failed
for surfaces without alpha content). Using _cairo_pattern_is_clear()
is the correct way to evaluate if a pattern is clear.

Fixes clear-source
2010-04-03 22:57:19 +02:00
Chris Wilson
24fc36c10f script: Fix endian encoding of '<|' length.
Andrea found and fixed (and updated all the traces!) an endian bug where
we were encoding a 32bit length inside the compressed string stream.
However, this one inside the script backed escaped his notice.
2010-04-02 08:51:03 +01:00
Chris Wilson
d209b40c64 xlib: Rearrange xrender stubs to restore compilation without xrender.h 2010-04-01 20:36:15 +01:00
Behdad Esfahbod
db4dbb3834 Improve doc syntax check to allow inline macro docs 2010-04-01 01:53:53 -04:00
Andrea Canciani
35f19bc084 pattern: Fix _gradient_is_opaque() for zero stops
_gradient_is_opaque() previously returned TRUE for gradient with
no stops, triggering a false optimization in _cairo_gstate_mask().

Fixes test/gradient-zero-stops-mask

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-03-31 12:52:09 +02:00
Chris Wilson
ce3ad6f41e xlib: Avoid multiple evaluations inside bswap_*() macro.
Fixes:
  Fonts are not readable if remote display to a machine with different
  endian.
  https://bugzilla.mozilla.org/show_bug.cgi?id=526977

Reported-and-tested-by: Ginn Chen <Ginn.Chen@Sun.COM>
2010-03-31 08:21:17 +01:00
Chris Wilson
be4ffa9df2 doc: Fix some missing '%' in gtk-doc comments 2010-03-30 18:31:38 +01:00
Chris Wilson
7ab350378e Silence enumeration warnings following addition of RGB16_565 2010-03-30 18:31:34 +01:00
Chris Wilson
d901692a55 scaled-glyph: Allow removal info fields.
Pushed a fraction of a second too soon... Update the
scaled_glyph->has_info if the backend clears any field as well.
2010-03-30 15:31:32 +01:00
Chris Wilson
5c4b6d520b xcb: Cache whether we have already check a glyph for size.
Avoid repeated cairo_scaled_glyph_lookup() and checking of sizes if we
have already seen this glyph in this run.
2010-03-30 15:28:37 +01:00
Chris Wilson
1c76e3e9ad scaled-font: Optimize cairo_scaled_font_lookup()
By tracking which fields of information are already available on the
scaled_glyph we can more efficiently determine if we already have the
requested fields. This reduces from about 6 conditionals to one, and
reduces the function overhead by ~20% -- which has a measurable
improvement on glyph benchmarks.
2010-03-30 15:28:37 +01:00
Chris Wilson
2a98d0586c drm/i915: Avoid using another unpreserved temporary
As we may load from a sampler, we can not use on of the unpreserved
temporaries to store the intermediate colour result.
2010-03-28 18:49:16 +01:00
Chris Wilson
26f963557b drm/i915: Normalize spans opacity value
On the generic path I forgot to rescale the alpha value into [0,1].
2010-03-28 18:49:16 +01:00
Oleg Romashin
022291be1c Add back support for CAIRO_FORMAT_RGB16_565
Due to slow memory speed, 16bpp color depth is still very popular on mobile
devices. Maemo5 is also using 16bpp color depth.
2010-03-24 13:12:25 -04:00
Chris Wilson
36e12b1952 subsurface: Ignore return from _cairo_clip_init_copy()
The return is just a hint that the clip is empty, however we are about
to immediately apply the surface clip and so do not care for an
'optimised' path.
2010-03-24 12:14:20 +00:00
Chris Wilson
e356e5d18b recording: Fix leak of clip from snapshots of recording surfaces. 2010-03-24 11:38:19 +00:00
Chris Wilson
5b4885f693 clip: propagate the no-clip through the copy. 2010-03-24 11:25:29 +00:00
Chris Wilson
b3e0393161 clip: Don't reduce all-clip to no-clip. 2010-03-24 11:21:36 +00:00
Chris Wilson
b12114f296 snapshot: Finish the clone.
Kill ref cycles from snapshots patterns by explicitly calling finish on
the cloned surface.
2010-03-24 11:08:38 +00:00
Chris Wilson
db913d731e xcb: Ensure that we own the glyph cache before use.
Sigh. One day, I will enable multiple glyph caches to be attached to a
scaled font, but for today, simply avoid the crash.
2010-03-24 10:16:58 +00:00
Chris Wilson
6da3cea356 scaled-font: Destroy the old surface when replacing scaled_glyph->recording 2010-03-23 20:53:11 +00:00
Chris Wilson
548092fe8c script: Free the surface/font bitmaps. 2010-03-23 20:08:36 +00:00