filter/Plugin: return std::unique_ptr<PreparedFilter>
This commit is contained in:
@@ -27,21 +27,20 @@
|
||||
class FilterObserver::PreparedProxy final : public PreparedFilter {
|
||||
FilterObserver &observer;
|
||||
|
||||
PreparedFilter *const prepared_filter;
|
||||
std::unique_ptr<PreparedFilter> prepared_filter;
|
||||
Proxy *child = nullptr;
|
||||
|
||||
public:
|
||||
PreparedProxy(FilterObserver &_observer,
|
||||
PreparedFilter *_prepared_filter)
|
||||
std::unique_ptr<PreparedFilter> _prepared_filter)
|
||||
:observer(_observer),
|
||||
prepared_filter(_prepared_filter) {}
|
||||
prepared_filter(std::move(_prepared_filter)) {}
|
||||
|
||||
~PreparedProxy() {
|
||||
assert(child == nullptr);
|
||||
assert(observer.proxy == this);
|
||||
|
||||
observer.proxy = nullptr;
|
||||
delete prepared_filter;
|
||||
}
|
||||
|
||||
void Clear(gcc_unused Proxy *_child) {
|
||||
@@ -95,12 +94,14 @@ FilterObserver::PreparedProxy::Open(AudioFormat &af)
|
||||
return child = new Proxy(*this, f);
|
||||
}
|
||||
|
||||
PreparedFilter *
|
||||
FilterObserver::Set(PreparedFilter *pf)
|
||||
std::unique_ptr<PreparedFilter>
|
||||
FilterObserver::Set(std::unique_ptr<PreparedFilter> pf)
|
||||
{
|
||||
assert(proxy == nullptr);
|
||||
|
||||
return proxy = new PreparedProxy(*this, pf);
|
||||
auto p = std::make_unique<PreparedProxy>(*this, std::move(pf));
|
||||
proxy = p.get();
|
||||
return p;
|
||||
}
|
||||
|
||||
Filter *
|
||||
|
||||
Reference in New Issue
Block a user