composer: Resume non target displays incase of TUI failure

Change-Id: Ifb6f2b13c69c6ae9a2fc10ec96fadd9489c82528
CRs-Fixed: 3334553
diff --git a/composer/hwc_session.cpp b/composer/hwc_session.cpp
index 0edb1d6..a12e47e 100644
--- a/composer/hwc_session.cpp
+++ b/composer/hwc_session.cpp
@@ -4254,19 +4254,20 @@
 
 int HWCSession::WaitForCommitDoneAsync(hwc2_display_t display, int client_id) {
   std::chrono::milliseconds span(2000);
-  if (commit_done_future_.valid()) {
-    std::future_status status = commit_done_future_.wait_for(std::chrono::milliseconds(0));
+  if (commit_done_future_[display].valid()) {
+    std::future_status status = commit_done_future_[display].wait_for(std::chrono::milliseconds(0));
     if (status != std::future_status::ready) {
       // Previous task is stuck. Bail out early.
       return -ETIMEDOUT;
     }
   }
 
-  commit_done_future_ = std::async([](HWCSession* session, hwc2_display_t display, int client_id) {
+  commit_done_future_[display] = std::async([](HWCSession* session, hwc2_display_t display,
+                                               int client_id) {
                                       return session->WaitForCommitDone(display, client_id);
                                      }, this, display, client_id);
-  auto ret = (commit_done_future_.wait_for(span) == std::future_status::timeout) ?
-             -EINVAL : commit_done_future_.get();
+  auto ret = (commit_done_future_[display].wait_for(span) == std::future_status::timeout) ?
+             -EINVAL : commit_done_future_[display].get();
   return ret;
 }
 
@@ -4493,7 +4494,10 @@
     DLOGI("Waiting for device unassign");
     int ret = WaitForCommitDoneAsync(target_display, kClientTrustedUI);
     if (ret != 0) {
-      DLOGE("Device unassign failed with error %d", ret);
+      if (ret != -ETIMEDOUT) {
+        DLOGE("Device unassign failed with error %d", ret);
+      }
+      TUITransitionUnPrepare(disp_id);
       return -EINVAL;
     }
   }
diff --git a/composer/hwc_session.h b/composer/hwc_session.h
index 658ef21..bf38734 100644
--- a/composer/hwc_session.h
+++ b/composer/hwc_session.h
@@ -728,7 +728,7 @@
   Locker primary_display_lock_;
   std::map <hwc2_display_t, sdm::DisplayType> map_active_displays_;
   vector<HWDisplayInfo> virtual_display_list_ = {};
-  std::future<int> commit_done_future_;
+  std::map <hwc2_display_t, std::future<int>> commit_done_future_;
 };
 }  // namespace sdm