cairo/pixman
Nicholas Miell d598cd8d61 Fix the AMD64 final link by removing SLIM from pixman
In order for SLIM's PLT indirection avoidance to work, everything in
the library that makes internal function calls needs to see the
relevant slim_hidden_proto() macro in addition to the function's
prototype. However, external headers used by clients of the shared
library should not use the SLIM macros at all.

Pixman is a rather odd case -- it's mostly independent from cairo, so
it has it's own public interface, but it's built as a part of cairo
instead of its own shared library. This means that cairo would need to
see all of pixman's slim_hidden_proto() macros in order to function
and it doesn't currently, which results in a link failure on AMD64
systems and on i386 systems (I think, I haven't actually verified
this) it produces a shared object that isn't actally sharable.

I have no idea why exactly the link failure only showed up as a result
of commit e06246b9b1. I think it has
something to do with the pixman functions no longer having PLT entries
at all, but the exact interaction isn't clear to me.

However, all of these pixman functions aren't part of the cairo ABI
(which is why they were marked pixman_private in the first place),
which means that the SLIMification of pixman is largely pointless --
they aren't externally visible, so they don't need PLT entries at
all. Furthermore, while pixman may eventually be shared among cairo
and X, I'm told that this sharing will be source-level only, which
means it won't ever be an actual shared library and thus won't ever
need SLIM at all.

So, I just removed all use of SLIM in pixman (leaving behind
slim_internal.h for the future edification of anyone who cares).This
fixes the AMD64 link failure and passes the check-plt & check-def
parts of make check.

Signed-off-by: Nicholas Miell <nmiell@gmail.com>
2006-09-07 12:48:28 -07:00
..
src Fix the AMD64 final link by removing SLIM from pixman 2006-09-07 12:48:28 -07:00
.gitignore Rename .cvsignore to .gitignore. Add *~ and *.o. 2006-02-15 15:00:26 -08:00
AUTHORS Added pixman_format_get_masks and fixed a few format issues 2004-09-12 06:06:50 +00:00
autogen.sh Allow names of all autofoo programs to be overridden via environment variables. 2003-12-08 18:07:56 +00:00
ChangeLog Use uint32_t instead of uint; 2006-01-09 10:29:22 +00:00
ChangeLog.libic Allow names of all autofoo programs to be overridden via environment variables. 2003-12-08 18:07:56 +00:00
ChangeLog.libpixregion Allow names of all autofoo programs to be overridden via environment variables. 2003-12-08 18:07:56 +00:00
ChangeLog.slim Require __GNUC__ >= 3 before defining slim_hidden_def macro 2003-09-24 06:20:38 +00:00
configure.in Port MMX code from xserver to pixman. 2005-08-16 16:50:25 +00:00
COPYING Merge of libic, slim AUTHORS, COPYING, README 2003-12-09 15:59:18 +00:00
INSTALL Initial import of libpixregion 2003-02-25 08:05:26 +00:00
libpixman.pc.in libpixman is the pixel manipulation library 2003-12-10 13:29:40 +00:00
Makefile.am From Keith Packard <keithp@keithp.com>, 2005-08-10 12:36:51 +00:00
NEWS fix typo 2005-08-01 06:57:09 +00:00
README libpixman is the pixel manipulation library 2003-12-10 13:29:40 +00:00
RELEASING Add -head to LIBPIXMAN_VERSION after tagging with SNAPSHOT_0_1_6. 2005-07-28 14:58:25 +00:00
TODO Update date since 0.1.2 release didn't get pushed out until today. 2004-10-27 09:37:34 +00:00
update.pl fixes for wrong order of renames 2003-12-10 15:41:14 +00:00

libpixman - Pixel manipulation library

libpixman is a merge of libpixregion and libic.
It also includes the slim headers.

----------------------------------------------------------------------
libpixregion - Pixel region Library

libpixregion is a generic library for manipulating pixel regions. A
PixRegion is a set of Y-X banded rectangles that cover the desired
region.

The original code for libxregion was part of the reference X server
implementation of the X Window System. A modified copy of the code
also exists in the Xlib client library. libpixregion was formed so
that both the X server and client libraries could share common code
for region manipulation.

libpixregion is also intended to be applicable outside of the X Window
System. The public interface of libpixregion does not depend on any
part of the X Window System.

----------------------------------------------------------------------
libic - Image compositing library

libic is a generic image compositing library. libic provides
Porter/Duff compositing of images and implicit mask generation for
geometric primitives including trapezoids, triangles, and rectangles.

The semantics of libic are designed to precisely match the
specification of the X Render extension. In fact, the initial
implementation of libic was lifted from the reference implementation
of RENDER from the X server.

However, libic is intended to be useful independent of the X Window
System. The public interface exported by libic does not contain any
X-specific data structures.

Carl Worth
cworth@isi.edu

Keith Packard (keithp@keithp.com) originally wrote all the original
RENDER code that was yanked out to become libic. Keith also provided
impetus and guidance in the development of libic.

----------------------------------------------------------------------
slim - Shared Library Interface Macros