Commit graph

4994 commits

Author SHA1 Message Date
Ivan Sorokin
eb46326d23 use set_alert_dispatch instead of timer to get an alerts from libtorrent
libtorrent allows setting a custom dispatch handler that is invoked in
libtorrent thread when new alerts are incoming. QAlertDispatcher is a
class that allows to translate these alerts to UI thread.

The concept is very simple:

1. On initialization QAlertDispatcher constructor calls set_alert_dispatch() passing
 QAlertDispatcher::dispatch as argument.

2. On deinitialization destructor calls set_alert_dispatch() passing a empty
 function. (line 25) libtorrent handles thos and switches back to queuing
 alerts in queue.

3. QAlertDispatcher::dispatch() adds alert to queue and notifies UI thread that new
 alerts are incoming. Enqueuing is done in function enqueueToMainThread().
 The invariant of class is the following:

    if alert queue is not empty, in message loop of UI thread contains a queued
    invocation of deliverSignal().

4. When message loop is pumped UI thread execute deliverSignal() function.
 It emit appropriate signal and if queue is still not empty (for example
 if slot doesn't grab alerts) rewind enqueuing to main thread.

This is a idea. But here is some details.

1. When QAlertDispatcher is destoyed, libtorrent still can call
QAlertDispatcher::dispatch a few times after destruction. This is
handled by passing a "tag". A tag is a object that references QAlertDispatch.
Tag could be invalidated. So on destruction QAlertDispatcher invalidates a tag
and then unsubscribes from alerts. When QAlertDispatcher::dispatch is called
with invalid tag it simply discard an alert.

    Therefore we could drop a few alerts during unsubscription. So we unsubscribe
    only at exit when missing some alerts is not a problem.

2. Another problem is in QBtSession::saveFastResumeData(). It pumps alert
queue synchronously. My first attempt was to destroy QAlertDispatcher
and then pump libtorrent queue. But as I was afraid of losing alerts I
supported synchronous querying of alerts in QAlertDispatcher.
(QAlertDispatcher::getPendingAlerts)

Conflicts:
	src/qtlibtorrent/qbtsession.cpp
2014-06-02 00:31:45 +04:00
Ivan Sorokin
329b754197 cache torrent_status 2014-06-02 00:31:42 +04:00
Ivan Sorokin
5af778bc93 don't make the same request to TorrentModelItem twice 2014-05-25 12:32:09 +04:00
Ivan Sorokin
1c98c11dd0 speed up icon loading 2014-05-25 12:32:09 +04:00
Ivan Sorokin
bbc4080a5d fewer calls to hash() 2014-05-25 12:32:09 +04:00
sledgehammer999
5d2663660d Count magnet links in the 'downloading' filter and make them prevent system inhibition. Closes #1558 2014-05-15 22:01:27 +03:00
sledgehammer999
659e0b7fef Fix tracker announcing problem(hit-and-run) when many torrents are being active. Closes #1571 2014-05-15 21:37:31 +03:00
sledgehammer999
c0b3ad7ee3 Fix crash when the selected torrent disappears from the transfer list. Closes #1661 2014-05-15 20:59:34 +03:00
sledgehammer999
81fa246687 Merge pull request #1685 from sorokin/fix-exception-in-prop-widget
Don't show availability bar for magnet links
2014-05-15 00:26:41 +03:00
Ivan Sorokin
765253234c Don't show availability bar for magnet links
This commit fixes an exception in PropertiesWidget:

"Caught exception in PropertiesWidget::loadDynamicData():  invalid
torrent handle used"

This exception occurs when an user clicks on a torrent that doesn't have
a metadata (when a magnet link is not resolved yet). One should not call
torrent_handle::get_torrent_info when torrent doesn't have a metadata.
2014-05-15 01:21:56 +04:00
sledgehammer999
e0ae505bb9 Fix nox build on MAC OSX. 2014-05-13 19:23:58 +03:00
sledgehammer999
5dea64ca16 Merge pull request #1676 from sorokin/fix-open-file
fix issue #1674: AddNewTorrentDialog is shown again and again even if checkbox "dont ask me again" is set
2014-05-12 14:52:47 +03:00
Ivan Sorokin
93bacc62f1 fix issue #1674: AddNewTorrentDialog is shown again and again even if checkbox "dont ask me again" is set 2014-05-11 19:37:33 +04:00
sledgehammer999
baaf575eee Fix libtorrent 1.0.0 compilation. Closes #1659 2014-05-10 00:13:20 +03:00
sledgehammer999
e6b2919eb2 Support out of srcdir builds. 2014-05-08 00:57:11 +03:00
sledgehammer999
9714b2ede9 Fix weird ratio values when torrent was imported or downloaded history was lost due to crash. 2014-05-05 21:30:15 +03:00
sledgehammer999
f99f5f5c7e Enable system tray in MACOSX (Nick Korotysh). 2014-05-05 21:23:32 +03:00
sledgehammer999
c5804aac3c Update README file. 2014-05-04 16:28:29 +03:00
sledgehammer999
3c61e2a881 Merge pull request #1437 from Fisiu/master
Use markdown for readme file.
2014-05-04 06:24:04 -07:00
Mariusz Fik
756584043b Use markdown in README and display travis-ci build status for master branch.
Signed-off-by: Mariusz Fik <fisiu@opensuse.org>
2014-05-04 15:17:36 +02:00
sledgehammer999
b93d093af1 Updated Changelog. 2014-05-04 15:41:47 +03:00
sledgehammer999
32becf1fca Fix RSS feed icon. The tmp file gets deleted in the feed destructor. Closes #1639 2014-05-04 15:38:28 +03:00
sledgehammer999
4376e81f78 Fix autoupdater. Send our user-agent to sourceforge.net
Conflicts:
	src/programupdater.cpp
2014-05-04 15:38:12 +03:00
sledgehammer999
71e5c9e17b Fix code style.
(thanks to glassez)
2014-05-04 15:31:27 +03:00
sledgehammer999
08af87abb8 Fix Travis. 2014-05-04 15:31:26 +03:00
sledgehammer999
380438f99b Migrate the build system to autotools. 2014-05-04 15:28:58 +03:00
sledgehammer999
e8c14f3507 Use the new Http classes. 2014-05-04 15:28:56 +03:00
sledgehammer999
6096506bd6 Implement alternatives to QHttpRequestHeader and QHttpResponseHeader. 2014-05-04 15:28:55 +03:00
sledgehammer999
ef3f7d18c9 Fix compilation with Qt5. 2014-05-04 15:28:54 +03:00
Vladimir Golovnev (Glassez)
ba1f4a9b7f Update QtSingleApplication. 2014-05-02 00:00:05 +03:00
Nick Tiskov
138c3dc3cb Fix translations bundled with Qt. 2014-05-02 00:00:04 +03:00
Vladimir Golovnev (Glassez)
ce3aac5f9d Fix functions and macros using to support both Qt4 and Qt5. 2014-05-02 00:00:03 +03:00
sledgehammer999
763d8a392f Revert "Point travis to the new svn repo of libtorrent."
This reverts commit f1d807da4f.
2014-05-01 23:56:21 +03:00
sledgehammer999
f1d807da4f Point travis to the new svn repo of libtorrent. 2014-03-01 13:00:44 +02:00
sledgehammer999
0303d2bf55 Merge pull request #1421 from alfrix/queue_sort
Fix queue sorting order fixes #1120
2014-02-11 00:02:45 +02:00
alfrix
85cfe464f9 Fix queue sorting order fixes #1120 2014-02-09 21:27:42 -03:00
sledgehammer999
33b0a2b55f Fix missing percentage signs. Closes #1392. 2014-02-06 00:49:17 +02:00
sledgehammer999
72ae2cb503 Pretty up last commit. 2014-02-05 21:22:14 +02:00
sledgehammer999
b2544f867c Merge pull request #1365 from alfrix/master
Add button for links in toolbar (fixes #450)
2014-02-05 21:19:57 +02:00
sledgehammer999
acb32d41fa Merge pull request #1375 from glassez/win-startup
Fix qBittorrent run on Windows startup.
2014-02-05 21:12:23 +02:00
sledgehammer999
3cd72e5e63 Merge pull request #1382 from bob23450/master
Fix nox build. Closes #1368
2014-02-05 21:05:48 +02:00
bob23450
6b26adfed2 Fix nox build. Closes #1368 2014-02-05 09:17:27 +01:00
Vladimir Golovnev (Glassez)
64b06c4612 Fix qBittorrent run on Windows startup. 2014-02-03 21:12:47 +04:00
alfrix
494fc54e6f Add button for links in toolbar (fixes #450 2014-02-02 16:48:51 -03:00
sledgehammer999
f5cd39cfba Merge pull request #1328 from glassez/webui-sort
Fix WebUI sort by size/speed (part 2)
2014-02-02 10:12:01 -08:00
sledgehammer999
c59793b33f Correctly restore 'name' column width when loading magnet links in the 'Add new torrent dialog'. Closes #1334. 2014-02-02 20:05:51 +02:00
sledgehammer999
202006bdd1 Reuse code in AddNewTorrentDialog. #894. 2014-02-02 20:05:50 +02:00
sledgehammer999
7348b8903c Correctly resize 'name' column of the content tab. Closes #1360. 2014-02-02 20:05:14 +02:00
sledgehammer999
a27867ae2b Bring dialog boxes in the front when qbt doesn't have focus.
Code inspired by glassez patch.
2014-02-01 14:02:37 +02:00
Vladimir Golovnev (Glassez)
c3942fb0b3 Fix WebUI sort by ratio for some locales (with comma as decimal point). 2014-01-27 08:44:36 +04:00