From af6eb493a9f874c3a76acb2ae39560d4a193e5a4 Mon Sep 17 00:00:00 2001 From: rakshasa Date: Thu, 31 Aug 2006 00:01:12 +0000 Subject: [PATCH] * Changed RequestList so that it clears m_canceled when a non-canceled piece is downloaded, and it no longer checks the whole dequeue for invalid transfers. * Fixed a bad exception in PeerConnectionBase::down_chunk_from_buffer(), it is supposed to check the buffer was used up only when the transfer is unfinished, not when finished. * Added --with-address-space to allow the user to change the address space size. Defaults to 1024 MB on 32 bit, 4096 MB on 64 bit archs. * Added a parameter to display::Manager::schedule_update that sets the minimum update interval. Normal updates use 50 msec, adjust_layout uses 0 msec. git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@769 e378c898-3ddf-0310-93e7-cc216c733640 --- scripts/checks.m4 | 21 +++++++++++++++++++++ src/display/manager.cc | 12 +++++++----- src/display/manager.h | 2 +- src/ui/element_file_list.cc | 3 +++ 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/scripts/checks.m4 b/scripts/checks.m4 index 48646f90..aa64b705 100644 --- a/scripts/checks.m4 +++ b/scripts/checks.m4 @@ -331,3 +331,24 @@ AC_DEFUN([TORRENT_WITHOUT_STATFS], [ fi ]) ]) + +AC_DEFUN([TORRENT_WITH_ADDRESS_SPACE], [ + AC_ARG_WITH(address-space, + AC_HELP_STRING([--with-address-space=MB], [Change the default address space size, default 1024 MB.]), + [ + if test ! -z $withval -a "$withval" != "yes" -a "$withval" != "no"; then + AC_DEFINE_UNQUOTED(DEFAULT_ADDRESS_SPACE_SIZE, [$withval]) + else + AC_MSG_ERROR(--with-address-space requires a parameter.) + fi + ], + [ + AC_CHECK_SIZEOF(long) + + if test "$ac_cv_sizeof_long" = "4"; then + AC_DEFINE(DEFAULT_ADDRESS_SPACE_SIZE, 4096, Default address space size.) + else + AC_DEFINE(DEFAULT_ADDRESS_SPACE_SIZE, 1024, Default address space size.) + fi + ]) +]) diff --git a/src/display/manager.cc b/src/display/manager.cc index 1bb5773e..1bfc577a 100644 --- a/src/display/manager.cc +++ b/src/display/manager.cc @@ -66,19 +66,21 @@ void Manager::schedule(Window* w, rak::timer t) { rak::priority_queue_erase(&m_scheduler, w->task_update()); rak::priority_queue_insert(&m_scheduler, w->task_update(), t); - schedule_update(); + schedule_update(50000); } void Manager::unschedule(Window* w) { rak::priority_queue_erase(&m_scheduler, w->task_update()); - schedule_update(); + schedule_update(50000); } void Manager::adjust_layout() { Canvas::redraw_std(); m_rootFrame.balance(0, 0, Canvas::get_screen_width(), Canvas::get_screen_height()); + + schedule_update(0); } void @@ -101,11 +103,11 @@ Manager::receive_update() { Canvas::do_update(); m_timeLastUpdate = cachedTime; - schedule_update(); + schedule_update(50000); } void -Manager::schedule_update() { +Manager::schedule_update(uint32_t minInterval) { if (m_scheduler.empty()) { rak::priority_queue_erase(&taskScheduler, &m_taskUpdate); return; @@ -113,7 +115,7 @@ Manager::schedule_update() { if (!m_taskUpdate.is_queued() || m_taskUpdate.time() > m_scheduler.top()->time()) { rak::priority_queue_erase(&taskScheduler, &m_taskUpdate); - rak::priority_queue_insert(&taskScheduler, &m_taskUpdate, std::max(m_scheduler.top()->time(), m_timeLastUpdate + 50000)); + rak::priority_queue_insert(&taskScheduler, &m_taskUpdate, std::max(m_scheduler.top()->time(), m_timeLastUpdate + minInterval)); } } diff --git a/src/display/manager.h b/src/display/manager.h index 602561d8..74a2cab5 100644 --- a/src/display/manager.h +++ b/src/display/manager.h @@ -63,7 +63,7 @@ public: Frame* root_frame() { return &m_rootFrame; } private: - void schedule_update(); + void schedule_update(uint32_t minInterval); bool m_forceRedraw; rak::timer m_timeLastUpdate; diff --git a/src/ui/element_file_list.cc b/src/ui/element_file_list.cc index 63dea7d3..d4dcc86f 100644 --- a/src/ui/element_file_list.cc +++ b/src/ui/element_file_list.cc @@ -40,6 +40,7 @@ #include #include "display/frame.h" +#include "display/manager.h" #include "display/window_file_list.h" #include "input/manager.h" @@ -77,6 +78,8 @@ ElementFileList::activate(display::Frame* frame, bool focus) { m_frame = frame; m_frame->initialize_window(m_window); + +// control->display()->adjust_layout(); } void