bool MMSFB::unlock() { PRINT_LOCK("mmsfb::unlock"); if(this->Lock.unlock() == 0) return true; else return false; }
static void * ui_updater_thr(void *args) { PSUIUPDATERPARAMS params = (PSUIUPDATERPARAMS)args; uint8_t active = 1; HPINLIST pin_list; HPIN pin; PSMETABUFER meta; TIMING_MEASURE_AREA; pin_list = pin_list_create(2); pin_list_add_custom_fd(pin_list, params->params->infd, PIN_TYPE_CUSTOM); printf("[updater] started\n"); while (active && pin_list_wait(pin_list, -1) != PIN_ERROR) { while ( (pin = pin_list_get_next_event(pin_list, PIN_EVENT_READ)) != NULL ) { pin_read_raw(pin, &meta, PTR_SIZE); if (meta == MESSAGE_END) { active = 0; continue; } if ( meta != NULL ) { TIMING_START(); /* calculate data. send to ui thread */ #if 1 /* samples debug print */ PRINT_LOCK(params->params->print_mutex); print_header((PSSAMPLEHEADER)meta->left->buf, meta->left->buf + HEADER_SIZE, meta->left->size - HEADER_SIZE); print_header((PSSAMPLEHEADER)meta->right->buf, meta->right->buf + HEADER_SIZE, meta->right->size - HEADER_SIZE); print_header((PSSAMPLEHEADER)meta->left_fft->buf, meta->left_fft->buf + HEADER_SIZE, meta->left_fft->size - HEADER_SIZE); print_header((PSSAMPLEHEADER)meta->right_fft->buf, meta->right_fft->buf + HEADER_SIZE, meta->right_fft->size - HEADER_SIZE); print_header((PSSAMPLEHEADER)meta->sd_log->buf, meta->sd_log->buf + HEADER_SIZE, meta->sd_log->size - HEADER_SIZE); print_header((PSSAMPLEHEADER)meta->sd_mod->buf, meta->sd_mod->buf + HEADER_SIZE, meta->sd_mod->size - HEADER_SIZE); PRINT_UNLOCK(params->params->print_mutex); #endif #if 1 /* draw data */ glwin_draw_data(GRAPH_SAMPLES, (float *)(meta->left->buf + HEADER_SIZE), (float *)(meta->right->buf + HEADER_SIZE), ((PSSAMPLEHEADER)meta->right->buf)->samples); glwin_draw_data_c(GRAPH_FFT, (float *)(meta->left_fft->buf + HEADER_SIZE), (float *)(meta->right_fft->buf + HEADER_SIZE), ((PSSAMPLEHEADER)meta->right_fft->buf)->samples); glwin_draw_data(GRAPH_SDENS, (float *)(meta->sd_log->buf + HEADER_SIZE), (float *)(meta->sd_mod->buf + HEADER_SIZE), ((PSSAMPLEHEADER)meta->sd_mod->buf)->samples); glwin_render_data(); #endif metabuf_free(meta); TIMING_END(" updater"); } //buf_free(sample); } } return NULL; }
bool MMSFB::lock() { PRINT_LOCK("mmsfb::lock"); this->Lock.lock(); return true; }