Browse Source

* Added byte alignment check, if required use a different means of

reading ints from ProtocolBuffer.

* Don't round the task for ThrottleScheduler to the nearest second
since it has a sub-second timeout. Change the other timeouts to first
add cached and timespan, then round to the nearest seconds.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@529 e378c898-3ddf-0310-93e7-cc216c733640
pull/30/head
rakshasa 20 years ago
parent
commit
8b1afe2485
  1. 22
      scripts/common.m4
  2. 2
      src/display/window_download_list.cc
  3. 2
      src/display/window_download_statusbar.cc
  4. 2
      src/display/window_file_list.cc
  5. 2
      src/display/window_http_queue.cc
  6. 2
      src/display/window_peer_info.cc
  7. 2
      src/display/window_peer_list.cc
  8. 2
      src/display/window_statusbar.cc
  9. 2
      src/display/window_title.cc
  10. 2
      src/display/window_tracker_list.cc
  11. 4
      src/main.cc

22
scripts/common.m4

@ -118,3 +118,25 @@ AC_DEFUN([TORRENT_CHECK_EXECINFO], [
AC_MSG_RESULT(no)
])
])
AC_DEFUN([TORRENT_CHECK_ALIGN], [
AC_MSG_CHECKING(byte alignment)
AC_RUN_IFELSE(
[[#include <inttypes.h>
int main() {
char buf[5] = { 0, 0, 0, 0, 1 };
int i;
for (i = 0; i < 4; ++i)
if (*(uint32_t*)(buf + 1) == 0) return -1;
return 0;
}
]],
[
AC_MSG_RESULT(none)
], [
AC_DEFINE(USE_ALIGN, 1, Require byte alignment)
AC_MSG_RESULT(required)
])
])

2
src/display/window_download_list.cc

@ -58,7 +58,7 @@ WindowDownloadList::~WindowDownloadList() {
void
WindowDownloadList::redraw() {
utils::displayScheduler.insert(&m_taskUpdate, utils::Timer::cache().round_seconds() + 1000000);
utils::displayScheduler.insert(&m_taskUpdate, (utils::Timer::cache() + 1000000).round_seconds());
m_canvas->erase();

2
src/display/window_download_statusbar.cc

@ -53,7 +53,7 @@ WindowDownloadStatusbar::WindowDownloadStatusbar(core::Download* d) :
void
WindowDownloadStatusbar::redraw() {
utils::displayScheduler.insert(&m_taskUpdate, utils::Timer::cache().round_seconds() + 1000000);
utils::displayScheduler.insert(&m_taskUpdate, (utils::Timer::cache() + 1000000).round_seconds());
m_canvas->erase();

2
src/display/window_file_list.cc

@ -53,7 +53,7 @@ WindowFileList::WindowFileList(core::Download* d, unsigned int* focus) :
void
WindowFileList::redraw() {
utils::displayScheduler.insert(&m_taskUpdate, utils::Timer::cache().round_seconds() + 10 * 1000000);
utils::displayScheduler.insert(&m_taskUpdate, (utils::Timer::cache() + 10 * 1000000).round_seconds());
m_canvas->erase();
if (m_download->get_download().get_entry_size() == 0 ||

2
src/display/window_http_queue.cc

@ -58,7 +58,7 @@ WindowHttpQueue::WindowHttpQueue(core::HttpQueue* q) :
void
WindowHttpQueue::redraw() {
utils::displayScheduler.insert(&m_taskUpdate, utils::Timer::cache().round_seconds() + 1000000);
utils::displayScheduler.insert(&m_taskUpdate, (utils::Timer::cache() + 1000000).round_seconds());
cleanup_list();

2
src/display/window_peer_info.cc

@ -57,7 +57,7 @@ WindowPeerInfo::WindowPeerInfo(core::Download* d, PList* l, PList::iterator* f)
void
WindowPeerInfo::redraw() {
utils::displayScheduler.insert(&m_taskUpdate, utils::Timer::cache().round_seconds() + 1000000);
utils::displayScheduler.insert(&m_taskUpdate, (utils::Timer::cache() + 1000000).round_seconds());
m_canvas->erase();
int y = 0;

2
src/display/window_peer_list.cc

@ -56,7 +56,7 @@ WindowPeerList::WindowPeerList(core::Download* d, PList* l, PList::iterator* f)
void
WindowPeerList::redraw() {
utils::displayScheduler.insert(&m_taskUpdate, utils::Timer::cache().round_seconds() + 1000000);
utils::displayScheduler.insert(&m_taskUpdate, (utils::Timer::cache() + 1000000).round_seconds());
m_canvas->erase();
int x = 2;

2
src/display/window_statusbar.cc

@ -54,7 +54,7 @@ WindowStatusbar::WindowStatusbar(core::Manager* c) :
void
WindowStatusbar::redraw() {
utils::displayScheduler.insert(&m_taskUpdate, utils::Timer::cache().round_seconds() + 1000000);
utils::displayScheduler.insert(&m_taskUpdate, (utils::Timer::cache() + 1000000).round_seconds());
m_canvas->erase();

2
src/display/window_title.cc

@ -48,7 +48,7 @@ WindowTitle::WindowTitle(const std::string& s) :
void
WindowTitle::redraw() {
utils::displayScheduler.insert(&m_taskUpdate, utils::Timer::cache().round_seconds() + 1000000);
utils::displayScheduler.insert(&m_taskUpdate, (utils::Timer::cache() + 1000000).round_seconds());
m_canvas->erase();
m_canvas->print(std::max(0, (m_canvas->get_width() - (int)m_title.size()) / 2 - 4), 0,

2
src/display/window_tracker_list.cc

@ -55,7 +55,7 @@ WindowTrackerList::WindowTrackerList(core::Download* d, unsigned int* focus) :
void
WindowTrackerList::redraw() {
// TODO: Make this depend on tracker signal.
utils::displayScheduler.insert(&m_taskUpdate, utils::Timer::cache().round_seconds() + 10 * 1000000);
utils::displayScheduler.insert(&m_taskUpdate, (utils::Timer::cache() + 10 * 1000000).round_seconds());
m_canvas->erase();
int pos = 0;

4
src/main.cc

@ -225,13 +225,15 @@ main(int argc, char** argv) {
while (!uiControl.is_shutdown_completed()) {
utils::Timer::update();
utils::taskScheduler.execute(utils::Timer::cache());
// This needs to be called every second or so. Currently done by
// the throttle task in libtorrent.
if (!utils::displayScheduler.empty() &&
utils::displayScheduler.get_next_timeout() <= utils::Timer::cache())
uiControl.get_display().do_update();
//utils::Timer::update();
// Do shutdown check before poll, not after.
uiControl.get_core().get_poll_manager()->poll(!utils::taskScheduler.empty() ?
utils::taskScheduler.get_next_timeout() - utils::Timer::cache() :

Loading…
Cancel
Save