/* Finished */ static inline void mpegts_network_scan_mux_done0 ( mpegts_mux_t *mm, mpegts_mux_scan_result_t result, int weight ) { mpegts_network_t *mn = mm->mm_network; mpegts_mux_unsubscribe_by_name(mm, "scan"); if (mm->mm_scan_state == MM_SCAN_STATE_PEND) { if (weight || mn->mn_idlescan) { if (!weight) mm->mm_scan_weight = SUBSCRIPTION_PRIO_SCAN_IDLE; TAILQ_REMOVE(&mn->mn_scan_pend, mm, mm_scan_link); TAILQ_INSERT_SORTED_R(&mn->mn_scan_pend, mpegts_mux_queue, mm, mm_scan_link, mm_cmp); gtimer_arm(&mn->mn_scan_timer, mpegts_network_scan_timer_cb, mn, 10); weight = 0; } else { mpegts_network_scan_queue_del(mm); } } else { if (!weight && mn->mn_idlescan) weight = SUBSCRIPTION_PRIO_SCAN_IDLE; mpegts_network_scan_queue_del(mm); } if (result != MM_SCAN_NONE && mm->mm_scan_result != result) { mm->mm_scan_result = result; mm->mm_config_save(mm); } /* Re-enable? */ if (weight > 0) mpegts_network_scan_queue_add(mm, weight, mm->mm_scan_flags, 10); }
/* Finished */ static inline void mpegts_network_scan_mux_done0 ( mpegts_mux_t *mm, mpegts_mux_scan_result_t result, int weight ) { mpegts_mux_unsubscribe_by_name(mm, "scan"); mpegts_network_scan_queue_del(mm); if (result != MM_SCAN_NONE && mm->mm_scan_result != result) { mm->mm_scan_result = result; mm->mm_config_save(mm); } /* Re-enable? */ if (weight > 0) mpegts_network_scan_queue_add(mm, weight); }
/* Finished */ static inline void mpegts_network_scan_mux_done0 ( mpegts_mux_t *mm, mpegts_mux_scan_result_t result, int weight ) { mpegts_network_t *mn = mm->mm_network; mpegts_mux_scan_state_t state = mm->mm_scan_state; /* prevent double del: */ /* mpegts_mux_stop -> mpegts_network_scan_mux_cancel */ mm->mm_scan_state = MM_SCAN_STATE_IDLE; mpegts_mux_unsubscribe_by_name(mm, "scan"); mm->mm_scan_state = state; if (state == MM_SCAN_STATE_PEND) { if (weight || mn->mn_idlescan) { if (!weight) mm->mm_scan_weight = SUBSCRIPTION_PRIO_SCAN_IDLE; TAILQ_REMOVE(&mn->mn_scan_pend, mm, mm_scan_link); TAILQ_INSERT_SORTED_R(&mn->mn_scan_pend, mpegts_mux_queue, mm, mm_scan_link, mm_cmp); mtimer_arm_rel(&mn->mn_scan_timer, mpegts_network_scan_timer_cb, mn, sec2mono(10)); weight = 0; } else { mpegts_network_scan_queue_del(mm); } } else { if (!weight && mn->mn_idlescan) weight = SUBSCRIPTION_PRIO_SCAN_IDLE; mpegts_network_scan_queue_del(mm); } if (result != MM_SCAN_NONE && mm->mm_scan_result != result) { mm->mm_scan_result = result; idnode_changed(&mm->mm_id); } /* Re-enable? */ if (weight > 0) mpegts_network_scan_queue_add(mm, weight, mm->mm_scan_flags, 10); }