make sure all texture->isCompressed calls are type-specific
Issue=306
Signed-off-by: Nicolas Capens
git-svn-id: http://angleproject.googlecode.com/svn/trunk@1079 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 8406e4b..a8b3de6 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -2353,19 +2353,21 @@
return error(GL_INVALID_OPERATION);
}
- if (tex->isCompressed())
- {
- return error(GL_INVALID_OPERATION);
- }
-
switch (textarget)
{
case GL_TEXTURE_2D:
- if (tex->getTarget() != GL_TEXTURE_2D)
{
- return error(GL_INVALID_OPERATION);
+ if (tex->getTarget() != GL_TEXTURE_2D)
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+ gl::Texture2D *tex2d = static_cast<gl::Texture2D *>(tex);
+ if (tex2d->isCompressed())
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+ break;
}
- break;
case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
@@ -2373,11 +2375,18 @@
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
- if (tex->getTarget() != GL_TEXTURE_CUBE_MAP)
{
- return error(GL_INVALID_OPERATION);
+ if (tex->getTarget() != GL_TEXTURE_CUBE_MAP)
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+ gl::TextureCubeMap *texcube = static_cast<gl::TextureCubeMap *>(tex);
+ if (texcube->isCompressed())
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+ break;
}
- break;
default:
return error(GL_INVALID_ENUM);
@@ -2487,28 +2496,37 @@
if (context)
{
- gl::Texture *texture;
-
switch (target)
{
case GL_TEXTURE_2D:
- texture = context->getTexture2D();
- break;
+ {
+ gl::Texture2D *tex2d = context->getTexture2D();
+
+ if (tex2d->isCompressed())
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+
+ tex2d->generateMipmaps();
+ break;
+ }
case GL_TEXTURE_CUBE_MAP:
- texture = context->getTextureCubeMap();
- break;
+ {
+ gl::TextureCubeMap *texcube = context->getTextureCubeMap();
+
+ if (texcube->isCompressed())
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+
+ texcube->generateMipmaps();
+ break;
+ }
default:
return error(GL_INVALID_ENUM);
}
-
- if (texture->isCompressed())
- {
- return error(GL_INVALID_OPERATION);
- }
-
- texture->generateMipmaps();
}
}
catch(std::bad_alloc&)