From 1eca773145a0c69579627e364761c1bb8cf40540 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 18 Oct 2019 21:52:24 +0200 Subject: [PATCH] media-session: only deal with state when it changed Look at the change_mask and only deal with the state when it changed or else we might start the idle timer again when something unrelated changed. --- src/examples/media-session/media-session.c | 24 ++++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/examples/media-session/media-session.c b/src/examples/media-session/media-session.c index 68f387dc3..5d54f1d80 100644 --- a/src/examples/media-session/media-session.c +++ b/src/examples/media-session/media-session.c @@ -305,17 +305,19 @@ static void node_event_info(void *object, const struct pw_node_info *info) pw_log_debug(NAME" %p: info for node %d type %d", impl, n->obj.id, n->type); n->info = pw_node_info_update(n->info, info); - switch (info->state) { - case PW_NODE_STATE_IDLE: - on_node_idle(impl, n); - break; - case PW_NODE_STATE_RUNNING: - on_node_running(impl, n); - break; - case PW_NODE_STATE_SUSPENDED: - break; - default: - break; + if (info->change_mask & PW_NODE_CHANGE_MASK_STATE) { + switch (info->state) { + case PW_NODE_STATE_IDLE: + on_node_idle(impl, n); + break; + case PW_NODE_STATE_RUNNING: + on_node_running(impl, n); + break; + case PW_NODE_STATE_SUSPENDED: + break; + default: + break; + } } }