decoder/Control: wrap DetachedSong* in std::unique_ptr
This commit is contained in:
parent
9a8a3beae4
commit
28fdf1e9ed
@ -38,8 +38,6 @@ DecoderControl::DecoderControl(Mutex &_mutex, Cond &_client_cond,
|
||||
DecoderControl::~DecoderControl() noexcept
|
||||
{
|
||||
ClearError();
|
||||
|
||||
delete song;
|
||||
}
|
||||
|
||||
void
|
||||
@ -92,7 +90,7 @@ DecoderControl::IsCurrentSong(const DetachedSong &_song) const noexcept
|
||||
}
|
||||
|
||||
void
|
||||
DecoderControl::Start(DetachedSong *_song,
|
||||
DecoderControl::Start(std::unique_ptr<DetachedSong> _song,
|
||||
SongTime _start_time, SongTime _end_time,
|
||||
MusicBuffer &_buffer, MusicPipe &_pipe) noexcept
|
||||
{
|
||||
@ -101,8 +99,7 @@ DecoderControl::Start(DetachedSong *_song,
|
||||
assert(_song != nullptr);
|
||||
assert(_pipe.IsEmpty());
|
||||
|
||||
delete song;
|
||||
song = _song;
|
||||
song = std::move(_song);
|
||||
start_time = _start_time;
|
||||
end_time = _end_time;
|
||||
buffer = &_buffer;
|
||||
|
@ -31,8 +31,8 @@
|
||||
#include "ReplayGainMode.hxx"
|
||||
|
||||
#include <exception>
|
||||
|
||||
#include <utility>
|
||||
#include <memory>
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdint.h>
|
||||
@ -130,11 +130,8 @@ struct DecoderControl {
|
||||
* The song currently being decoded. This attribute is set by
|
||||
* the player thread, when it sends the #DecoderCommand::START
|
||||
* command.
|
||||
*
|
||||
* This is a duplicate, and must be freed when this attribute
|
||||
* is cleared.
|
||||
*/
|
||||
DetachedSong *song = nullptr;
|
||||
std::unique_ptr<DetachedSong> song;
|
||||
|
||||
/**
|
||||
* The initial seek position, e.g. to the start of a sub-track
|
||||
@ -382,7 +379,8 @@ public:
|
||||
* @param pipe the pipe which receives the decoded chunks (owned by
|
||||
* the caller)
|
||||
*/
|
||||
void Start(DetachedSong *song, SongTime start_time, SongTime end_time,
|
||||
void Start(std::unique_ptr<DetachedSong> song,
|
||||
SongTime start_time, SongTime end_time,
|
||||
MusicBuffer &buffer, MusicPipe &pipe) noexcept;
|
||||
|
||||
void Stop() noexcept;
|
||||
|
@ -360,7 +360,7 @@ Player::StartDecoder(MusicPipe &_pipe)
|
||||
|
||||
SongTime start_time = pc.next_song->GetStartTime() + pc.seek_time;
|
||||
|
||||
dc.Start(new DetachedSong(*pc.next_song),
|
||||
dc.Start(std::make_unique<DetachedSong>(*pc.next_song),
|
||||
start_time, pc.next_song->GetEndTime(),
|
||||
buffer, _pipe);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user