Use commitRect within updateTexture to avoid duplicate logic.

TRAC #18495
Signed-off-by: Daniel Koch
Author: Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@818 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Texture.cpp b/src/libGLESv2/Texture.cpp
index b8b9bdf..9e8f454 100644
--- a/src/libGLESv2/Texture.cpp
+++ b/src/libGLESv2/Texture.cpp
@@ -1658,10 +1658,7 @@
             Image *image = &mImageArray[level];
 
             RECT sourceRect = transformPixelRect(xoffset, yoffset, width, height, image->height);;
-
-            POINT destPoint;
-            destPoint.x = sourceRect.left;
-            destPoint.y = sourceRect.top;
+            POINT destPoint = {sourceRect.left, sourceRect.top};
 
             result = getDevice()->UpdateSurface(image->surface, &sourceRect, destLevel, &destPoint);
             ASSERT(SUCCEEDED(result));
@@ -1907,28 +1904,15 @@
 
 void Texture2D::updateTexture()
 {
-    IDirect3DDevice9 *device = getDevice();
-
     int levels = levelCount();
 
     for (int level = 0; level < levels; level++)
     {
-        if (mImageArray[level].surface && mImageArray[level].dirty)
+        Image *image = &mImageArray[level];
+
+        if (image->surface && image->dirty)
         {
-            IDirect3DSurface9 *levelSurface = NULL;
-            HRESULT result = mTexture->GetSurfaceLevel(level, &levelSurface);
-
-            ASSERT(SUCCEEDED(result));
-
-            if (SUCCEEDED(result))
-            {
-                result = device->UpdateSurface(mImageArray[level].surface, NULL, levelSurface, NULL);
-                ASSERT(SUCCEEDED(result));
-
-                levelSurface->Release();
-
-                mImageArray[level].dirty = false;
-            }
+            commitRect(level, 0, 0, mImageArray[level].width, mImageArray[level].height);
         }
     }
 }
@@ -2209,14 +2193,13 @@
     Texture::setCompressedImage(imageSize, pixels, &mImageArray[faceIndex(face)][level]);
 }
 
-void TextureCubeMap::commitRect(GLenum faceTarget, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height)
+void TextureCubeMap::commitRect(int face, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height)
 {
-    int face = faceIndex(faceTarget);
     ASSERT(mImageArray[face][level].surface != NULL);
 
     if (level < levelCount())
     {
-        IDirect3DSurface9 *destLevel = getCubeMapSurface(faceTarget, level);
+        IDirect3DSurface9 *destLevel = getCubeMapSurface(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level);
         ASSERT(destLevel != NULL);
 
         if (destLevel != NULL)
@@ -2224,10 +2207,7 @@
             Image *image = &mImageArray[face][level];
 
             RECT sourceRect = transformPixelRect(xoffset, yoffset, width, height, image->height);;
-
-            POINT destPoint;
-            destPoint.x = sourceRect.left;
-            destPoint.y = sourceRect.top;
+            POINT destPoint = {sourceRect.left, sourceRect.top};
 
             HRESULT result = getDevice()->UpdateSurface(image->surface, &sourceRect, destLevel, &destPoint);
             ASSERT(SUCCEEDED(result));
@@ -2243,7 +2223,7 @@
 {
     if (Texture::subImage(xoffset, yoffset, width, height, format, type, unpackAlignment, pixels, &mImageArray[faceIndex(target)][level]))
     {
-        commitRect(target, level, xoffset, yoffset, width, height);
+        commitRect(faceIndex(target), level, xoffset, yoffset, width, height);
     }
 }
 
@@ -2251,7 +2231,7 @@
 {
     if (Texture::subImageCompressed(xoffset, yoffset, width, height, format, imageSize, pixels, &mImageArray[faceIndex(target)][level]))
     {
-        commitRect(target, level, xoffset, yoffset, width, height);
+        commitRect(faceIndex(target), level, xoffset, yoffset, width, height);
     }
 }
 
@@ -2386,8 +2366,6 @@
 
 void TextureCubeMap::updateTexture()
 {
-    IDirect3DDevice9 *device = getDevice();
-
     for (int face = 0; face < 6; face++)
     {
         int levels = levelCount();
@@ -2397,18 +2375,7 @@
 
             if (image->surface && image->dirty)
             {
-                IDirect3DSurface9 *levelSurface = getCubeMapSurface(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level);
-                ASSERT(levelSurface != NULL);
-
-                if (levelSurface != NULL)
-                {
-                    HRESULT result = device->UpdateSurface(image->surface, NULL, levelSurface, NULL);
-                    ASSERT(SUCCEEDED(result));
-
-                    levelSurface->Release();
-
-                    image->dirty = false;
-                }
+                commitRect(face, level, 0, 0, image->width, image->height);
             }
         }
     }
@@ -2605,7 +2572,7 @@
     }
 }
 
-IDirect3DSurface9 *TextureCubeMap::getCubeMapSurface(GLenum face, unsigned int level)
+IDirect3DSurface9 *TextureCubeMap::getCubeMapSurface(GLenum target, unsigned int level)
 {
     if (mTexture == NULL)
     {
@@ -2615,7 +2582,7 @@
 
     IDirect3DSurface9 *surface = NULL;
 
-    HRESULT hr = mTexture->GetCubeMapSurface(es2dx::ConvertCubeFace(face), level, &surface);
+    HRESULT hr = mTexture->GetCubeMapSurface(es2dx::ConvertCubeFace(target), level, &surface);
 
     return (SUCCEEDED(hr)) ? surface : NULL;
 }
@@ -2812,4 +2779,4 @@
     return renderTarget;
 }
 
-}
+}
\ No newline at end of file