Fix other proxies
This commit is contained in:
parent
d29c1a5db5
commit
69debb202c
1 changed files with 4 additions and 22 deletions
|
|
@ -1,7 +1,6 @@
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
#include <cerrno>
|
#include <cerrno>
|
||||||
#include <chrono>
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
@ -255,7 +254,6 @@ struct MeterStreamData {
|
||||||
spa_hook listener{};
|
spa_hook listener{};
|
||||||
std::atomic<float> peak_left{0.0f};
|
std::atomic<float> peak_left{0.0f};
|
||||||
std::atomic<float> peak_right{0.0f};
|
std::atomic<float> peak_right{0.0f};
|
||||||
std::atomic<uint64_t> last_update_ms{0};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void NodeMeterProcess(void* data) {
|
void NodeMeterProcess(void* data) {
|
||||||
|
|
@ -293,10 +291,6 @@ void NodeMeterProcess(void* data) {
|
||||||
if (had_data) {
|
if (had_data) {
|
||||||
meter->peak_left.store(left, std::memory_order_relaxed);
|
meter->peak_left.store(left, std::memory_order_relaxed);
|
||||||
meter->peak_right.store(right, 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<uint64_t>(std::chrono::duration_cast<std::chrono::milliseconds>(now).count()),
|
|
||||||
std::memory_order_relaxed);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2153,14 +2147,6 @@ Result<MeterState> Client::NodeMeterPeak(NodeId node) const {
|
||||||
std::lock_guard<std::mutex> lock(impl_->cache_mutex);
|
std::lock_guard<std::mutex> lock(impl_->cache_mutex);
|
||||||
auto live_it = impl_->live_meters.find(node.value);
|
auto live_it = impl_->live_meters.find(node.value);
|
||||||
if (live_it != impl_->live_meters.end() && live_it->second) {
|
if (live_it != impl_->live_meters.end() && live_it->second) {
|
||||||
auto now_ms = static_cast<uint64_t>(
|
|
||||||
std::chrono::duration_cast<std::chrono::milliseconds>(
|
|
||||||
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;
|
MeterState state;
|
||||||
state.peak_left = live_it->second->peak_left.load(std::memory_order_relaxed);
|
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);
|
state.peak_right = live_it->second->peak_right.load(std::memory_order_relaxed);
|
||||||
|
|
@ -2176,14 +2162,6 @@ Result<MeterState> Client::NodeMeterPeak(NodeId node) const {
|
||||||
Result<MeterState> Client::MeterPeak() const {
|
Result<MeterState> Client::MeterPeak() const {
|
||||||
std::lock_guard<std::mutex> lock(impl_->cache_mutex);
|
std::lock_guard<std::mutex> lock(impl_->cache_mutex);
|
||||||
if (impl_->master_meter_data) {
|
if (impl_->master_meter_data) {
|
||||||
auto now_ms = static_cast<uint64_t>(
|
|
||||||
std::chrono::duration_cast<std::chrono::milliseconds>(
|
|
||||||
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;
|
MeterState state;
|
||||||
state.peak_left = impl_->master_meter_data->peak_left.load(std::memory_order_relaxed);
|
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);
|
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) {
|
for (auto& p : impl_->saved_link_proxies) {
|
||||||
if (p && p->output_port == out_port && p->input_port == in_port) {
|
if (p && p->output_port == out_port && p->input_port == in_port) {
|
||||||
spa_hook_remove(&p->listener);
|
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) {
|
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) {
|
for (auto& p : impl_->auto_link_proxies) {
|
||||||
if (p && p->output_port == out_port && p->input_port == in_port) {
|
if (p && p->output_port == out_port && p->input_port == in_port) {
|
||||||
spa_hook_remove(&p->listener);
|
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) {
|
std::erase_if(impl_->auto_link_proxies, [&](const auto& p) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue