diff --git a/src/warppipe.cpp b/src/warppipe.cpp index 91ac6cc..ec57de8 100644 --- a/src/warppipe.cpp +++ b/src/warppipe.cpp @@ -1,7 +1,6 @@ #include #include #include -#include #include #include #include @@ -255,7 +254,6 @@ struct MeterStreamData { spa_hook listener{}; std::atomic peak_left{0.0f}; std::atomic peak_right{0.0f}; - std::atomic last_update_ms{0}; }; void NodeMeterProcess(void* data) { @@ -293,10 +291,6 @@ void NodeMeterProcess(void* data) { if (had_data) { meter->peak_left.store(left, std::memory_order_relaxed); meter->peak_right.store(right, std::memory_order_relaxed); - auto now = std::chrono::steady_clock::now().time_since_epoch(); - meter->last_update_ms.store( - static_cast(std::chrono::duration_cast(now).count()), - std::memory_order_relaxed); } } @@ -2153,14 +2147,6 @@ Result Client::NodeMeterPeak(NodeId node) const { std::lock_guard lock(impl_->cache_mutex); auto live_it = impl_->live_meters.find(node.value); if (live_it != impl_->live_meters.end() && live_it->second) { - auto now_ms = static_cast( - std::chrono::duration_cast( - std::chrono::steady_clock::now().time_since_epoch()) - .count()); - auto last = live_it->second->last_update_ms.load(std::memory_order_relaxed); - if (last > 0 && (now_ms - last) > 200) { - return {Status::Ok(), MeterState{0.0f, 0.0f}}; - } MeterState state; state.peak_left = live_it->second->peak_left.load(std::memory_order_relaxed); state.peak_right = live_it->second->peak_right.load(std::memory_order_relaxed); @@ -2176,14 +2162,6 @@ Result Client::NodeMeterPeak(NodeId node) const { Result Client::MeterPeak() const { std::lock_guard lock(impl_->cache_mutex); if (impl_->master_meter_data) { - auto now_ms = static_cast( - std::chrono::duration_cast( - std::chrono::steady_clock::now().time_since_epoch()) - .count()); - auto last = impl_->master_meter_data->last_update_ms.load(std::memory_order_relaxed); - if (last > 0 && (now_ms - last) > 200) { - return {Status::Ok(), MeterState{0.0f, 0.0f}}; - } MeterState state; state.peak_left = impl_->master_meter_data->peak_left.load(std::memory_order_relaxed); state.peak_right = impl_->master_meter_data->peak_right.load(std::memory_order_relaxed); @@ -2434,6 +2412,8 @@ Status Client::RemoveLink(LinkId link) { for (auto& p : impl_->saved_link_proxies) { if (p && p->output_port == out_port && p->input_port == in_port) { spa_hook_remove(&p->listener); + if (p->proxy) pw_proxy_destroy(p->proxy); + p->proxy = nullptr; } } std::erase_if(impl_->saved_link_proxies, [&](const auto& p) { @@ -2442,6 +2422,8 @@ Status Client::RemoveLink(LinkId link) { for (auto& p : impl_->auto_link_proxies) { if (p && p->output_port == out_port && p->input_port == in_port) { spa_hook_remove(&p->listener); + if (p->proxy) pw_proxy_destroy(p->proxy); + p->proxy = nullptr; } } std::erase_if(impl_->auto_link_proxies, [&](const auto& p) {