Update to June 11 2013 code drop.
This should fix the hang bug we've been seeing.
diff --git a/src/Renderer/Surface.cpp b/src/Renderer/Surface.cpp
index aadaf97..ae62f76 100644
--- a/src/Renderer/Surface.cpp
+++ b/src/Renderer/Surface.cpp
@@ -651,21 +651,24 @@
ASSERT(false);
}
- switch(format)
+ if(buffer)
{
- #if S3TC_SUPPORT
- case FORMAT_DXT1:
- #endif
- case FORMAT_ATI1:
- return (unsigned char*)buffer + 8 * (x / 4) + (y / 4) * pitchB + z * sliceB;
- #if S3TC_SUPPORT
- case FORMAT_DXT3:
- case FORMAT_DXT5:
- #endif
- case FORMAT_ATI2:
- return (unsigned char*)buffer + 16 * (x / 4) + (y / 4) * pitchB + z * sliceB;
- default:
- return (unsigned char*)buffer + x * bytes + y * pitchB + z * sliceB;
+ switch(format)
+ {
+ #if S3TC_SUPPORT
+ case FORMAT_DXT1:
+ #endif
+ case FORMAT_ATI1:
+ return (unsigned char*)buffer + 8 * (x / 4) + (y / 4) * pitchB + z * sliceB;
+ #if S3TC_SUPPORT
+ case FORMAT_DXT3:
+ case FORMAT_DXT5:
+ #endif
+ case FORMAT_ATI2:
+ return (unsigned char*)buffer + 16 * (x / 4) + (y / 4) * pitchB + z * sliceB;
+ default:
+ return (unsigned char*)buffer + x * bytes + y * pitchB + z * sliceB;
+ }
}
return 0;
@@ -2073,7 +2076,7 @@
int width4 = (width + 3) & ~3;
int height4 = (height + 3) & ~3;
- return allocate(size(width4, height4, depth, format));
+ return allocateZero(size(width4, height4, depth, format));
}
void Surface::memfill(void *buffer, int pattern, int bytes)