The only remaining X-functions used in server are XNF*, the rest is converted to
plain alloc/calloc/realloc/free/strdup.
X* functions are still exported from server and x* macros are still defined in
header file, so both ABI and API are not affected by this change.
Signed-off-by: Mikhail Gusarov <dottedmag@dottedmag.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
This patch was created with:
git ls-files '*.[ch]' | while read f; do unifdef -B -DRENDER -o $f $f; done
Signed-off-by: Keith Packard <keithp@keithp.com>
Thanks to David Miller for noticing a make problem with sdksyms.c
not being regenerated when sdksyms.sh is updated. This is not yet the
best solution; automake generates dependency for sdksyms.o, but the
build really should also regenerate sdksyms.c when sdksyms.o needs to
be regenerated.
Export the symbols in miext/cw/cw.h. These symbols are in libxaa, and
at least the nvidia driver uses them. Maybe cw.h should be installed
in the sdk.
This was an attempt to avoid scratch gc creation and validation for paintwin
because that was expensive. This is not the case in current servers, and the
danger of failure to implement it correctly (as seen in all previous
implementations) is high enough to justify removing it. No performance
difference detected with x11perf -create -move -resize -circulate on Xvfb.
Leave the screen hooks for PaintWindow* in for now to avoid ABI change.
over to new system.
Need to update documentation and address some remaining vestiges of
old system such as CursorRec structure, fb "offman" structure, and
FontRec privates.
Additionally, protect libcw setup behind checks for Render, to avoid
segfaulting if Render isn't available (xnest).
The previous setup was an ABI-preserving dance, which is better nuked now.
Now, anything that needs libcw must explicitly initialize it, and
miDisableCompositeWrapper (previously only called by EXA and presumably binary
drivers) is gone.
Get rid of almost all uses of these definitions. They're still defined for
delinquent out-of-tree drivers, and also for the Mesa build. As well as
for miinitext.c. But largely gone.
backing drawable if the serial numbers differ. Fixes crash in XAA which
occurred when the DDX bumped the serial number on the backing drawable and
expected it to get re-validated, and we didn't because the wrapped drawable
hadn't been bumped.
- Merge various fb/ bits of COMPOSITE support from xserver, which weren't
necessary before due to cw hiding the issues. Fixes offset calculations
for a number of operations, and may pull some fixes that cairo has
wanted for XAA as well.
- Add a new call, miDisableCompositeWrapper(), which a DDX can call to keep
cw from getting initialized from the damage code. While it would be
cleaner to have each DDX initialize it if it needs it, we don't have
control over all of them (e.g. nvidia).
- Use the miDisableCompositeWrapper() to keep cw from getting set up for
screens using EXA, because EXA is already aware of composite. Avoiding
cw improved performance 0-35% on operations tested by ajax in x11perf.
Add XSERV_t, TRANS_SERVER, TRANS_REOPEN to quash warnings.
Add #include <dix-config.h> or <xorg-config.h>, as appropriate, to all
source files in the xserver/xorg tree, predicated on defines of
HAVE_{DIX,XORG}_CONFIG_H. Change all Xfont includes to
<X11/fonts/foo.h>.
not at the backing pixmap's origin. Resulted in incorrect rendering in
at least aisleriot, fluxbox, and KDE apps, and probably many more.
While here, move the ParentRelative loop above the drawable grab -- may
improve correctness with ParentRelative background origins as well.
Note that the border code doesn't handle ParentRelative yet.
according to the rules as I understand them (bug #1045), not everybody
follows the rules. GC funcs were being called on the same GC from
within GC ops, and the cwValidateGC caused a loop in the funcs chain
that resulted in a crash, notably in cwPolylines.
to me.
Clean up transition between cheap and expensive GC wrappers by using the
prologue and epilogue macros. Before, the GC would be left unvalidated
sometimes which would cause all kinds of entertaining bugs against a
DDX which cares (XAA).
Eliminate needless (and, it turns out, dangerous) call to ChangeGC on
DestroyGCPrivate.
in cwSetWindowPixmap, check if the pixmap is the screen pixmap and disable
the wrapper by setting the private to NULL.
None works.
Copy filter to backing picture during validation.
Mark picture serialNumber when setting Filter or Transform so Validate
occurs.
Initialize xf86Screens[i]->pScreen to NULL so that RADEON driver doesn't
crash during server reset using old pScreen.
visuals. Necessary to keep Flash from crashing.
Must call ValidateGC/ValidatePicture on "real" GC/Picture to ensure
pCompositeClip is set correctly.
Need to take the composite clip from the "real" GC/Picture and turn it into
the clientClip for the backing version.
Adjust pixmap screen origin to account for drawable->x/y Change debugging
output a bit (disabled by default)
- Fix wrapping of GC ops/funcs according to policy described in bug #1045.
- Remove ValidateGC/ValidatePictures on the redirected drawables/pictures
-- it's not needed, and DDXs shouldn't be seeing redirected drawables
in render or GC ops/funcs when cw is running.
- Mark all GC/Picture state as dirty when moving from redirected to
non-redirected, since it hadn't been passed down in Change* or
Validate* while redirected.
- Remove CreatePicture wrapper that didn't do anything.
- Comment on why AddTraps wrapper isn't needed.
the flagged bits from a source picture. Approved in principle by
keithp.
- Use CopyPicture and SetTransform to update most of the backing picture's
state in the composite wrapper. Filters are still missing.
- Don't allocate a picture private, now that we calculate clipping properly
and don't need the serialNumber or stateChanges.
- Use the format of the source pixmap rather than generating the format
from the window's visual.
- Wrap the rest of the Render primitives that were stubbed out before.
list changes.
- Use FillTiled instead of FillSolid for painting tiled border/background
pixmaps, and don't needlessly change the scratch GC's defaults.
- Use the preferred dixChangeGC instead of DoChangeGC.
- Simplify a silly loop and clean up a couple of comments.