mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-10-07 06:39:23 +00:00
Proper handling of resize events.
git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@256 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
+15
-9
@@ -35,24 +35,22 @@ Poll::poll() {
|
||||
|
||||
m_maxFd = select(m_maxFd + 1, &m_readSet, &m_writeSet, &m_exceptSet, &timeout);
|
||||
|
||||
if (m_maxFd >= 0)
|
||||
if (m_maxFd >= 0) {
|
||||
work();
|
||||
|
||||
else if (errno == EINTR)
|
||||
} else if (errno == EINTR) {
|
||||
m_slotSelectInterrupted();
|
||||
work_input();
|
||||
|
||||
else if (errno < 0)
|
||||
} else if (errno < 0) {
|
||||
throw std::runtime_error("Poll::work(): select error");
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Poll::work() {
|
||||
if (FD_ISSET(0, &m_readSet)) {
|
||||
int key;
|
||||
|
||||
while ((key = getch()) != ERR)
|
||||
m_slotReadStdin(key);
|
||||
}
|
||||
if (FD_ISSET(0, &m_readSet))
|
||||
work_input();
|
||||
|
||||
if (m_curlStack.is_busy())
|
||||
m_curlStack.perform();
|
||||
@@ -60,6 +58,14 @@ Poll::work() {
|
||||
torrent::work(&m_readSet, &m_writeSet, &m_exceptSet, m_maxFd);
|
||||
}
|
||||
|
||||
void
|
||||
Poll::work_input() {
|
||||
int key;
|
||||
|
||||
while ((key = getch()) != ERR)
|
||||
m_slotReadStdin(key);
|
||||
}
|
||||
|
||||
void
|
||||
Poll::register_http() {
|
||||
torrent::Http::set_factory(sigc::bind(sigc::ptr_fun(&core::CurlGet::new_object), &m_curlStack));
|
||||
|
||||
@@ -22,6 +22,7 @@ public:
|
||||
|
||||
private:
|
||||
void work();
|
||||
void work_input();
|
||||
|
||||
SlotInt m_slotReadStdin;
|
||||
Slot m_slotSelectInterrupted;
|
||||
|
||||
Reference in New Issue
Block a user