Partition: add a local idle_monitor

Make idle events per-partition, but leave Instance::EmitIdle() and its
underlying idle_monitor which broadcasts idle events to all
partitions.
This commit is contained in:
Max Kellermann
2020-01-20 13:28:58 +01:00
parent 879bafb837
commit 49309b419f
6 changed files with 32 additions and 26 deletions

View File

@@ -180,10 +180,7 @@ Instance::OnRemoteTag(const char *uri, const Tag &tag) noexcept
void
Instance::OnIdle(unsigned flags) noexcept
{
/* send "idle" notifications to all subscribed
clients */
client_list->IdleAdd(flags);
if (flags & (IDLE_PLAYLIST|IDLE_PLAYER|IDLE_MIXER|IDLE_OUTPUT))
OnStateModified();
/* broadcast to all partitions */
for (auto &partition : partitions)
partition.EmitIdle(flags);
}