mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-12-21 08:09:35 +08:00
Use new create_torrent constructor were available.
This commit is contained in:
parent
ad4b691fa5
commit
b5f81a34cb
@ -27,6 +27,8 @@
|
||||
* exception statement from your version.
|
||||
*/
|
||||
|
||||
#include <type_traits>
|
||||
|
||||
#include <QDebug>
|
||||
#include <QStringList>
|
||||
#include <QFile>
|
||||
@ -192,6 +194,31 @@ const qreal TorrentHandle::NO_RATIO_LIMIT = -1.;
|
||||
|
||||
const qreal TorrentHandle::MAX_RATIO = 9999.;
|
||||
|
||||
// The new libtorrent::create_torrent constructor appeared after 1.0.11 in RC_1_0
|
||||
// and after 1.1.1 in RC_1_1. Since it fixed an ABI incompatibility with previous versions
|
||||
// distros might choose to backport it onto 1.0.11 and 1.1.1 respectively.
|
||||
// So we need a way to detect its presence without relying solely on the LIBTORRENT_VERSION_NUM.
|
||||
// Relevant links:
|
||||
// 1. https://github.com/arvidn/libtorrent/issues/1696
|
||||
// 2. https://github.com/qbittorrent/qBittorrent/issues/6406
|
||||
// The following can be removed after one or two libtorrent releases on each branch.
|
||||
namespace
|
||||
{
|
||||
// new constructor is available
|
||||
template<typename T, typename std::enable_if<std::is_constructible<T, libt::torrent_info, bool>::value, int>::type = 0>
|
||||
T makeTorrentCreator(const libtorrent::torrent_info & ti)
|
||||
{
|
||||
return T(ti, true);
|
||||
}
|
||||
|
||||
// new constructor isn't available
|
||||
template<typename T, typename std::enable_if<!std::is_constructible<T, libt::torrent_info, bool>::value, int>::type = 0>
|
||||
T makeTorrentCreator(const libtorrent::torrent_info & ti)
|
||||
{
|
||||
return T(ti);
|
||||
}
|
||||
}
|
||||
|
||||
TorrentHandle::TorrentHandle(Session *session, const libtorrent::torrent_handle &nativeHandle,
|
||||
const AddTorrentData &data)
|
||||
: QObject(session)
|
||||
@ -1318,7 +1345,7 @@ bool TorrentHandle::saveTorrentFile(const QString &path)
|
||||
{
|
||||
if (!m_torrentInfo.isValid()) return false;
|
||||
|
||||
libt::create_torrent torrentCreator(*(m_torrentInfo.nativeInfo()));
|
||||
libt::create_torrent torrentCreator = makeTorrentCreator<libt::create_torrent>(*(m_torrentInfo.nativeInfo()));
|
||||
libt::entry torrentEntry = torrentCreator.generate();
|
||||
|
||||
QVector<char> out;
|
||||
|
Loading…
Reference in New Issue
Block a user