Create holder inner class for pushing context state.
Fix bug with rsForEach corrupting parent context state.
Remove workaround from rsBalls.

Change-Id: I43a948536e70d44645d1c2ef7b97e1c5906f6943
diff --git a/rsScriptC_LibGL.cpp b/rsScriptC_LibGL.cpp
index ef1475c..0f84e4b 100644
--- a/rsScriptC_LibGL.cpp
+++ b/rsScriptC_LibGL.cpp
@@ -92,17 +92,17 @@
 
 static void SC_vpLoadProjectionMatrix(const rsc_Matrix *m) {
     GET_TLS();
-    rsc->getVertex()->setProjectionMatrix(rsc, m);
+    rsc->getProgramVertex()->setProjectionMatrix(rsc, m);
 }
 
 static void SC_vpLoadModelMatrix(const rsc_Matrix *m) {
     GET_TLS();
-    rsc->getVertex()->setModelviewMatrix(rsc, m);
+    rsc->getProgramVertex()->setModelviewMatrix(rsc, m);
 }
 
 static void SC_vpLoadTextureMatrix(const rsc_Matrix *m) {
     GET_TLS();
-    rsc->getVertex()->setTextureMatrix(rsc, m);
+    rsc->getProgramVertex()->setTextureMatrix(rsc, m);
 }
 
 static void SC_pfConstantColor(RsProgramFragment vpf, float r, float g, float b, float a) {
@@ -114,7 +114,7 @@
 
 static void SC_vpGetProjectionMatrix(rsc_Matrix *m) {
     GET_TLS();
-    rsc->getVertex()->getProjectionMatrix(rsc, m);
+    rsc->getProgramVertex()->getProjectionMatrix(rsc, m);
 }
 
 //////////////////////////////////////////////////////////////////////////////
@@ -165,8 +165,8 @@
 
 static void SC_drawSpriteScreenspace(float x, float y, float z, float w, float h) {
     GET_TLS();
-    ObjectBaseRef<const ProgramVertex> tmp(rsc->getVertex());
-    rsc->setVertex(rsc->getDefaultProgramVertex());
+    ObjectBaseRef<const ProgramVertex> tmp(rsc->getProgramVertex());
+    rsc->setProgramVertex(rsc->getDefaultProgramVertex());
     //rsc->setupCheck();
 
     //GLint crop[4] = {0, h, w, -h};
@@ -177,7 +177,7 @@
                 x+w, sh - y,     z,
                 x+w, sh - (y+h), z,
                 x,   sh - (y+h), z);
-    rsc->setVertex((ProgramVertex *)tmp.get());
+    rsc->setProgramVertex((ProgramVertex *)tmp.get());
 }
 /*
 static void SC_drawSprite(float x, float y, float z, float w, float h)
@@ -271,7 +271,7 @@
 
 static void SC_color(float r, float g, float b, float a) {
     GET_TLS();
-    ProgramFragment *pf = (ProgramFragment *)rsc->getFragment();
+    ProgramFragment *pf = (ProgramFragment *)rsc->getProgramFragment();
     pf->setConstantColor(rsc, r, g, b, a);
 }