static void *demod_thread_fn(void *arg) { struct fm_state *fm2 = arg; while (!do_exit) { full_demod(fm2); if (fm2->exit_flag) { do_exit = 1; rtlsdr_cancel_async(dev);} } return 0; }
static void *demod_thread_fn(void *arg) { struct fm_state *fm2 = arg; while (!do_exit) { safe_cond_wait(&data_ready, &data_mutex); full_demod(fm2); if (fm2->exit_flag) { do_exit = 1; //rtlsdr_cancel_async(dev); } } return 0; }
static void *demod_thread_fn(void *arg) { struct fm_state *fm2 = arg; while (!do_exit) { sem_wait(&data_ready); full_demod(fm2->buf, fm2->buf_len, fm2); if (!fm2->term_squelch_hits) { continue;} if (fm2->squelch_hits > fm2->term_squelch_hits) { do_exit = 1; rtlsdr_cancel_async(dev);} } return 0; }