forked from premiere/premiere-libtorrent
release_files now keeps the torrent object alive
This commit is contained in:
parent
973e7be386
commit
16886741d0
|
@ -551,6 +551,7 @@ namespace libtorrent
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void on_files_released(int ret, disk_io_job const& j);
|
void on_files_released(int ret, disk_io_job const& j);
|
||||||
|
void on_torrent_paused(int ret, disk_io_job const& j);
|
||||||
void on_storage_moved(int ret, disk_io_job const& j);
|
void on_storage_moved(int ret, disk_io_job const& j);
|
||||||
|
|
||||||
void on_piece_verified(int ret, disk_io_job const& j
|
void on_piece_verified(int ret, disk_io_job const& j
|
||||||
|
|
|
@ -1024,11 +1024,26 @@ namespace libtorrent
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
disconnect_all();
|
disconnect_all();
|
||||||
if (m_owning_storage.get()) m_storage->async_release_files();
|
if (m_owning_storage.get())
|
||||||
|
m_storage->async_release_files(
|
||||||
|
bind(&torrent::on_files_released, shared_from_this(), _1, _2));
|
||||||
|
|
||||||
m_owning_storage = 0;
|
m_owning_storage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void torrent::on_files_released(int ret, disk_io_job const& j)
|
void torrent::on_files_released(int ret, disk_io_job const& j)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
session_impl::mutex_t::scoped_lock l(m_ses.m_mutex);
|
||||||
|
|
||||||
|
if (alerts().should_post(alert::warning))
|
||||||
|
{
|
||||||
|
alerts().post_alert(torrent_paused_alert(get_handle(), "torrent paused"));
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void torrent::on_torrent_paused(int ret, disk_io_job const& j)
|
||||||
{
|
{
|
||||||
session_impl::mutex_t::scoped_lock l(m_ses.m_mutex);
|
session_impl::mutex_t::scoped_lock l(m_ses.m_mutex);
|
||||||
|
|
||||||
|
@ -2117,7 +2132,9 @@ namespace libtorrent
|
||||||
, bind(&peer_connection::disconnect, _1));
|
, bind(&peer_connection::disconnect, _1));
|
||||||
|
|
||||||
assert(m_storage);
|
assert(m_storage);
|
||||||
m_storage->async_release_files();
|
// we need to keep the object alive during this operation
|
||||||
|
m_storage->async_release_files(
|
||||||
|
bind(&torrent::on_files_released, shared_from_this(), _1, _2));
|
||||||
}
|
}
|
||||||
|
|
||||||
// called when torrent is complete (all pieces downloaded)
|
// called when torrent is complete (all pieces downloaded)
|
||||||
|
@ -2549,10 +2566,8 @@ namespace libtorrent
|
||||||
if (m_owning_storage.get())
|
if (m_owning_storage.get())
|
||||||
{
|
{
|
||||||
assert(m_storage);
|
assert(m_storage);
|
||||||
// TOOD: add a callback which posts
|
|
||||||
// an alert for the client to sync. with
|
|
||||||
m_storage->async_release_files(
|
m_storage->async_release_files(
|
||||||
bind(&torrent::on_files_released, shared_from_this(), _1, _2));
|
bind(&torrent::on_torrent_paused, shared_from_this(), _1, _2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue