Update to 1.7.3.
Copied F-12 spec file to here, so the F-12 patch history is maintained.
This commit is contained in:
parent
cdd3d22272
commit
704bf42673
@ -1 +1 @@
|
||||
xorg-server-1.6.99.903.tar.bz2
|
||||
xorg-server-1.7.3.tar.bz2
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
3a2f20ebbeeae5c13f7a78df314b1164 xorg-server-1.6.99.903.tar.bz2
|
||||
4c63b22cad9ed8ae8b86561f0f92c327 xorg-server-1.7.3.tar.bz2
|
||||
|
@ -18,8 +18,8 @@
|
||||
|
||||
Summary: X.Org X11 X server
|
||||
Name: xorg-x11-server
|
||||
Version: 1.6.99.903
|
||||
Release: 2%{dist}
|
||||
Version: 1.7.3
|
||||
Release: 7%{dist}
|
||||
URL: http://www.x.org
|
||||
License: MIT
|
||||
Group: User Interface/X
|
||||
@ -72,6 +72,17 @@ Patch6028: xserver-1.6.99-randr-error-debugging.patch
|
||||
Patch6030: xserver-1.6.99-right-of.patch
|
||||
Patch6033: xserver-1.6.99-default-modes.patch
|
||||
Patch6044: xserver-1.6.99-hush-prerelease-warning.patch
|
||||
Patch6045: xserver-1.7.0-randr-gamma-restore.patch
|
||||
|
||||
Patch6047: xserver-1.7.0-glx-versioning.patch
|
||||
#Patch6048: xserver-1.7.0-exa-fix-mixed.patch
|
||||
Patch6049: xserver-1.7.1-multilib.patch
|
||||
Patch6051: xserver-1.7.1-gamma-kdm-fix.patch
|
||||
Patch6052: xserver-1.7.1-libcrypto.patch
|
||||
Patch6066: xserver-1.7.1-glx14-swrast.patch
|
||||
|
||||
Patch6067: xserver-1.7.3-exa-master.patch
|
||||
Patch6068: xserver-1.7.3-fb-backport.patch
|
||||
|
||||
%define moduledir %{_libdir}/xorg/modules
|
||||
%define drimoduledir %{_libdir}/dri
|
||||
@ -111,7 +122,6 @@ BuildRequires: libXi-devel libXpm-devel libXaw-devel libXfixes-devel
|
||||
# Broken, this is global, should be Xephyr-only
|
||||
BuildRequires: libXv-devel
|
||||
|
||||
# openssl? really?
|
||||
BuildRequires: pixman-devel >= 0.15.14
|
||||
BuildRequires: libpciaccess-devel >= 0.10.6-1 openssl-devel byacc flex
|
||||
BuildRequires: mesa-libGL-devel >= 7.6-0.6
|
||||
@ -315,7 +325,7 @@ git am -p1 %{lua: for i, p in ipairs(patches) do print(p.." ") end}
|
||||
%endif
|
||||
|
||||
%if 0%{?fedora}
|
||||
%define bodhi_flags --with-vendor-web="http://bodhi.fedoraproject.org/"
|
||||
%define bodhi_flags --with-vendor-web="http://bodhi.fedoraproject.org/" --with-vendor-name="Fedora Project"
|
||||
%endif
|
||||
|
||||
# --with-pie ?
|
||||
@ -335,7 +345,7 @@ export CFLAGS="${RPM_OPT_FLAGS} -Wstrict-overflow -rdynamic $CFLAGS"
|
||||
%{dri_flags} %{?bodhi_flags} \
|
||||
${CONFIGURE}
|
||||
|
||||
make %{?_smp_mflags}
|
||||
make V=1 %{?_smp_mflags}
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
@ -358,6 +368,7 @@ install -m 644 %{SOURCE10} $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/xserver
|
||||
%define inst_srcdir %{buildroot}/%{xserver_source_dir}
|
||||
mkdir -p %{inst_srcdir}/{Xext,xkb,GL,hw/{xquartz/bundle,xfree86/common}}
|
||||
cp cpprules.in %{inst_srcdir}
|
||||
cp shave*in %{inst_srcdir}
|
||||
cp {,%{inst_srcdir}/}hw/xquartz/bundle/cpprules.in
|
||||
cp xkb/README.compiled %{inst_srcdir}/xkb
|
||||
cp hw/xfree86/xorgconf.cpp %{inst_srcdir}/hw/xfree86
|
||||
@ -500,8 +511,96 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{xserver_source_dir}
|
||||
|
||||
%changelog
|
||||
* Wed Jan 06 2010 Peter Hutterer <peter.hutterer@redhat.com> 1.6.99.903-2
|
||||
- Require xkeyboard-config, not the obsolete xkbdata.
|
||||
* Tue Jan 05 2010 Peter Hutterer <peter.hutterer@redhat.com> 1.7.3-7
|
||||
- Require xkeyboard-config, not xkbdata. xkbdata has been replaced by
|
||||
xkeyboard-config.
|
||||
|
||||
* Mon Jan 04 2010 Adam Jackson <ajax@redhat.com> 1.7.3-6
|
||||
- Build with V=1 for debugging.
|
||||
|
||||
* Mon Dec 21 2009 Adam Tkac <atkac redhat com> 1.7.3-5
|
||||
- ship shave.in and shave-libtool.in in the -source subpackage
|
||||
|
||||
* Mon Dec 21 2009 Dave Airlie <airlied@redhat.com> 1.7.3-4
|
||||
- Backport FB changes from master.
|
||||
|
||||
* Wed Dec 17 2009 Dave Airlie <airlied@redhat.com> 1.7.3-3
|
||||
- backport EXA fixes from master, should fix xfig crashes X server
|
||||
|
||||
* Mon Dec 14 2009 Adam Jackson <ajax@redhat.com> 1.7.3-2
|
||||
- xserver-1.7.1-sigaction.patch: Drop, exacerbates a race that leads to weird
|
||||
behaviour like spontaneously repeating keys.
|
||||
|
||||
* Tue Dec 08 2009 Peter Hutterer <peter.hutterer@redhat.com> 1.7.3-1
|
||||
- xserver 1.7.3
|
||||
- xserver-1.7.1-stat-sanity.patch: Drop, merged upstream.
|
||||
- xserver-1.7.1-window-pictures.patch: Drop, code it bases on reverted
|
||||
upstream
|
||||
- xserver-1.7.1-window-picture-performance-regression.patch: Drop, code it
|
||||
bases on reverted upstream.
|
||||
|
||||
* Tue Nov 24 2009 Adam Jackson <ajax@redhat.com> 1.7.1-12
|
||||
- xserver-1.7.1-glx14-swrast.patch: Enable GLX 1.4 for software GLX.
|
||||
|
||||
* Tue Nov 24 2009 Adam Jackson <ajax@redhat.com> 1.7.1-11
|
||||
- xserver-1.7.1-window-picture-performance-regression.patch: Paper over a
|
||||
performance regression caused by the window picture fixes.
|
||||
|
||||
* Mon Nov 23 2009 Adam Jackson <ajax@redhat.com> 1.7.1-10
|
||||
- Fix crash message output. (#539401)
|
||||
|
||||
* Fri Nov 20 2009 Peter Hutterer <peter.hutterer@redhat.com> 1.7.1-9
|
||||
- xserver-1.7.1-stat-sanity.patch: stat directories that actually exist
|
||||
(possibly #537737).
|
||||
|
||||
* Mon Nov 16 2009 Adam Jackson <ajax@redhat.com> 1.7.1-8
|
||||
- xserver-1.7.1-libcrypto.patch: Avoid linking against libssl, which is huge
|
||||
and drags in dependent libs we don't care about.
|
||||
- xserver-1.7.1-sigaction.patch: Microoptimization to SIGIO handling.
|
||||
|
||||
* Fri Nov 06 2009 Adam Jackson <ajax@redhat.com>
|
||||
- Fix the previous changelog entry to name the right patch
|
||||
|
||||
* Fri Nov 06 2009 Dave Airlie <airlied@redhat.com> 1.7.1-7
|
||||
- xserver-1.7.1-window-pictures.patch: remove the miClearDrawable (fingers crossed) (#533236)
|
||||
- xserver-1.7.1-gamma-kdm-fix.patch: fix KDM vt gamma (#533217)
|
||||
|
||||
* Wed Nov 04 2009 Adam Jackson <ajax@redhat.com> 1.7.1-6
|
||||
- xserver-1.7.1-multilib.patch: Keep defining _XSERVER64, it's needed in
|
||||
some of the shared client/server headers.
|
||||
|
||||
* Wed Nov 4 2009 Soren Sandmann <ssp@redhat.com> 1.7.1-5
|
||||
- Update xserver-1.7.1-window-pictures.patch. Instead of calling
|
||||
GetImage(), simply call fb* functions rather than the screen
|
||||
hooks. (#524244)
|
||||
|
||||
* Tue Nov 3 2009 Adam Jackson <ajax@redhat.com> 1.7.1-3
|
||||
- xserver-1.7.1-window-pictures.patch: Fix Render from Pictures backed by
|
||||
Windows to not crash in the presence of KMS. (#524244)
|
||||
|
||||
* Thu Oct 29 2009 Adam Jackson <ajax@redhat.com> 1.7.1-2
|
||||
- xserver-1.7.1-multilib.patch: Fix silly multilib issue. (#470885)
|
||||
|
||||
* Mon Oct 26 2009 Adam Jackson <ajax@redhat.com> 1.7.1-1
|
||||
- xserver 1.7.1
|
||||
|
||||
* Sat Oct 24 2009 Ben Skeggs <bskegg@redhat.com> 1.7.0-5
|
||||
- Fix unbalancing of Prepare/FinishAccess in EXA mixed pixmaps (rh#528005)
|
||||
|
||||
* Fri Oct 16 2009 Dave Airlie <airlied@redhat.com> 1.7.0-4
|
||||
- update GLX for 1.4 version reporting
|
||||
|
||||
* Fri Oct 09 2009 Ben Skeggs <bskeggs@redhat.com> 1.7.0-3
|
||||
- xserver-1.7.0-exa-looping-forever-is-evil.patch: Fix rendercheck hang
|
||||
|
||||
* Thu Oct 08 2009 Adam Jackson <ajax@redhat.com> 1.7.0-2
|
||||
- xserver-1.7.0-randr-gamma-restore.patch: Restore CRTC gamma on EnterVT.
|
||||
|
||||
* Mon Oct 05 2009 Dave Airlie <airlied@redhat.com> 1.7.0-1
|
||||
- rebase to 1.7.0 upstream release - were 99% this already
|
||||
|
||||
* Thu Oct 01 2009 Dave Airlie <airlied@redhat.com> 1.6.99.903-2
|
||||
- backport EXA and rotate crash fixes
|
||||
|
||||
* Mon Sep 28 2009 Peter Hutterer <peter.hutterer@redhat.com> 1.6.99.903-1
|
||||
- xserver 1.6.99.903
|
||||
|
233
xserver-1.7.0-glx-versioning.patch
Normal file
233
xserver-1.7.0-glx-versioning.patch
Normal file
@ -0,0 +1,233 @@
|
||||
From 3ef4be8129f78afd5566a9e5d0fb901449dcb771 Mon Sep 17 00:00:00 2001
|
||||
From: Ian Romanick <ian.d.romanick@intel.com>
|
||||
Date: Tue, 29 Sep 2009 16:43:43 -0700
|
||||
Subject: [PATCH] GLX: Enable GLX 1.4 on DRI2
|
||||
|
||||
this squashes 4 commits
|
||||
(cherry picked from commit ad5c0d9efa47476ed5cf75c82265c73919e468b4)
|
||||
(cherry picked from commit cb54cf1b3e8c4109541cfb698542c00f2473e731)
|
||||
(cherry picked from commit 4c6bfa2c09ae2b0cffdf9211a6dfbcaefe0366b5)
|
||||
(cherry picked from commit 9bf2ff4faf730913de3073f346646a8727be41d4)
|
||||
---
|
||||
glx/glxcmds.c | 12 ++++++++----
|
||||
glx/glxdri2.c | 12 ++++++++++++
|
||||
glx/glxext.c | 8 +++++++-
|
||||
glx/glxscreens.c | 15 ++++++++++++---
|
||||
glx/glxscreens.h | 11 +++++++++++
|
||||
glx/glxserver.h | 3 +++
|
||||
glx/indirect_texture_compression.c | 4 ++--
|
||||
include/protocol-versions.h | 2 +-
|
||||
8 files changed, 56 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/glx/glxcmds.c b/glx/glxcmds.c
|
||||
index b1061a8..ba4c123 100644
|
||||
--- a/glx/glxcmds.c
|
||||
+++ b/glx/glxcmds.c
|
||||
@@ -50,7 +50,6 @@
|
||||
#include "indirect_dispatch.h"
|
||||
#include "indirect_table.h"
|
||||
#include "indirect_util.h"
|
||||
-#include "protocol-versions.h"
|
||||
|
||||
static int
|
||||
validGlxScreen(ClientPtr client, int screen, __GLXscreen **pGlxScreen, int *err)
|
||||
@@ -739,8 +738,8 @@ int __glXDisp_QueryVersion(__GLXclientState *cl, GLbyte *pc)
|
||||
** client if it wants to work with older clients; however, in this
|
||||
** implementation the server just returns its version number.
|
||||
*/
|
||||
- reply.majorVersion = SERVER_GLX_MAJOR_VERSION;
|
||||
- reply.minorVersion = SERVER_GLX_MINOR_VERSION;
|
||||
+ reply.majorVersion = glxMajorVersion;
|
||||
+ reply.minorVersion = glxMinorVersion;
|
||||
reply.length = 0;
|
||||
reply.type = X_Reply;
|
||||
reply.sequenceNumber = client->sequence;
|
||||
@@ -2360,6 +2359,7 @@ int __glXDisp_QueryServerString(__GLXclientState *cl, GLbyte *pc)
|
||||
char *buf;
|
||||
__GLXscreen *pGlxScreen;
|
||||
int err;
|
||||
+ char ver_str[16];
|
||||
|
||||
if (!validGlxScreen(client, req->screen, &pGlxScreen, &err))
|
||||
return err;
|
||||
@@ -2369,7 +2369,11 @@ int __glXDisp_QueryServerString(__GLXclientState *cl, GLbyte *pc)
|
||||
ptr = pGlxScreen->GLXvendor;
|
||||
break;
|
||||
case GLX_VERSION:
|
||||
- ptr = pGlxScreen->GLXversion;
|
||||
+ /* Return to the server version rather than the screen version
|
||||
+ * to prevent confusion when they do not match.
|
||||
+ */
|
||||
+ snprintf(ver_str, 16, "%d.%d", glxMajorVersion, glxMinorVersion);
|
||||
+ ptr = ver_str;
|
||||
break;
|
||||
case GLX_EXTENSIONS:
|
||||
ptr = pGlxScreen->GLXextensions;
|
||||
diff --git a/glx/glxdri2.c b/glx/glxdri2.c
|
||||
index ed7fb4c..ed7dc80 100644
|
||||
--- a/glx/glxdri2.c
|
||||
+++ b/glx/glxdri2.c
|
||||
@@ -685,6 +685,18 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||
screen->base.GLXextensions);
|
||||
}
|
||||
|
||||
+ /* We're going to assume (perhaps incorrectly?) that all DRI2-enabled
|
||||
+ * drivers support the required extensions for GLX 1.4. The extensions
|
||||
+ * we're assuming are:
|
||||
+ *
|
||||
+ * - GLX_SGI_make_current_read (1.3)
|
||||
+ * - GLX_SGIX_fbconfig (1.3)
|
||||
+ * - GLX_SGIX_pbuffer (1.3)
|
||||
+ * - GLX_ARB_multisample (1.4)
|
||||
+ */
|
||||
+ screen->base.GLXmajor = 1;
|
||||
+ screen->base.GLXminor = 4;
|
||||
+
|
||||
screen->enterVT = pScrn->EnterVT;
|
||||
pScrn->EnterVT = glxDRIEnterVT;
|
||||
screen->leaveVT = pScrn->LeaveVT;
|
||||
diff --git a/glx/glxext.c b/glx/glxext.c
|
||||
index 19d70d4..9f9c0ed 100644
|
||||
--- a/glx/glxext.c
|
||||
+++ b/glx/glxext.c
|
||||
@@ -360,12 +360,18 @@ void GlxExtensionInit(void)
|
||||
pScreen = screenInfo.screens[i];
|
||||
|
||||
for (p = __glXProviderStack; p != NULL; p = p->next) {
|
||||
- if (p->screenProbe(pScreen) != NULL) {
|
||||
+ __GLXscreen *glxScreen;
|
||||
+
|
||||
+ glxScreen = p->screenProbe(pScreen);
|
||||
+ if (glxScreen != NULL) {
|
||||
+ if (glxScreen->GLXminor < glxMinorVersion)
|
||||
+ glxMinorVersion = glxScreen->GLXminor;
|
||||
LogMessage(X_INFO,
|
||||
"GLX: Initialized %s GL provider for screen %d\n",
|
||||
p->name, i);
|
||||
break;
|
||||
}
|
||||
+
|
||||
}
|
||||
|
||||
if (!p)
|
||||
diff --git a/glx/glxscreens.c b/glx/glxscreens.c
|
||||
index 7d29d31..674e2c6 100644
|
||||
--- a/glx/glxscreens.c
|
||||
+++ b/glx/glxscreens.c
|
||||
@@ -42,6 +42,7 @@
|
||||
#include "glxserver.h"
|
||||
#include "glxutil.h"
|
||||
#include "glxext.h"
|
||||
+#include "protocol-versions.h"
|
||||
|
||||
static int glxScreenPrivateKeyIndex;
|
||||
static DevPrivateKey glxScreenPrivateKey = &glxScreenPrivateKeyIndex;
|
||||
@@ -162,7 +163,8 @@ static const char GLServerExtensions[] =
|
||||
** supported across all screens in a multi-screen system.
|
||||
*/
|
||||
static char GLXServerVendorName[] = "SGI";
|
||||
-static char GLXServerVersion[] = "1.2";
|
||||
+unsigned glxMajorVersion = SERVER_GLX_MAJOR_VERSION;
|
||||
+unsigned glxMinorVersion = SERVER_GLX_MINOR_VERSION;
|
||||
static char GLXServerExtensions[] =
|
||||
"GLX_ARB_multisample "
|
||||
"GLX_EXT_visual_info "
|
||||
@@ -378,9 +380,17 @@ void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr pScreen)
|
||||
pGlxScreen->pScreen = pScreen;
|
||||
pGlxScreen->GLextensions = xstrdup(GLServerExtensions);
|
||||
pGlxScreen->GLXvendor = xstrdup(GLXServerVendorName);
|
||||
- pGlxScreen->GLXversion = xstrdup(GLXServerVersion);
|
||||
pGlxScreen->GLXextensions = xstrdup(GLXServerExtensions);
|
||||
|
||||
+ /* All GLX providers must support all of the functionality required for at
|
||||
+ * least GLX 1.2. If the provider supports a higher version, the GLXminor
|
||||
+ * version can be changed in the provider's screen-probe routine. For
|
||||
+ * most providers, the screen-probe routine is the caller of this
|
||||
+ * function.
|
||||
+ */
|
||||
+ pGlxScreen->GLXmajor = 1;
|
||||
+ pGlxScreen->GLXminor = 2;
|
||||
+
|
||||
pGlxScreen->CloseScreen = pScreen->CloseScreen;
|
||||
pScreen->CloseScreen = glxCloseScreen;
|
||||
pGlxScreen->DestroyWindow = pScreen->DestroyWindow;
|
||||
@@ -454,7 +464,6 @@ void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr pScreen)
|
||||
void __glXScreenDestroy(__GLXscreen *screen)
|
||||
{
|
||||
xfree(screen->GLXvendor);
|
||||
- xfree(screen->GLXversion);
|
||||
xfree(screen->GLXextensions);
|
||||
xfree(screen->GLextensions);
|
||||
}
|
||||
diff --git a/glx/glxscreens.h b/glx/glxscreens.h
|
||||
index 3c1bdd4..bff4363 100644
|
||||
--- a/glx/glxscreens.h
|
||||
+++ b/glx/glxscreens.h
|
||||
@@ -161,6 +161,17 @@ struct __GLXscreen {
|
||||
char *GLXversion;
|
||||
char *GLXextensions;
|
||||
|
||||
+ /**
|
||||
+ * \name GLX version supported by this screen.
|
||||
+ *
|
||||
+ * Since the GLX version advertised by the server is for the whole server,
|
||||
+ * the GLX protocol code uses the minimum version supported on all screens.
|
||||
+ */
|
||||
+ /*@{*/
|
||||
+ unsigned GLXmajor;
|
||||
+ unsigned GLXminor;
|
||||
+ /*@}*/
|
||||
+
|
||||
Bool (*CloseScreen)(int index, ScreenPtr pScreen);
|
||||
Bool (*DestroyWindow)(WindowPtr pWindow);
|
||||
};
|
||||
diff --git a/glx/glxserver.h b/glx/glxserver.h
|
||||
index 4aa8c2e..80f1b28 100644
|
||||
--- a/glx/glxserver.h
|
||||
+++ b/glx/glxserver.h
|
||||
@@ -248,4 +248,7 @@ extern int __glXImageSize(GLenum format, GLenum type,
|
||||
GLint imageHeight, GLint rowLength, GLint skipImages, GLint skipRows,
|
||||
GLint alignment);
|
||||
|
||||
+extern unsigned glxMajorVersion;
|
||||
+extern unsigned glxMinorVersion;
|
||||
+
|
||||
#endif /* !__GLX_server_h__ */
|
||||
diff --git a/glx/indirect_texture_compression.c b/glx/indirect_texture_compression.c
|
||||
index 25c6eb3..5f44d7b 100644
|
||||
--- a/glx/indirect_texture_compression.c
|
||||
+++ b/glx/indirect_texture_compression.c
|
||||
@@ -52,7 +52,7 @@ int __glXDisp_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyte *p
|
||||
const GLenum target = *(GLenum *)(pc + 0);
|
||||
const GLint level = *(GLint *)(pc + 4);
|
||||
GLint compsize = 0;
|
||||
- char *answer, answerBuffer[200];
|
||||
+ char *answer = NULL, answerBuffer[200];
|
||||
|
||||
CALL_GetTexLevelParameteriv(GET_DISPATCH(), (target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &compsize));
|
||||
|
||||
@@ -92,7 +92,7 @@ int __glXDispSwap_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyt
|
||||
const GLenum target = (GLenum) bswap_32( *(int *)(pc + 0) );
|
||||
const GLint level = (GLint ) bswap_32( *(int *)(pc + 4) );
|
||||
GLint compsize = 0;
|
||||
- char *answer, answerBuffer[200];
|
||||
+ char *answer = NULL, answerBuffer[200];
|
||||
|
||||
CALL_GetTexLevelParameteriv(GET_DISPATCH(), (target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &compsize));
|
||||
|
||||
diff --git a/include/protocol-versions.h b/include/protocol-versions.h
|
||||
index da9770c..d688c66 100644
|
||||
--- a/include/protocol-versions.h
|
||||
+++ b/include/protocol-versions.h
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
/* GLX */
|
||||
#define SERVER_GLX_MAJOR_VERSION 1
|
||||
-#define SERVER_GLX_MINOR_VERSION 2
|
||||
+#define SERVER_GLX_MINOR_VERSION 4
|
||||
|
||||
/* Xinerama */
|
||||
#define SERVER_PANORAMIX_MAJOR_VERSION 1
|
||||
--
|
||||
1.6.5.rc2
|
||||
|
65
xserver-1.7.0-randr-gamma-restore.patch
Normal file
65
xserver-1.7.0-randr-gamma-restore.patch
Normal file
@ -0,0 +1,65 @@
|
||||
From 18d2bd8cb513a0436739916620532247f13dbf03 Mon Sep 17 00:00:00 2001
|
||||
From: Fedora X Ninjas <x@fedoraproject.org>
|
||||
Date: Thu, 8 Oct 2009 15:25:24 -0400
|
||||
Subject: [PATCH] randr gamma reload hack
|
||||
|
||||
---
|
||||
hw/xfree86/loader/sdksyms.c | 4 ++++
|
||||
hw/xfree86/modes/xf86RandR12.c | 6 ++++++
|
||||
2 files changed, 10 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/hw/xfree86/loader/sdksyms.c b/hw/xfree86/loader/sdksyms.c
|
||||
index 12af6b7..656d07b 100644
|
||||
--- a/hw/xfree86/loader/sdksyms.c
|
||||
+++ b/hw/xfree86/loader/sdksyms.c
|
||||
@@ -1056,6 +1056,8 @@ _X_HIDDEN void *xorg_symbols[] = {
|
||||
(void *) &noXFree86VidModeExtension,
|
||||
(void *) &noXFixesExtension,
|
||||
(void *) &noPanoramiXExtension,
|
||||
+ (void *) &noSELinuxExtension,
|
||||
+ (void *) &selinuxEnforcingState,
|
||||
(void *) &noXvExtension,
|
||||
(void *) &noDRI2Extension,
|
||||
(void *) &defaultTextFont,
|
||||
@@ -1069,6 +1071,7 @@ _X_HIDDEN void *xorg_symbols[] = {
|
||||
(void *) &defaultScreenSaverBlanking,
|
||||
(void *) &defaultScreenSaverAllowExposures,
|
||||
(void *) &display,
|
||||
+ (void *) &displayfd,
|
||||
(void *) &defaultBackingStore,
|
||||
(void *) &disableBackingStore,
|
||||
(void *) &enableBackingStore,
|
||||
@@ -1078,6 +1081,7 @@ _X_HIDDEN void *xorg_symbols[] = {
|
||||
(void *) &maxBigRequestSize,
|
||||
(void *) &party_like_its_1989,
|
||||
(void *) &whiteRoot,
|
||||
+ (void *) &bgNoneRoot,
|
||||
(void *) &CoreDump,
|
||||
(void *) &DontPropagateMasks,
|
||||
(void *) &screenIsSaved,
|
||||
diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
|
||||
index 6ea9d26..41bac11 100644
|
||||
--- a/hw/xfree86/modes/xf86RandR12.c
|
||||
+++ b/hw/xfree86/modes/xf86RandR12.c
|
||||
@@ -1746,12 +1746,18 @@ xf86RandR12EnterVT (int screen_index, int flags)
|
||||
{
|
||||
ScreenPtr pScreen = screenInfo.screens[screen_index];
|
||||
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
|
||||
+ rrScrPrivPtr rp = rrGetScrPriv(pScreen);
|
||||
|
||||
if (randrp->orig_EnterVT) {
|
||||
if (!randrp->orig_EnterVT (screen_index, flags))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+ /* reload gamma */
|
||||
+ int i;
|
||||
+ for (i = 0; i < rp->numCrtcs; i++)
|
||||
+ xf86RandR12CrtcSetGamma(pScreen, rp->crtcs[i]);
|
||||
+
|
||||
return RRGetInfo (pScreen, TRUE); /* force a re-probe of outputs and notify clients about changes */
|
||||
}
|
||||
|
||||
--
|
||||
1.6.5.rc2
|
||||
|
34
xserver-1.7.1-gamma-kdm-fix.patch
Normal file
34
xserver-1.7.1-gamma-kdm-fix.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From acc64ce5be7383c09e88a23aab06ebc2403f2ca3 Mon Sep 17 00:00:00 2001
|
||||
From: Bill Nottingham <notting@redhat.com>
|
||||
Date: Fri, 6 Nov 2009 10:32:27 +1000
|
||||
Subject: [PATCH] fix KDM gamma issue on vt switch
|
||||
|
||||
---
|
||||
hw/xfree86/modes/xf86RandR12.c | 4 ++++
|
||||
1 files changed, 4 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
|
||||
index 6ea9d26..ece12b9 100644
|
||||
--- a/hw/xfree86/modes/xf86RandR12.c
|
||||
+++ b/hw/xfree86/modes/xf86RandR12.c
|
||||
@@ -1761,6 +1761,7 @@ xf86RandR12Init12 (ScreenPtr pScreen)
|
||||
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
|
||||
rrScrPrivPtr rp = rrGetScrPriv(pScreen);
|
||||
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
|
||||
+ int i;
|
||||
|
||||
rp->rrGetInfo = xf86RandR12GetInfo12;
|
||||
rp->rrScreenSetSize = xf86RandR12ScreenSetSize;
|
||||
@@ -1790,6 +1791,9 @@ xf86RandR12Init12 (ScreenPtr pScreen)
|
||||
*/
|
||||
if (!xf86RandR12SetInfo12 (pScreen))
|
||||
return FALSE;
|
||||
+ for (i = 0; i < rp->numCrtcs; i++) {
|
||||
+ xf86RandR12CrtcGetGamma(pScreen, rp->crtcs[i]);
|
||||
+ }
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
--
|
||||
1.6.5.1
|
||||
|
26
xserver-1.7.1-glx14-swrast.patch
Normal file
26
xserver-1.7.1-glx14-swrast.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From 25a0107768c9f25e8edc5e423ca8b1d0813f2d04 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Tue, 24 Nov 2009 13:38:46 -0500
|
||||
Subject: [PATCH] Enable GLX 1.4 for swrast
|
||||
|
||||
---
|
||||
glx/glxdriswrast.c | 3 +++
|
||||
1 files changed, 3 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c
|
||||
index 44f658f..20f9f90 100644
|
||||
--- a/glx/glxdriswrast.c
|
||||
+++ b/glx/glxdriswrast.c
|
||||
@@ -510,6 +510,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||
|
||||
__glXScreenInit(&screen->base, pScreen);
|
||||
|
||||
+ screen->base.GLXmajor = 1;
|
||||
+ screen->base.GLXminor = 4;
|
||||
+
|
||||
LogMessage(X_INFO,
|
||||
"AIGLX: Loaded and initialized %s\n", filename);
|
||||
|
||||
--
|
||||
1.6.5.2
|
||||
|
35
xserver-1.7.1-libcrypto.patch
Normal file
35
xserver-1.7.1-libcrypto.patch
Normal file
@ -0,0 +1,35 @@
|
||||
From 8875112f5c57ec5d575e717c5638fbc919145efb Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Mon, 16 Nov 2009 18:01:26 -0500
|
||||
Subject: [PATCH] configure: Only link against libcrypto
|
||||
|
||||
openssl.pc will link you against libssl, which we don't need, and which
|
||||
brings in another seven libraries we also don't need. This is still
|
||||
bogus, we're really only trying to get a SHA1 routine, we could link it
|
||||
statically and be even better off.
|
||||
---
|
||||
configure.ac | 6 ------
|
||||
1 files changed, 0 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index f69f97e..254d33d 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -1297,14 +1297,8 @@ if test "x$SHA1_LIB" = "x" ; then
|
||||
fi
|
||||
|
||||
if test "x$SHA1_LIB" = "x" ; then
|
||||
- PKG_CHECK_EXISTS([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
|
||||
- [HAVE_OPENSSL_PKC=no])
|
||||
- if test "x$HAVE_OPENSSL_PKC" = xyes; then
|
||||
- REQUIRED_LIBS="$REQUIRED_LIBS openssl"
|
||||
- else
|
||||
AC_CHECK_LIB([crypto], [SHA1_Init], [SHA1_LIB="-lcrypto"],
|
||||
[AC_MSG_ERROR([OpenSSL must be installed in order to build the X server.])])
|
||||
- fi
|
||||
fi
|
||||
|
||||
PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
|
||||
--
|
||||
1.6.5.2
|
||||
|
55
xserver-1.7.1-multilib.patch
Normal file
55
xserver-1.7.1-multilib.patch
Normal file
@ -0,0 +1,55 @@
|
||||
From 6d9585ba6a5784328de479c6b648d7b7d6cec64c Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Thu, 29 Oct 2009 19:04:10 -0400
|
||||
Subject: [PATCH] multilib fix for -devel subpackage
|
||||
|
||||
---
|
||||
include/colormapst.h | 4 ++--
|
||||
include/xorg-server.h.in | 7 ++++---
|
||||
2 files changed, 6 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/include/colormapst.h b/include/colormapst.h
|
||||
index f1fc8eb..274cd65 100644
|
||||
--- a/include/colormapst.h
|
||||
+++ b/include/colormapst.h
|
||||
@@ -103,12 +103,12 @@ typedef struct _ColormapRec
|
||||
{
|
||||
VisualPtr pVisual;
|
||||
short class; /* PseudoColor or DirectColor */
|
||||
-#if defined(_XSERVER64)
|
||||
+#ifdef __LP64__
|
||||
short pad0;
|
||||
XID pad1;
|
||||
#endif
|
||||
XID mid; /* client's name for colormap */
|
||||
-#if defined(_XSERVER64) && (X_BYTE_ORDER == X_LITTLE_ENDIAN)
|
||||
+#if defined(__LP64__) && (X_BYTE_ORDER == X_LITTLE_ENDIAN)
|
||||
XID pad2;
|
||||
#endif
|
||||
ScreenPtr pScreen; /* screen map is associated with */
|
||||
diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in
|
||||
index 76cab16..081b8f3 100644
|
||||
--- a/include/xorg-server.h.in
|
||||
+++ b/include/xorg-server.h.in
|
||||
@@ -157,9 +157,6 @@
|
||||
/* Name of X server */
|
||||
#undef __XSERVERNAME__
|
||||
|
||||
-/* Define to 1 if unsigned long is 64 bits. */
|
||||
-#undef _XSERVER64
|
||||
-
|
||||
/* Building vgahw module */
|
||||
#undef WITH_VGAHW
|
||||
|
||||
@@ -187,4 +184,8 @@
|
||||
/* X Access Control Extension */
|
||||
#undef XACE
|
||||
|
||||
+#ifdef __LP64__
|
||||
+#define _XSERVER64 1
|
||||
+#endif
|
||||
+
|
||||
#endif /* _XORG_SERVER_H_ */
|
||||
--
|
||||
1.6.5.2
|
||||
|
2009
xserver-1.7.3-exa-master.patch
Normal file
2009
xserver-1.7.3-exa-master.patch
Normal file
File diff suppressed because it is too large
Load Diff
339
xserver-1.7.3-fb-backport.patch
Normal file
339
xserver-1.7.3-fb-backport.patch
Normal file
@ -0,0 +1,339 @@
|
||||
From 85577ae6bad8fd8673b9abc81e7f2531ae64fcec Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@redhat.com>
|
||||
Date: Mon, 21 Dec 2009 11:47:19 +1000
|
||||
Subject: [PATCH] fb: backport fb changes from master for src window operations.
|
||||
|
||||
This rolls up the following commits and also keeps the image_from_pict
|
||||
API compatiblity. It introduces a new image_from_pict_18 API that is
|
||||
used by the server leaving the old API alone.
|
||||
|
||||
I've rolled this up as I don't want to introduce ABI breaks in bisection.
|
||||
|
||||
a72c65e9176c51de95db2fdbf4c5d946a4911695 fb: Adjust transform or composite coordinates for pixman operations
|
||||
bd567061c8b84b268d9bbb01bc4d8981feefb862 Split fbGetDrawable into fbGetDrawablePixmap and fbGetPixmapBitsData
|
||||
61335052972a78d67c0ba74f902273b34c63a198 Revert "Fix clipping when windows are used as sources"
|
||||
071b3c1810d9f2602173acc8578caac20e0b771e Revert "Use IncludeInferiors when copying windows before compositing."
|
||||
8e640d6b131d2865a9725d8997023865b0ef3d69 Revert "Reserve space for two GC values in copy_drawable()."
|
||||
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
fb/fb.h | 76 ++++++++++++++++++++++++++++---------------------
|
||||
fb/fbpict.c | 85 +++++++++++++++++++++++++++++++++++++++----------------
|
||||
fb/fbtrap.c | 6 ++-
|
||||
fb/wfbrename.h | 1 +
|
||||
4 files changed, 108 insertions(+), 60 deletions(-)
|
||||
|
||||
diff --git a/fb/fb.h b/fb/fb.h
|
||||
index 37de71e..8b2839a 100644
|
||||
--- a/fb/fb.h
|
||||
+++ b/fb/fb.h
|
||||
@@ -700,38 +700,41 @@ typedef struct {
|
||||
#define __fbPixOffXPix(pPix) (__fbPixDrawableX(pPix))
|
||||
#define __fbPixOffYPix(pPix) (__fbPixDrawableY(pPix))
|
||||
|
||||
-#define fbGetDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
|
||||
- PixmapPtr _pPix; \
|
||||
- if ((pDrawable)->type != DRAWABLE_PIXMAP) { \
|
||||
- _pPix = fbGetWindowPixmap(pDrawable); \
|
||||
- (xoff) = __fbPixOffXWin(_pPix); \
|
||||
- (yoff) = __fbPixOffYWin(_pPix); \
|
||||
- } else { \
|
||||
- _pPix = (PixmapPtr) (pDrawable); \
|
||||
- (xoff) = __fbPixOffXPix(_pPix); \
|
||||
- (yoff) = __fbPixOffYPix(_pPix); \
|
||||
- } \
|
||||
- fbPrepareAccess(pDrawable); \
|
||||
- (pointer) = (FbBits *) _pPix->devPrivate.ptr; \
|
||||
- (stride) = ((int) _pPix->devKind) / sizeof (FbBits); (void)(stride); \
|
||||
- (bpp) = _pPix->drawable.bitsPerPixel; (void)(bpp); \
|
||||
+#define fbGetDrawablePixmap(pDrawable, pixmap, xoff, yoff) { \
|
||||
+ if ((pDrawable)->type != DRAWABLE_PIXMAP) { \
|
||||
+ (pixmap) = fbGetWindowPixmap(pDrawable); \
|
||||
+ (xoff) = __fbPixOffXWin(pixmap); \
|
||||
+ (yoff) = __fbPixOffYWin(pixmap); \
|
||||
+ } else { \
|
||||
+ (pixmap) = (PixmapPtr) (pDrawable); \
|
||||
+ (xoff) = __fbPixOffXPix(pixmap); \
|
||||
+ (yoff) = __fbPixOffYPix(pixmap); \
|
||||
+ } \
|
||||
+ fbPrepareAccess(pDrawable); \
|
||||
}
|
||||
|
||||
-#define fbGetStipDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
|
||||
- PixmapPtr _pPix; \
|
||||
- if ((pDrawable)->type != DRAWABLE_PIXMAP) { \
|
||||
- _pPix = fbGetWindowPixmap(pDrawable); \
|
||||
- (xoff) = __fbPixOffXWin(_pPix); \
|
||||
- (yoff) = __fbPixOffYWin(_pPix); \
|
||||
- } else { \
|
||||
- _pPix = (PixmapPtr) (pDrawable); \
|
||||
- (xoff) = __fbPixOffXPix(_pPix); \
|
||||
- (yoff) = __fbPixOffYPix(_pPix); \
|
||||
- } \
|
||||
- fbPrepareAccess(pDrawable); \
|
||||
- (pointer) = (FbStip *) _pPix->devPrivate.ptr; \
|
||||
- (stride) = ((int) _pPix->devKind) / sizeof (FbStip); (void)(stride); \
|
||||
- (bpp) = _pPix->drawable.bitsPerPixel; (void)(bpp); \
|
||||
+#define fbGetPixmapBitsData(pixmap, pointer, stride, bpp) { \
|
||||
+ (pointer) = (FbBits *) (pixmap)->devPrivate.ptr; \
|
||||
+ (stride) = ((int) (pixmap)->devKind) / sizeof (FbBits); (void)(stride); \
|
||||
+ (bpp) = (pixmap)->drawable.bitsPerPixel; (void)(bpp); \
|
||||
+}
|
||||
+
|
||||
+#define fbGetPixmapStipData(pixmap, pointer, stride, bpp) { \
|
||||
+ (pointer) = (FbStip *) (pixmap)->devPrivate.ptr; \
|
||||
+ (stride) = ((int) (pixmap)->devKind) / sizeof (FbStip); (void)(stride); \
|
||||
+ (bpp) = (pixmap)->drawable.bitsPerPixel; (void)(bpp); \
|
||||
+}
|
||||
+
|
||||
+#define fbGetDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
|
||||
+ PixmapPtr _pPix; \
|
||||
+ fbGetDrawablePixmap(pDrawable, _pPix, xoff, yoff); \
|
||||
+ fbGetPixmapBitsData(_pPix, pointer, stride, bpp); \
|
||||
+}
|
||||
+
|
||||
+#define fbGetStipDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
|
||||
+ PixmapPtr _pPix; \
|
||||
+ fbGetDrawablePixmap(pDrawable, _pPix, xoff, yoff); \
|
||||
+ fbGetPixmapStipData(_pPix, pointer, stride, bpp); \
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2079,9 +2082,16 @@ fbFillRegionSolid (DrawablePtr pDrawable,
|
||||
FbBits xor);
|
||||
|
||||
extern _X_EXPORT pixman_image_t *
|
||||
-image_from_pict (PicturePtr pict,
|
||||
- Bool has_clip,
|
||||
- Bool is_src);
|
||||
+image_from_pict (PicturePtr pict,
|
||||
+ Bool has_clip,
|
||||
+ Bool is_src);
|
||||
+
|
||||
+extern _X_EXPORT pixman_image_t *
|
||||
+image_from_pict_18 (PicturePtr pict,
|
||||
+ Bool has_clip,
|
||||
+ int *xoff,
|
||||
+ int *yoff);
|
||||
+
|
||||
extern _X_EXPORT void free_pixman_pict (PicturePtr, pixman_image_t *);
|
||||
|
||||
#endif /* _FB_H_ */
|
||||
diff --git a/fb/fbpict.c b/fb/fbpict.c
|
||||
index 8fdaa58..f9f4343 100644
|
||||
--- a/fb/fbpict.c
|
||||
+++ b/fb/fbpict.c
|
||||
@@ -158,19 +158,24 @@ fbComposite (CARD8 op,
|
||||
CARD16 height)
|
||||
{
|
||||
pixman_image_t *src, *mask, *dest;
|
||||
+ int src_xoff, src_yoff;
|
||||
+ int msk_xoff, msk_yoff;
|
||||
+ int dst_xoff, dst_yoff;
|
||||
|
||||
- miCompositeSourceValidate (pSrc, xSrc, ySrc, width, height);
|
||||
+ miCompositeSourceValidate (pSrc, xSrc - xDst, ySrc - yDst, width, height);
|
||||
if (pMask)
|
||||
- miCompositeSourceValidate (pMask, xMask, yMask, width, height);
|
||||
+ miCompositeSourceValidate (pMask, xMask - xDst, yMask - yDst, width, height);
|
||||
|
||||
- src = image_from_pict (pSrc, TRUE, TRUE);
|
||||
- mask = image_from_pict (pMask, TRUE, TRUE);
|
||||
- dest = image_from_pict (pDst, TRUE, FALSE);
|
||||
+ src = image_from_pict_18 (pSrc, FALSE, &src_xoff, &src_yoff);
|
||||
+ mask = image_from_pict_18 (pMask, FALSE, &msk_xoff, &msk_yoff);
|
||||
+ dest = image_from_pict_18 (pDst, TRUE, &dst_xoff, &dst_yoff);
|
||||
|
||||
if (src && dest && !(pMask && !mask))
|
||||
{
|
||||
pixman_image_composite (op, src, mask, dest,
|
||||
- xSrc, ySrc, xMask, yMask, xDst, yDst,
|
||||
+ xSrc + src_xoff, ySrc + src_yoff,
|
||||
+ xMask + msk_xoff, yMask + msk_yoff,
|
||||
+ xDst + dst_xoff, yDst + dst_yoff,
|
||||
width, height);
|
||||
}
|
||||
|
||||
@@ -270,22 +275,22 @@ create_conical_gradient_image (PictGradient *gradient)
|
||||
|
||||
static pixman_image_t *
|
||||
create_bits_picture (PicturePtr pict,
|
||||
- Bool has_clip)
|
||||
+ Bool has_clip,
|
||||
+ int *xoff,
|
||||
+ int *yoff)
|
||||
{
|
||||
+ PixmapPtr pixmap;
|
||||
FbBits *bits;
|
||||
FbStride stride;
|
||||
- int bpp, xoff, yoff;
|
||||
+ int bpp;
|
||||
pixman_image_t *image;
|
||||
|
||||
- fbGetDrawable (pict->pDrawable, bits, stride, bpp, xoff, yoff);
|
||||
-
|
||||
- bits = (FbBits*)((CARD8*)bits +
|
||||
- (pict->pDrawable->y + yoff) * stride * sizeof(FbBits) +
|
||||
- (pict->pDrawable->x + xoff) * (bpp / 8));
|
||||
+ fbGetDrawablePixmap (pict->pDrawable, pixmap, *xoff, *yoff);
|
||||
+ fbGetPixmapBitsData(pixmap, bits, stride, bpp);
|
||||
|
||||
image = pixman_image_create_bits (
|
||||
pict->format,
|
||||
- pict->pDrawable->width, pict->pDrawable->height,
|
||||
+ pixmap->drawable.width, pixmap->drawable.height,
|
||||
(uint32_t *)bits, stride * sizeof (FbStride));
|
||||
|
||||
|
||||
@@ -311,30 +316,52 @@ create_bits_picture (PicturePtr pict,
|
||||
if (pict->clientClipType != CT_NONE)
|
||||
pixman_image_set_has_client_clip (image, TRUE);
|
||||
|
||||
- pixman_region_translate (pict->pCompositeClip, - pict->pDrawable->x, - pict->pDrawable->y);
|
||||
+ if (*xoff || *yoff)
|
||||
+ pixman_region_translate (pict->pCompositeClip, *xoff, *yoff);
|
||||
|
||||
pixman_image_set_clip_region (image, pict->pCompositeClip);
|
||||
|
||||
- pixman_region_translate (pict->pCompositeClip, pict->pDrawable->x, pict->pDrawable->y);
|
||||
+ if (*xoff || *yoff)
|
||||
+ pixman_region_translate (pict->pCompositeClip, -*xoff, -*yoff);
|
||||
}
|
||||
|
||||
/* Indexed table */
|
||||
if (pict->pFormat->index.devPrivate)
|
||||
pixman_image_set_indexed (image, pict->pFormat->index.devPrivate);
|
||||
|
||||
+ /* Add in drawable origin to position within the image */
|
||||
+ *xoff += pict->pDrawable->x;
|
||||
+ *yoff += pict->pDrawable->y;
|
||||
+
|
||||
return image;
|
||||
}
|
||||
|
||||
static void
|
||||
-set_image_properties (pixman_image_t *image, PicturePtr pict)
|
||||
+set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
|
||||
{
|
||||
pixman_repeat_t repeat;
|
||||
pixman_filter_t filter;
|
||||
|
||||
if (pict->transform)
|
||||
{
|
||||
- pixman_image_set_transform (
|
||||
- image, (pixman_transform_t *)pict->transform);
|
||||
+ /* For source images, adjust the transform to account
|
||||
+ * for the drawable offset within the pixman image,
|
||||
+ * then set the offset to 0 as it will be used
|
||||
+ * to compute positions within the transformed image.
|
||||
+ */
|
||||
+ if (!has_clip) {
|
||||
+ struct pixman_transform adjusted;
|
||||
+
|
||||
+ adjusted = *pict->transform;
|
||||
+ pixman_transform_translate(&adjusted,
|
||||
+ NULL,
|
||||
+ pixman_int_to_fixed(*xoff),
|
||||
+ pixman_int_to_fixed(*yoff));
|
||||
+ pixman_image_set_transform (image, &adjusted);
|
||||
+ *xoff = 0;
|
||||
+ *yoff = 0;
|
||||
+ } else
|
||||
+ pixman_image_set_transform (image, pict->transform);
|
||||
}
|
||||
|
||||
switch (pict->repeatType)
|
||||
@@ -361,7 +388,8 @@ set_image_properties (pixman_image_t *image, PicturePtr pict)
|
||||
|
||||
if (pict->alphaMap)
|
||||
{
|
||||
- pixman_image_t *alpha_map = image_from_pict (pict->alphaMap, TRUE, TRUE);
|
||||
+ int alpha_xoff, alpha_yoff;
|
||||
+ pixman_image_t *alpha_map = image_from_pict_18 (pict->alphaMap, FALSE, &alpha_xoff, &alpha_yoff);
|
||||
|
||||
pixman_image_set_alpha_map (
|
||||
image, alpha_map, pict->alphaOrigin.x, pict->alphaOrigin.y);
|
||||
@@ -393,10 +421,9 @@ set_image_properties (pixman_image_t *image, PicturePtr pict)
|
||||
pixman_image_set_source_clipping (image, TRUE);
|
||||
}
|
||||
|
||||
+
|
||||
pixman_image_t *
|
||||
-image_from_pict (PicturePtr pict,
|
||||
- Bool has_clip,
|
||||
- Bool is_src)
|
||||
+image_from_pict_18 (PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
|
||||
{
|
||||
pixman_image_t *image = NULL;
|
||||
|
||||
@@ -405,7 +432,7 @@ image_from_pict (PicturePtr pict,
|
||||
|
||||
if (pict->pDrawable)
|
||||
{
|
||||
- image = create_bits_picture (pict, has_clip);
|
||||
+ image = create_bits_picture (pict, has_clip, xoff, yoff);
|
||||
}
|
||||
else if (pict->pSourcePict)
|
||||
{
|
||||
@@ -429,11 +456,18 @@ image_from_pict (PicturePtr pict,
|
||||
}
|
||||
|
||||
if (image)
|
||||
- set_image_properties (image, pict);
|
||||
+ set_image_properties (image, pict, has_clip, xoff, yoff);
|
||||
|
||||
return image;
|
||||
}
|
||||
|
||||
+pixman_image_t *
|
||||
+image_from_pict (PicturePtr pict, Bool has_clip, Bool is_src)
|
||||
+{
|
||||
+ int xoff = 0, yoff = 0;
|
||||
+ return image_from_pict_18(pict, has_clip, &xoff, &yoff);
|
||||
+}
|
||||
+
|
||||
void
|
||||
free_pixman_pict (PicturePtr pict, pixman_image_t *image)
|
||||
{
|
||||
@@ -463,3 +497,4 @@ fbPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats)
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
+
|
||||
diff --git a/fb/fbtrap.c b/fb/fbtrap.c
|
||||
index b1e1eff..5b5aeae 100644
|
||||
--- a/fb/fbtrap.c
|
||||
+++ b/fb/fbtrap.c
|
||||
@@ -40,7 +40,8 @@ fbAddTraps (PicturePtr pPicture,
|
||||
int ntrap,
|
||||
xTrap *traps)
|
||||
{
|
||||
- pixman_image_t *image = image_from_pict (pPicture, FALSE, FALSE);
|
||||
+ int image_xoff, image_yoff;
|
||||
+ pixman_image_t *image = image_from_pict_18 (pPicture, FALSE, &image_xoff, &image_yoff);
|
||||
|
||||
if (!image)
|
||||
return;
|
||||
@@ -56,7 +57,8 @@ fbRasterizeTrapezoid (PicturePtr pPicture,
|
||||
int x_off,
|
||||
int y_off)
|
||||
{
|
||||
- pixman_image_t *image = image_from_pict (pPicture, FALSE, FALSE);
|
||||
+ int mask_xoff, mask_yoff;
|
||||
+ pixman_image_t *image = image_from_pict_18 (pPicture, FALSE, &mask_xoff, &mask_yoff);
|
||||
|
||||
if (!image)
|
||||
return;
|
||||
diff --git a/fb/wfbrename.h b/fb/wfbrename.h
|
||||
index 73ee510..e9cdca8 100644
|
||||
--- a/fb/wfbrename.h
|
||||
+++ b/fb/wfbrename.h
|
||||
@@ -187,4 +187,5 @@
|
||||
#define fbZeroSegment wfbZeroSegment
|
||||
#define free_pixman_pict wfb_free_pixman_pict
|
||||
#define image_from_pict wfb_image_from_pict
|
||||
+#define image_from_pict_18 wfb_image_from_pict_18
|
||||
#define composeFunctions wfbComposeFunctions
|
||||
--
|
||||
1.6.5.2
|
||||
|
Loading…
Reference in New Issue
Block a user