mirror of
https://github.com/electron/electron.git
synced 2026-01-09 15:38:08 -05:00
fix: raw_ptr destruction order in NodeBindings (#39762)
This commit is contained in:
@@ -394,21 +394,11 @@ base::FilePath GetResourcesPath() {
|
||||
return exec_path.DirName().Append(FILE_PATH_LITERAL("resources"));
|
||||
#endif
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
NodeBindings::NodeBindings(BrowserEnvironment browser_env)
|
||||
: browser_env_(browser_env) {
|
||||
if (browser_env == BrowserEnvironment::kWorker) {
|
||||
uv_loop_init(&worker_loop_);
|
||||
uv_loop_ = &worker_loop_;
|
||||
} else {
|
||||
uv_loop_ = uv_default_loop();
|
||||
}
|
||||
|
||||
// Interrupt embed polling when a handle is started.
|
||||
uv_loop_configure(uv_loop_, UV_LOOP_INTERRUPT_ON_IO_CHANGE);
|
||||
}
|
||||
: browser_env_{browser_env},
|
||||
uv_loop_{InitEventLoop(browser_env, &worker_loop_)} {}
|
||||
|
||||
NodeBindings::~NodeBindings() {
|
||||
// Quit the embed thread.
|
||||
@@ -429,6 +419,24 @@ NodeBindings::~NodeBindings() {
|
||||
stop_and_close_uv_loop(uv_loop_);
|
||||
}
|
||||
|
||||
// static
|
||||
uv_loop_t* NodeBindings::InitEventLoop(BrowserEnvironment browser_env,
|
||||
uv_loop_t* worker_loop) {
|
||||
uv_loop_t* event_loop = nullptr;
|
||||
|
||||
if (browser_env == BrowserEnvironment::kWorker) {
|
||||
uv_loop_init(worker_loop);
|
||||
event_loop = worker_loop;
|
||||
} else {
|
||||
event_loop = uv_default_loop();
|
||||
}
|
||||
|
||||
// Interrupt embed polling when a handle is started.
|
||||
uv_loop_configure(event_loop, UV_LOOP_INTERRUPT_ON_IO_CHANGE);
|
||||
|
||||
return event_loop;
|
||||
}
|
||||
|
||||
void NodeBindings::RegisterBuiltinBindings() {
|
||||
#define V(modname) _register_##modname();
|
||||
if (IsBrowserProcess()) {
|
||||
|
||||
Reference in New Issue
Block a user