std::mutex prelaunch_mutex;
std::mutex reallaunch_mutex;
+std::thread reallaunch_worker;
std::string prelaunch_pkg_id;
base::Lock loader_complete_lock;
#endif
}
+// static
+void WRTMainDelegateTV::ReallaunchWorkerJoin() {
+ if (reallaunch_worker.joinable())
+ reallaunch_worker.join();
+
+ LOG(INFO) << "ReallaunchWorker thread exit";
+}
+
void WRTMainDelegateTV::AdjustloaderPriority(
const std::string& loader_work,
const std::string& reallaunch_work) {
});
prelaunch_worker.detach();
- std::thread reallaunch_worker([]() -> void {
+ reallaunch_worker = std::thread([]() -> void {
InitializeBeforeRealLaunch();
// ensure thread safe
AdjustloaderPriority("", "ready");
GroupZygoteProcess(false);
reallaunch_mutex.unlock();
});
- reallaunch_worker.detach();
-
}
void WRTMainDelegateTV::LoaderCreated() {
LOG(WARNING) << "failed to unregister state changed event callback";
ClearTmpFolder();
ApplicationDataTV::GetInstance().StorePreconnectURL();
+ WRTMainDelegateTV::ReallaunchWorkerJoin();
}
void NativeWebRuntimeDelegateTV::RequestQuit() {