Improved object lifecycle tracking and fix leaks.
diff --git a/rsContext.cpp b/rsContext.cpp
index 653d427..70add92 100644
--- a/rsContext.cpp
+++ b/rsContext.cpp
@@ -269,11 +269,16 @@
      }
 
      LOGV("RS Thread exiting");
+     rsc->mRaster.clear();
+     rsc->mFragment.clear();
+     rsc->mVertex.clear();
+     rsc->mFragmentStore.clear();
+     rsc->mRootScript.clear();
+     rsc->mStateRaster.deinit(rsc);
+     rsc->mStateVertex.deinit(rsc);
+     rsc->mStateFragment.deinit(rsc);
+     rsc->mStateFragmentStore.deinit(rsc);
      ObjectBase::zeroAllUserRef(rsc);
-     rsc->mRaster.set(NULL);
-     rsc->mFragment.set(NULL);
-     rsc->mVertex.set(NULL);
-     rsc->mFragmentStore.set(NULL);
 
      glClearColor(0,0,0,0);
      glClear(GL_COLOR_BUFFER_BIT);