static void *winraw_init(const char *joypad_driver) { bool r; winraw_input_t *wr = (winraw_input_t *) calloc(1, sizeof(winraw_input_t)); g_keyboard = (winraw_keyboard_t*) calloc(1, sizeof(winraw_keyboard_t)); if (!wr || !g_keyboard) goto error; RARCH_LOG("[WINRAW]: Initializing input driver... \n"); input_keymaps_init_keyboard_lut(rarch_key_map_winraw); wr->window = winraw_create_window(winraw_callback); if (!wr->window) goto error; r = winraw_init_devices(&g_mice, &g_mouse_cnt); if (!r) goto error; if (!g_mouse_cnt) { RARCH_LOG("[WINRAW]: Mouse unavailable.\n"); } else { wr->mice = (winraw_mouse_t*) malloc(g_mouse_cnt * sizeof(winraw_mouse_t)); if (!wr->mice) goto error; memcpy(wr->mice, g_mice, g_mouse_cnt * sizeof(winraw_mouse_t)); } r = winraw_set_keyboard_input(wr->window); if (!r) goto error; r = winraw_set_mouse_input(wr->window, false); if (!r) goto error; wr->joypad = input_joypad_init_driver(joypad_driver, wr); return wr; error: if (wr && wr->window) { winraw_set_mouse_input(NULL, false); winraw_set_keyboard_input(NULL); winraw_destroy_window(wr->window); } free(g_keyboard); free(g_mice); if (wr) free(wr->mice); free(wr); return NULL; }
static void *winraw_init(const char *joypad_driver) { bool r; video_viewport_t dst_vid_info; struct retro_system_av_info *src_vid_info; winraw_input_t *wr = (winraw_input_t *)calloc(1, sizeof(winraw_input_t)); g_keyboard = (winraw_keyboard_t*)calloc(1, sizeof(winraw_keyboard_t)); if (!wr || !g_keyboard) { WINRAW_ERR("calloc failed."); goto error; } WINRAW_LOG("Initializing input driver ..."); input_keymaps_init_keyboard_lut(rarch_key_map_winraw); wr->window = winraw_create_window(winraw_callback); if (!wr->window) { WINRAW_ERR("winraw_create_window failed."); goto error; } r = winraw_init_devices(&g_mice, &g_mouse_cnt); if (!r) { WINRAW_ERR("winraw_init_devices failed."); goto error; } if (!g_mouse_cnt) WINRAW_LOG("Mouse unavailable."); else { wr->mice = (winraw_mouse_t*)malloc(g_mouse_cnt * sizeof(winraw_mouse_t)); if (!wr->mice) { WINRAW_ERR("malloc failed."); goto error; } memcpy(wr->mice, g_mice, g_mouse_cnt * sizeof(winraw_mouse_t)); } r = winraw_set_keyboard_input(wr->window); if (!r) { WINRAW_ERR("winraw_set_keyboard_input failed."); goto error; } r = winraw_set_mouse_input(wr->window, false); if (!r) { WINRAW_ERR("winraw_set_mouse_input failed."); goto error; } wr->joypad = input_joypad_init_driver(joypad_driver, wr); WINRAW_LOG("Input driver initialized."); return wr; error: if (wr && wr->window) { winraw_set_mouse_input(NULL, false); winraw_set_keyboard_input(NULL); winraw_destroy_window(wr->window); } free(g_keyboard); free(g_mice); if (wr) free(wr->mice); free(wr); WINRAW_ERR("Input driver initialization failed."); return NULL; }