From ea5e0eabd1303a55d8fc10f44d21a3d371ce8919 Mon Sep 17 00:00:00 2001 From: Matthias Hopf Date: Wed, 21 Jun 2006 17:08:51 +0200 Subject: [PATCH 1/6] Bug 4320: Fastpath corner case improvement for Composite. --- hw/xfree86/xaa/xaaPict.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hw/xfree86/xaa/xaaPict.c b/hw/xfree86/xaa/xaaPict.c index f7c1f3dd0..a1ff51087 100644 --- a/hw/xfree86/xaa/xaaPict.c +++ b/hw/xfree86/xaa/xaaPict.c @@ -516,7 +516,10 @@ XAAComposite (CARD8 op, (!pSrc->repeat || (xSrc >= 0 && ySrc >= 0 && xSrc+width<=pSrc->pDrawable->width && ySrc+height<=pSrc->pDrawable->height)) && - ((op == PictOpSrc && pSrc->format == pDst->format) || + ((op == PictOpSrc && + ((pSrc->format==pDst->format) || + (pSrc->format==PICT_a8r8g8b8 && pDst->format==PICT_x8r8g8b8) || + (pSrc->format==PICT_a8b8g8r8 && pDst->format==PICT_x8b8g8r8))) || (op == PictOpOver && !pSrc->alphaMap && !pDst->alphaMap && pSrc->format==pDst->format && (pSrc->format==PICT_x8r8g8b8 || pSrc->format==PICT_x8b8g8r8)))) From ed18d776f02e2ab235954501ef64936af9f9d909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Wed, 21 Jun 2006 16:22:14 -0400 Subject: [PATCH 2/6] Fix #2488 for fb too: sample pixel center when transforming. --- fb/fbcompose.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/fb/fbcompose.c b/fb/fbcompose.c index 6f7e3e6ec..03adab456 100644 --- a/fb/fbcompose.c +++ b/fb/fbcompose.c @@ -2726,8 +2726,9 @@ static void fbFetchSourcePict(PicturePtr pict, int x, int y, int width, CARD32 * xFixed_32_32 l; xFixed_48_16 dx, dy, a, b, off; - v.vector[0] = IntToxFixed(x); - v.vector[1] = IntToxFixed(y); + /* reference point is the center of the pixel */ + v.vector[0] = IntToxFixed(x) + xFixed1/2; + v.vector[1] = IntToxFixed(y) + xFixed1/2; v.vector[2] = xFixed1; if (pict->transform) { if (!PictureTransformPoint3d (pict->transform, &v)) @@ -2793,8 +2794,9 @@ static void fbFetchSourcePict(PicturePtr pict, int x, int y, int width, CARD32 * if (pict->transform) { PictVector v; - v.vector[0] = IntToxFixed(x); - v.vector[1] = IntToxFixed(y); + /* reference point is the center of the pixel */ + v.vector[0] = IntToxFixed(x) + xFixed1/2; + v.vector[1] = IntToxFixed(y) + xFixed1/2; v.vector[2] = xFixed1; if (!PictureTransformPoint3d (pict->transform, &v)) return; @@ -2914,8 +2916,9 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32 dx = pict->pDrawable->x; dy = pict->pDrawable->y; - v.vector[0] = IntToxFixed(x - dx); - v.vector[1] = IntToxFixed(y - dy); + /* reference point is the center of the pixel */ + v.vector[0] = IntToxFixed(x - dx) + xFixed1 / 2; + v.vector[1] = IntToxFixed(y - dy) + xFixed1 / 2; v.vector[2] = xFixed1; /* when using convolution filters one might get here without a transform */ @@ -3020,6 +3023,12 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32 } } } else if (pict->filter == PictFilterBilinear) { + /* adjust vector for maximum contribution at 0.5, 0.5 of each texel. */ + v.vector[0] -= v.vector[2] / 2; + v.vector[1] -= v.vector[2] / 2; + unit.vector[0] -= unit.vector[2] / 2; + unit.vector[1] -= unit.vector[2] / 2; + if (pict->repeatType == RepeatNormal) { if (REGION_NUM_RECTS(pict->pCompositeClip) == 1) { for (i = 0; i < width; ++i) { From 865884d050e1778180f7677e15f9ee1625ea4bb2 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 21 Jun 2006 14:16:28 -0700 Subject: [PATCH 3/6] fix compiler warning in dix/xpstubs.c when XPRINT is not defined --- dix/xpstubs.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dix/xpstubs.c b/dix/xpstubs.c index 5135cc398..c06a524fa 100644 --- a/dix/xpstubs.c +++ b/dix/xpstubs.c @@ -35,6 +35,9 @@ from The Open Group. #include #ifdef XPRINT #include "DiPrint.h" +#else +extern Bool XpClientIsBitmapClient(ClientPtr client); +extern Bool XpClientIsPrintClient(ClientPtr client, FontPathElementPtr fpe); #endif Bool From 77aa701e898c6525322cc4029d95167dd9f6e618 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 21 Jun 2006 14:16:48 -0700 Subject: [PATCH 4/6] add some function prototypes to hw/xprint/DiPrint.h as they are exported --- hw/xprint/DiPrint.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/xprint/DiPrint.h b/hw/xprint/DiPrint.h index a26477971..6801ce046 100644 --- a/hw/xprint/DiPrint.h +++ b/hw/xprint/DiPrint.h @@ -41,6 +41,7 @@ copyright holders. #ifdef HAVE_DIX_CONFIG_H #include #endif +#include #ifndef _XpDiPrint_H_ #define _XpDiPrint_H_ 1 @@ -74,6 +75,10 @@ extern void PrinterInitGlobals(void); extern void PrinterInitOutput(ScreenInfo *pScreenInfo, int argc, char **argv); +extern Bool XpClientIsPrintClient(ClientPtr client, FontPathElementPtr fpe); + +extern Bool XpClientIsBitmapClient(ClientPtr client); + extern void _XpVoidNoop(void); extern Bool _XpBoolNoop(void); From 40aafaf154ba8a2cba857689d1481be2d4a610c2 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 21 Jun 2006 14:36:09 -0700 Subject: [PATCH 5/6] fix a number of compiler warnings in os/* --- os/access.c | 3 +++ os/io.c | 3 +++ os/utils.c | 3 +++ os/xdmauth.c | 9 ++++++--- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/os/access.c b/os/access.c index db52aa038..5946b166d 100644 --- a/os/access.c +++ b/os/access.c @@ -67,6 +67,9 @@ SOFTWARE. #include #include +#define XSERV_t +#define TRANS_SERVER +#define TRANS_REOPEN #include #include #include diff --git a/os/io.c b/os/io.c index a9527baa3..e95f0e6a8 100644 --- a/os/io.c +++ b/os/io.c @@ -66,6 +66,9 @@ SOFTWARE. #include #endif #include +#define XSERV_t +#define TRANS_SERVER +#define TRANS_REOPEN #include #include #include diff --git a/os/utils.c b/os/utils.c index f977b837c..e41c3664b 100644 --- a/os/utils.c +++ b/os/utils.c @@ -68,6 +68,9 @@ OR PERFORMANCE OF THIS SOFTWARE. #include #include "misc.h" #include +#define XSERV_t +#define TRANS_SERVER +#define TRANS_REOPEN #include #include "input.h" #include "dixfont.h" diff --git a/os/xdmauth.c b/os/xdmauth.c index 774298133..faa2e3799 100644 --- a/os/xdmauth.c +++ b/os/xdmauth.c @@ -41,6 +41,9 @@ from The Open Group. #include #include +#define XSERV_t +#define TRANS_SERVER +#define TRANS_REOPEN #include #include "os.h" #include "osdep.h" @@ -153,9 +156,9 @@ XdmAuthenticationInit (char *cookie, int cookie_len) XdmcpRegisterAuthentication (XdmAuthenticationName, XdmAuthenticationNameLen, (unsigned char *)&rho, sizeof (rho), - XdmAuthenticationValidator, - XdmAuthenticationGenerator, - XdmAuthenticationAddAuth); + (ValidatorFunc)XdmAuthenticationValidator, + (GeneratorFunc)XdmAuthenticationGenerator, + (AddAuthorFunc)XdmAuthenticationAddAuth); } #endif /* XDMCP */ From 77c947b900faf34f425eef1549d8210c475e093b Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Wed, 21 Jun 2006 16:18:41 -0700 Subject: [PATCH 6/6] Move Xserver internal API for appgroup from Xagsrv.h to appgroup.h (Since all use is inside the xserver module, might as well keep the header in the Xserver module instead of in proto/XExt to allow easier synchronization of updates.) --- Xext/appgroup.c | 1 - Xext/appgroup.h | 85 ++++++++++++++++++++++++++++++++++++++++++++++--- Xext/security.c | 2 +- dix/dispatch.c | 2 +- dix/window.c | 2 +- os/connection.c | 2 +- 6 files changed, 85 insertions(+), 9 deletions(-) diff --git a/Xext/appgroup.c b/Xext/appgroup.c index 61c1aa0d5..9de355c59 100644 --- a/Xext/appgroup.c +++ b/Xext/appgroup.c @@ -43,7 +43,6 @@ from The Open Group. #include "servermd.h" #define _XAG_SERVER_ #include -#include #include "securitysrv.h" #include diff --git a/Xext/appgroup.h b/Xext/appgroup.h index 05c9ef124..39087fe8e 100644 --- a/Xext/appgroup.h +++ b/Xext/appgroup.h @@ -1,10 +1,87 @@ -/* $XFree86$ */ +/* +Copyright 1996, 1998 The Open Group -void XagClientStateChange( +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall +not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization +from The Open Group. +*/ + +#ifndef _APPGROUP_SRV_H_ +#define _APPGROUP_SRV_H_ + +#include + +_XFUNCPROTOBEGIN + +extern void XagConnectionInfo( + ClientPtr /* client */, + xConnSetupPrefix** /* conn_prefix */, + char** /* conn_info */, + int* /* num_screens */ +); + +extern VisualID XagRootVisual( + ClientPtr /* client */ +); + +extern Colormap XagDefaultColormap( + ClientPtr /* client */ +); + +extern ClientPtr XagLeader( + ClientPtr /* client */ +); + +extern void XagCallClientStateChange( + ClientPtr /* client */ +); + +extern Bool XagIsControlledRoot ( + ClientPtr /* client */, + WindowPtr /* pParent */ +); + +extern XID XagId ( + ClientPtr /* client */ +); + +extern void XagGetDeltaInfo ( + ClientPtr /* client */, + CARD32* /* buf */ +); + +extern void XagClientStateChange( CallbackListPtr* pcbl, pointer nulldata, pointer calldata); -int ProcXagCreate ( + +extern int ProcXagCreate ( register ClientPtr client); -int ProcXagDestroy( + +extern int ProcXagDestroy( register ClientPtr client); + +_XFUNCPROTOEND + +#endif /* _APPGROUP_SRV_H_ */ + + + diff --git a/Xext/security.c b/Xext/security.c index 31f2b928b..187e80004 100644 --- a/Xext/security.c +++ b/Xext/security.c @@ -44,7 +44,7 @@ in this Software without prior written authorization from The Open Group. #include #include #ifdef XAPPGROUP -#include +#include "appgroup.h" #endif #include /* for file reading operations */ #include /* for XA_STRING */ diff --git a/dix/dispatch.c b/dix/dispatch.c index 4b4eb2bc5..72d49950b 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -111,7 +111,7 @@ int ProcInitialConnection(); #include "securitysrv.h" #endif #ifdef XAPPGROUP -#include +#include "appgroup.h" #endif #ifdef XKB #ifndef XKB_IN_SERVER diff --git a/dix/window.c b/dix/window.c index 2be01df45..1cf14bcf5 100644 --- a/dix/window.c +++ b/dix/window.c @@ -127,7 +127,7 @@ Equipment Corporation. #include "globals.h" #ifdef XAPPGROUP -#include +#include "appgroup.h" #endif #ifdef XCSECURITY #include "securitysrv.h" diff --git a/os/connection.c b/os/connection.c index 697ff4e74..ce765665f 100644 --- a/os/connection.c +++ b/os/connection.c @@ -148,7 +148,7 @@ extern __const__ int _nfiles; #include "opaque.h" #include "dixstruct.h" #ifdef XAPPGROUP -#include +#include "appgroup.h" #endif #ifdef XCSECURITY #include "securitysrv.h"