Decorate (and undecorate) struct fields too (when not built-in).

Trac #20510
Issue=316,317
Authored-by: Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@1027 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Program.cpp b/src/libGLESv2/Program.cpp
index 8a04cc5..581cb14 100644
--- a/src/libGLESv2/Program.cpp
+++ b/src/libGLESv2/Program.cpp
@@ -2031,16 +2031,26 @@
 
 std::string Program::undecorateUniform(const std::string &_name)
 {
-    if (_name[0] == '_')
+    std::string name = _name;
+    
+    // Remove any structure field decoration
+    size_t pos = 0;
+    while ((pos = name.find("._", pos)) != std::string::npos)
     {
-        return _name.substr(1);
+        name.replace(pos, 2, ".");
     }
-    else if (_name.compare(0, 3, "ar_") == 0)
+
+    // Remove the leading decoration
+    if (name[0] == '_')
     {
-        return _name.substr(3);
+        return name.substr(1);
+    }
+    else if (name.compare(0, 3, "ar_") == 0)
+    {
+        return name.substr(3);
     }
     
-    return _name;
+    return name;
 }
 
 void Program::applyUniformnbv(Uniform *targetUniform, GLsizei count, int width, const GLboolean *v)