diff --git a/adb/fdevent/fdevent.cpp b/adb/fdevent/fdevent.cpp index 82bb0a224..e80bb5a51 100644 --- a/adb/fdevent/fdevent.cpp +++ b/adb/fdevent/fdevent.cpp @@ -49,10 +49,11 @@ std::string dump_fde(const fdevent* fde) { state.c_str()); } -static fdevent_context* g_ambient_fdevent_context = new fdevent_context_poll(); +static auto& g_ambient_fdevent_context = + *new std::unique_ptr(new fdevent_context_poll()); static fdevent_context* fdevent_get_ambient() { - return g_ambient_fdevent_context; + return g_ambient_fdevent_context.get(); } fdevent* fdevent_create(int fd, fd_func func, void* arg) { @@ -110,5 +111,5 @@ size_t fdevent_installed_count() { } void fdevent_reset() { - return fdevent_get_ambient()->Reset(); + g_ambient_fdevent_context.reset(new fdevent_context_poll()); } diff --git a/adb/fdevent/fdevent.h b/adb/fdevent/fdevent.h index 7bc50f4b2..b46219c51 100644 --- a/adb/fdevent/fdevent.h +++ b/adb/fdevent/fdevent.h @@ -79,7 +79,6 @@ struct fdevent_context { // Test-only functionality: virtual void TerminateLoop() = 0; virtual size_t InstalledCount() = 0; - virtual void Reset() = 0; }; struct fdevent { diff --git a/adb/fdevent/fdevent_poll.cpp b/adb/fdevent/fdevent_poll.cpp index 63ef3f1fa..6e016f6cc 100644 --- a/adb/fdevent/fdevent_poll.cpp +++ b/adb/fdevent/fdevent_poll.cpp @@ -458,15 +458,3 @@ void fdevent_context_poll::TerminateLoop() { size_t fdevent_context_poll::InstalledCount() { return poll_node_map_.size(); } - -void fdevent_context_poll::Reset() { - poll_node_map_.clear(); - pending_list_.clear(); - - std::lock_guard lock(run_queue_mutex_); - run_queue_notify_fd_.reset(); - run_queue_.clear(); - - main_thread_valid_ = false; - terminate_loop_ = false; -} diff --git a/adb/fdevent/fdevent_poll.h b/adb/fdevent/fdevent_poll.h index aa82ee52a..f5720ca3a 100644 --- a/adb/fdevent/fdevent_poll.h +++ b/adb/fdevent/fdevent_poll.h @@ -62,7 +62,6 @@ struct fdevent_context_poll : public fdevent_context { virtual void TerminateLoop() final; virtual size_t InstalledCount() final; - virtual void Reset() final; // All operations to fdevent should happen only in the main thread. // That's why we don't need a lock for fdevent.