// Copyright (c) 2013 GitHub, Inc. // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. #include "shell/common/node_bindings_mac.h" #include #include #include #include #include #include "shell/common/node_includes.h" namespace electron { NodeBindingsMac::NodeBindingsMac(BrowserEnvironment browser_env) : NodeBindings(browser_env) {} void NodeBindingsMac::PollEvents() { auto* const event_loop = uv_loop(); struct timeval tv; int timeout = uv_backend_timeout(event_loop); if (timeout != -1) { tv.tv_sec = timeout / 1000; tv.tv_usec = (timeout % 1000) * 1000; } fd_set readset; int fd = uv_backend_fd(event_loop); FD_ZERO(&readset); FD_SET(fd, &readset); // Wait for new libuv events. int r; do { r = select(fd + 1, &readset, nullptr, nullptr, timeout == -1 ? nullptr : &tv); } while (r == -1 && errno == EINTR); } // static std::unique_ptr NodeBindings::Create(BrowserEnvironment env) { return std::make_unique(env); } } // namespace electron