Add clearDisplayService in IVirtualizationServiceInternal

To clean up previous display service

Bug: 331708504
Test: turn off and then turn on the vm launcher app
Change-Id: Ica340a250d89ed6ed4cc66370cb01db807a0e17b
diff --git a/virtualizationservice/aidl/android/system/virtualizationservice_internal/IVirtualizationServiceInternal.aidl b/virtualizationservice/aidl/android/system/virtualizationservice_internal/IVirtualizationServiceInternal.aidl
index 65806da..84f8734 100644
--- a/virtualizationservice/aidl/android/system/virtualizationservice_internal/IVirtualizationServiceInternal.aidl
+++ b/virtualizationservice/aidl/android/system/virtualizationservice_internal/IVirtualizationServiceInternal.aidl
@@ -119,5 +119,6 @@
 
     // TODO(b/330257000): Remove these functions when a display service is running with binder RPC.
     void setDisplayService(IBinder ibinder);
+    void clearDisplayService();
     IBinder waitDisplayService();
 }
diff --git a/virtualizationservice/src/aidl.rs b/virtualizationservice/src/aidl.rs
index 9258b82..1fa634d 100644
--- a/virtualizationservice/src/aidl.rs
+++ b/virtualizationservice/src/aidl.rs
@@ -205,6 +205,15 @@
         Ok(())
     }
 
+    fn clearDisplayService(&self) -> std::result::Result<(), binder::Status> {
+        check_manage_access()?;
+        check_use_custom_virtual_machine()?;
+        let state = &mut *self.state.lock().unwrap();
+        state.display_service = None;
+        self.display_service_set.notify_all();
+        Ok(())
+    }
+
     fn waitDisplayService(&self) -> std::result::Result<binder::SpIBinder, binder::Status> {
         check_manage_access()?;
         check_use_custom_virtual_machine()?;