コード例 #1
0
ファイル: mmsfb.cpp プロジェクト: RomTok/disco-light
bool MMSFB::unlock() {
	PRINT_LOCK("mmsfb::unlock");

	if(this->Lock.unlock() == 0)
		return true;
	else
		return false;
}
コード例 #2
0
ファイル: ui_spawn.c プロジェクト: dbuzz/rtlab
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;
}
コード例 #3
0
ファイル: mmsfb.cpp プロジェクト: RomTok/disco-light
bool MMSFB::lock() {
	PRINT_LOCK("mmsfb::lock");
	this->Lock.lock();
	return true;
}