From 5893474c741274cde7a312c920dacfb00790c302 Mon Sep 17 00:00:00 2001 From: "Xiang, Haihao" Date: Wed, 31 Jan 2007 09:47:02 +0800 Subject: _mesa_pack_rgba_span_float: fix for packing data into group --- src/mesa/main/image.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c index 6ff4089f0e..fc8e1f0f57 100644 --- a/src/mesa/main/image.c +++ b/src/mesa/main/image.c @@ -1331,6 +1331,7 @@ _mesa_pack_rgba_span_float(GLcontext *ctx, GLuint n, GLfloat rgba[][4], dst[i*4+2] = FLOAT_TO_BYTE(rgba[i][RCOMP]); dst[i*4+3] = FLOAT_TO_BYTE(rgba[i][ACOMP]); } + break; case GL_ABGR_EXT: for (i=0;i Date: Thu, 1 Feb 2007 01:09:26 +0100 Subject: fix unitialized values in radeonClear --- src/mesa/drivers/dri/radeon/radeon_ioctl.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/radeon/radeon_ioctl.c b/src/mesa/drivers/dri/radeon/radeon_ioctl.c index 737490fcde..4c64bc201a 100644 --- a/src/mesa/drivers/dri/radeon/radeon_ioctl.c +++ b/src/mesa/drivers/dri/radeon/radeon_ioctl.c @@ -1087,10 +1087,6 @@ static void radeonClear( GLcontext *ctx, GLbitfield mask ) } } - /* Flip top to bottom */ - cx += dPriv->x; - cy = dPriv->y + dPriv->h - cy - ch; - LOCK_HARDWARE( rmesa ); /* compute region after locking: */ @@ -1099,6 +1095,10 @@ static void radeonClear( GLcontext *ctx, GLbitfield mask ) cw = ctx->DrawBuffer->_Xmax - cx; ch = ctx->DrawBuffer->_Ymax - cy; + /* Flip top to bottom */ + cx += dPriv->x; + cy = dPriv->y + dPriv->h - cy - ch; + /* Throttle the number of clear ioctls we do. */ while ( 1 ) { -- cgit v1.2.3 From bed026e7dda14ac1c555f1fb16d70eadcd1a01fc Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Thu, 1 Feb 2007 10:43:10 +0100 Subject: driDestroyDisplay: Remove Drivers list entry when dlclosing its handle. This fixes a regression from commit f81b1dbe374fe446f6ef676e70a72952ffb47d4e: Since then, driDestroyDisplay gets called from __glXFreeDisplayPrivate. It dlcloses the handles associated with the display but fails to remove their references from the Drivers list, so subsequent calls to OpenDriver return a stale handle and an invalid createNewScreenFunc pointer. The attempt to call the latter results in a segfault when running amoeba, e.g. --- src/glx/x11/dri_glx.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/glx/x11/dri_glx.c b/src/glx/x11/dri_glx.c index 0875361d0b..5ff1a94c71 100644 --- a/src/glx/x11/dri_glx.c +++ b/src/glx/x11/dri_glx.c @@ -386,8 +386,24 @@ static void driDestroyDisplay(Display *dpy, void *private) const int numScreens = ScreenCount(dpy); int i; for (i = 0; i < numScreens; i++) { - if (pdpyp->libraryHandles[i]) - dlclose(pdpyp->libraryHandles[i]); + if (pdpyp->libraryHandles[i]) { + __DRIdriver *driver, *prev; + + /* Remove driver from Drivers list */ + for (prev = NULL, driver = Drivers; driver; + prev = driver, driver = driver->next) { + if (driver->handle == pdpyp->libraryHandles[i]) { + if (prev) + prev->next = driver->next; + else + Drivers = driver->next; + + Xfree(driver); + } + } + + dlclose(pdpyp->libraryHandles[i]); + } } Xfree(pdpyp->libraryHandles); Xfree(pdpyp); -- cgit v1.2.3 From 8628b382e4ac492d829fe720219187b758add003 Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Thu, 1 Feb 2007 10:45:51 +0100 Subject: driDestroyDisplay: Fix comment, it is called now. --- src/glx/x11/dri_glx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/glx/x11/dri_glx.c b/src/glx/x11/dri_glx.c index 5ff1a94c71..6f944d7d60 100644 --- a/src/glx/x11/dri_glx.c +++ b/src/glx/x11/dri_glx.c @@ -376,7 +376,7 @@ const char *glXGetDriverConfig (const char *driverName) { } -/* This function isn't currently used. +/* Called from __glXFreeDisplayPrivate. */ static void driDestroyDisplay(Display *dpy, void *private) { -- cgit v1.2.3