/* Initialises GL preview state and creates the dispmanx native window. * @param state Pointer to the GL preview state. * @return Zero if successful. */ int raspitex_init(RASPITEX_STATE *state) { VCOS_STATUS_T status; int rc; vcos_init(); vcos_log_register("RaspiTex", VCOS_LOG_CATEGORY); vcos_log_set_level(VCOS_LOG_CATEGORY, state->verbose ? VCOS_LOG_INFO : VCOS_LOG_WARN); vcos_log_trace("%s", VCOS_FUNCTION); status = vcos_semaphore_create(&state->capture.start_sem, "glcap_start_sem", 1); if (status != VCOS_SUCCESS) goto error; status = vcos_semaphore_create(&state->capture.completed_sem, "glcap_completed_sem", 0); if (status != VCOS_SUCCESS) goto error; switch (state->scene_id) { case RASPITEX_SCENE_SQUARE: rc = square_open(state); break; case RASPITEX_SCENE_MIRROR: rc = mirror_open(state); break; case RASPITEX_SCENE_TEAPOT: rc = teapot_open(state); break; case RASPITEX_SCENE_YUV: rc = yuv_open(state); break; case RASPITEX_SCENE_SOBEL: rc = sobel_open(state); break; case RASPITEXT_SCENE_BGS_SIMPLE: rc = gl_simple_open(state); break; default: rc = -1; break; } if (rc != 0) goto error; return 0; error: vcos_log_error("%s: failed", VCOS_FUNCTION); return -1; }
int main (int argc, char *argv[]) { Mirror *m; VEvent *vh; print_privs(); m = mirror_open(NULL); while( (vh = mirror_get_event(m)) ) { printf("Received event:\n"); vevent_print(vh); printf("\n"); switch(vh->cmd) { case V_MIRRORID: mirror_setid(m,vh->data); report_mirror_id(m); break; case V_ORIENTATION_UP: case V_ORIENTATION_DOWN: m->state = vh->cmd; report_mirror_state(m); break; case V_SHOW_TAG: case V_HIDE_TAG: report_tag(vh); break; case V_APPLVERSION: case V_CHOREO_DATA: case V_USB_UPDATE: case V_BOOTLOADERVERSION: default: break; } } printf("mir:ror disconnected\n"); return 0; }