From 61d386a93f862005d1eddb45be91c7d5421aca83 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 25 Aug 2005 03:38:07 +0000 Subject: [PATCH] Attempt to fix the issue reported by Alan Grimes with DRM_RADEON_TEXTURE erroring out when it shouldn't. The errno could be changed by usleep() between the ioctl call and the loop check, if a signal was received. This could cause an EAGAIN return from the DRM_RADEON_TEXTURE ioctl to not loop again. Instead of checking errno, check thevalue of ret itself, since it is a saved (and sign-flipped) copy of errno from the ioctl call. --- src/mesa/drivers/dri/r200/r200_texmem.c | 2 +- src/mesa/drivers/dri/r300/r300_texmem.c | 2 +- src/mesa/drivers/dri/radeon/radeon_texmem.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mesa/drivers/dri/r200/r200_texmem.c b/src/mesa/drivers/dri/r200/r200_texmem.c index 7472afeedd7..14ee8238ad8 100644 --- a/src/mesa/drivers/dri/r200/r200_texmem.c +++ b/src/mesa/drivers/dri/r200/r200_texmem.c @@ -427,7 +427,7 @@ static void uploadSubImage( r200ContextPtr rmesa, r200TexObjPtr t, fprintf(stderr, "DRM_RADEON_TEXTURE: again!\n"); usleep(1); } - } while ( ret && errno == EAGAIN ); + } while ( ret == -EAGAIN ); UNLOCK_HARDWARE( rmesa ); diff --git a/src/mesa/drivers/dri/r300/r300_texmem.c b/src/mesa/drivers/dri/r300/r300_texmem.c index 5c70e2e3c54..ca392762ad4 100644 --- a/src/mesa/drivers/dri/r300/r300_texmem.c +++ b/src/mesa/drivers/dri/r300/r300_texmem.c @@ -417,7 +417,7 @@ static void uploadSubImage(r300ContextPtr rmesa, r300TexObjPtr t, "DRM_RADEON_TEXTURE: again!\n"); usleep(1); } - } while (ret && errno == EAGAIN); + } while (ret == -EAGAIN); UNLOCK_HARDWARE(&rmesa->radeon); diff --git a/src/mesa/drivers/dri/radeon/radeon_texmem.c b/src/mesa/drivers/dri/radeon/radeon_texmem.c index d492e190c12..3943afcde0b 100644 --- a/src/mesa/drivers/dri/radeon/radeon_texmem.c +++ b/src/mesa/drivers/dri/radeon/radeon_texmem.c @@ -304,7 +304,7 @@ static void uploadSubImage( radeonContextPtr rmesa, radeonTexObjPtr t, do { ret = drmCommandWriteRead( rmesa->dri.fd, DRM_RADEON_TEXTURE, &tex, sizeof(drm_radeon_texture_t) ); - } while ( ret && errno == EAGAIN ); + } while ( ret == -EAGAIN ); UNLOCK_HARDWARE( rmesa ); -- 2.30.2