Fix possible leaks in CanvasContext HintSessionWrapper

Ensure the mHintSessionFuture is accounted for correctly in the
destructor, and proper destruction is taken in CanvasContext::destroy()
in addition to the destructor.

Bug: b/297230599
Test: manual
Change-Id: Idcbd0f2ba87290f090d693f0a64cb46fe8270b95
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index 4064bb9..120d812 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -162,6 +162,7 @@
     destroyHardwareResources();
     mAnimationContext->destroy();
     mRenderThread.cacheManager().onContextStopped(this);
+    mHintSessionWrapper.destroy();
 }
 
 static void setBufferCount(ANativeWindow* window) {
@@ -195,6 +196,7 @@
 void CanvasContext::setSurface(ANativeWindow* window, bool enableTimeout) {
     ATRACE_CALL();
 
+    startHintSession();
     if (window) {
         mNativeSurface = std::make_unique<ReliableSurface>(window);
         mNativeSurface->init();