implement finish

Change-Id: If1ec99d0dbcf7aebf9d90d7779bf3ff34a8963f2
diff --git a/rsContext.cpp b/rsContext.cpp
index 5cafd97..145759e 100644
--- a/rsContext.cpp
+++ b/rsContext.cpp
@@ -510,6 +510,7 @@
     mDPI = 96;
     mIsContextLite = false;
     memset(&watchdog, 0, sizeof(watchdog));
+    memset(&mHal, 0, sizeof(mHal));
     mForceCpu = false;
     mContextType = RS_CONTEXT_TYPE_NORMAL;
     mSynchronous = false;
@@ -721,6 +722,12 @@
 }
 #endif
 
+void Context::finish() {
+    if (mHal.funcs.finish) {
+        mHal.funcs.finish(this);
+    }
+}
+
 void Context::assignName(ObjectBase *obj, const char *name, uint32_t len) {
     rsAssert(!obj->getName());
     obj->setName(name, len);
@@ -785,6 +792,7 @@
 namespace renderscript {
 
 void rsi_ContextFinish(Context *rsc) {
+    rsc->finish();
 }
 
 void rsi_ContextBindRootScript(Context *rsc, RsScript vs) {