From: Cheng Zhao Date: Fri, 10 Mar 2017 06:22:25 +0000 (+0900) Subject: Create new uv loop in each worker X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d2f185bea5ffe47c90bc3d87b94bee746055a568;p=platform%2Fframework%2Fweb%2Fcrosswalk-tizen.git Create new uv loop in each worker --- diff --git a/atom/common/node_bindings.cc b/atom/common/node_bindings.cc index e6dcb4e..7c13423 100644 --- a/atom/common/node_bindings.cc +++ b/atom/common/node_bindings.cc @@ -98,7 +98,7 @@ base::FilePath GetResourcesPath(bool is_browser) { NodeBindings::NodeBindings(BrowserEnvironment browser_env) : browser_env_(browser_env), - uv_loop_(uv_default_loop()), + uv_loop_(browser_env == WORKER ? uv_loop_new() : uv_default_loop()), embed_closed_(false), uv_env_(nullptr), weak_factory_(this) { @@ -169,7 +169,7 @@ node::Environment* NodeBindings::CreateEnvironment( std::unique_ptr c_argv = StringVectorToArgArray(args); node::Environment* env = node::CreateEnvironment( - new node::IsolateData(context->GetIsolate(), uv_default_loop()), context, + new node::IsolateData(context->GetIsolate(), uv_loop_), context, args.size(), c_argv.get(), 0, nullptr); if (browser_env_ == BROWSER) { diff --git a/atom/renderer/web_worker_observer.cc b/atom/renderer/web_worker_observer.cc index a6296f9..65ca81c 100644 --- a/atom/renderer/web_worker_observer.cc +++ b/atom/renderer/web_worker_observer.cc @@ -40,7 +40,7 @@ WebWorkerObserver::~WebWorkerObserver() { void WebWorkerObserver::ContextCreated(v8::Local context) { v8::Context::Scope context_scope(context); - node_bindings_->Initialize(); + // Start the embed thread. node_bindings_->PrepareMessageLoop(); // Setup node environment for each window.