std::mutex prelaunch_mutex;
std::mutex reallaunch_mutex;
+std::thread reallaunch_worker;
std::string prelaunch_pkg_id;
bool CheckWindowManagerReady() {
#endif
}
+// static
+void WRTMainDelegateTV::ReallaunchWorkerJoin() {
+ if (reallaunch_worker.joinable())
+ reallaunch_worker.join();
+
+ LOG(INFO) << "ReallaunchWorker thread exit";
+}
+
void WRTMainDelegateTV::CreateWorkers() {
prelaunch_mutex.lock();
reallaunch_mutex.lock();
});
prelaunch_worker.detach();
- std::thread reallaunch_worker([]() -> void {
+ reallaunch_worker = std::thread([]() -> void {
InitializeBeforeRealLaunch();
// wake-up by real launch
GroupZygoteProcess(false);
reallaunch_mutex.unlock();
});
- reallaunch_worker.detach();
-
}
void WRTMainDelegateTV::LoaderCreated() {
auto native_window_tv = WRTNativeWindowTV::GetMainNativeWindow();
if (native_window_tv)
native_window_tv->HideEarlyIfNecessary();
+
+ WRTMainDelegateTV::ReallaunchWorkerJoin();
}
std::string NativeWebRuntimeDelegateTV::CheckPrivilege(