diff --git a/src/rpc/scgi.cc b/src/rpc/scgi.cc index 3daa7e57..f992718c 100644 --- a/src/rpc/scgi.cc +++ b/src/rpc/scgi.cc @@ -169,12 +169,12 @@ SCgi::receive_call(SCgiTask* task, const char* buffer, uint32_t length) { slot_write slotWrite; slotWrite.set(rak::mem_fn(task, &SCgiTask::receive_write)); - ThreadBase::acquire_global_lock(); - ThreadBase::interrupt_main_polling(); + torrent::thread_base::acquire_global_lock(); + torrent::main_thread()->interrupt(); bool result = xmlrpc.process(buffer, length, slotWrite); - ThreadBase::release_global_lock(); + torrent::thread_base::release_global_lock(); return result; } diff --git a/src/thread_base.cc b/src/thread_base.cc index b4219cf9..a61a1201 100644 --- a/src/thread_base.cc +++ b/src/thread_base.cc @@ -162,18 +162,3 @@ ThreadBase::queue_item(thread_base_func newFunc) { if (m_state == STATE_ACTIVE) interrupt(); } - -void -ThreadBase::interrupt_main_polling() { - int sleep_length = 0; - - while (ThreadBase::is_main_polling()) { - torrent::main_thread()->interrupt(); - - if (!ThreadBase::is_main_polling()) - return; - - usleep(sleep_length); - sleep_length = std::min(sleep_length + 50, 1000); - } -} diff --git a/src/thread_base.h b/src/thread_base.h index 479e3cdd..b125ea8b 100644 --- a/src/thread_base.h +++ b/src/thread_base.h @@ -66,14 +66,6 @@ public: void queue_item(thread_base_func newFunc); - // Only call this when global lock has been acquired, as it checks - // ThreadBase::is_main_polling() which is only guaranteed to remain - // 'false' if global lock keeps main thread from entering polling - // again. - // - // Move to libtorrent some day. - static void interrupt_main_polling(); - protected: int64_t next_timeout_usec();