__glXDRIbindTexImage: Fail if no texture bound to pixmap's texture target.

We would most likely crash somewhere in Mesa if we tried to continue in this
case.
This commit is contained in:
Michel Dänzer 2007-08-24 13:04:48 +02:00
parent 3305d17195
commit 0958505961

View File

@ -374,17 +374,25 @@ __glXDRIbindTexImage(__GLXcontext *baseContext,
{ {
RegionPtr pRegion = NULL; RegionPtr pRegion = NULL;
PixmapPtr pixmap; PixmapPtr pixmap;
int bpp, override = 0; int bpp, override = 0, texname;
GLenum format, type; GLenum format, type;
ScreenPtr pScreen = glxPixmap->pScreen; ScreenPtr pScreen = glxPixmap->pScreen;
__GLXDRIscreen * const screen = __GLXDRIscreen * const screen =
(__GLXDRIscreen *) __glXgetActiveScreen(pScreen->myNum); (__GLXDRIscreen *) __glXgetActiveScreen(pScreen->myNum);
CALL_GetIntegerv(GET_DISPATCH(), (glxPixmap->target == GL_TEXTURE_2D ?
GL_TEXTURE_BINDING_2D :
GL_TEXTURE_BINDING_RECTANGLE_NV,
&texname));
if (!texname)
return __glXError(GLXBadContextState);
pixmap = (PixmapPtr) glxPixmap->pDraw; pixmap = (PixmapPtr) glxPixmap->pDraw;
if (screen->texOffsetStart && screen->driScreen.setTexOffset) { if (screen->texOffsetStart && screen->driScreen.setTexOffset) {
__GLXpixmap **texOffsetOverride = screen->texOffsetOverride; __GLXpixmap **texOffsetOverride = screen->texOffsetOverride;
int i, firstEmpty = 16, texname; int i, firstEmpty = 16;
for (i = 0; i < 16; i++) { for (i = 0; i < 16; i++) {
if (texOffsetOverride[i] == glxPixmap) if (texOffsetOverride[i] == glxPixmap)
@ -409,11 +417,6 @@ alreadyin:
glxPixmap->pDRICtx = &((__GLXDRIcontext*)baseContext)->driContext; glxPixmap->pDRICtx = &((__GLXDRIcontext*)baseContext)->driContext;
CALL_GetIntegerv(GET_DISPATCH(), (glxPixmap->target == GL_TEXTURE_2D ?
GL_TEXTURE_BINDING_2D :
GL_TEXTURE_BINDING_RECTANGLE_NV,
&texname));
if (texname == glxPixmap->texname) if (texname == glxPixmap->texname)
return Success; return Success;