void fs_ml_video_init() { FS_ML_INIT_ONCE; g_video_thread_id = fs_thread_id(); g_video_cond = fs_condition_create(); g_video_mutex = fs_mutex_create(); g_video_event_queue = g_queue_new(); g_video_event_mutex = fs_mutex_create(); fs_ml_render_init(); }
void fs_emu_netplay_init() { const char *value; g_send_mutex = fs_mutex_create(); g_connection_mutex = fs_mutex_create(); g_input_event_mutex = fs_mutex_create(); g_input_event_queue = g_queue_new(); g_wait_for_frame_cond = fs_condition_create(); g_wait_for_frame_mutex = fs_mutex_create(); value = fs_config_get_const_string("netplay_server"); if (value) { g_fs_emu_netplay_server = g_strdup(value); } if (!fs_emu_netplay_enabled()) { return; } value = fs_config_get_const_string("netplay_tag"); if (value) { strncpy(g_fs_emu_netplay_tag, value, 4); } else { g_fs_emu_netplay_tag[0] = 'U'; g_fs_emu_netplay_tag[1] = 'N'; g_fs_emu_netplay_tag[2] = 'K'; } g_fs_emu_netplay_tag[3] = '\0'; value = fs_config_get_const_string("netplay_port"); if (value) { g_fs_emu_netplay_port = g_strdup(value); } char *password_value = fs_config_get_string("netplay_password"); if (password_value) { GChecksum *cs = g_checksum_new(G_CHECKSUM_SHA1); g_checksum_update(cs, (unsigned char *) "FSNP", 4); int len = strlen(password_value); for (int i = 0; i < len; i++) { unsigned char c = password_value[i]; // only include ASCII characters if (c < 128) { g_checksum_update(cs, &c, 1); } } gsize digest_len = 20; g_checksum_get_digest(cs, g_fs_emu_netplay_password, &digest_len); free(password_value); g_checksum_free(cs); } }
void fs_ml_render_init() { g_frame_available_cond = fs_condition_create(); g_frame_available_mutex = fs_mutex_create(); g_start_new_frame_cond = fs_condition_create(); g_start_new_frame_mutex = fs_mutex_create(); g_buffer_swap_cond = fs_condition_create(); g_buffer_swap_mutex = fs_mutex_create(); g_epoch = fs_get_monotonic_time(); g_vblank_mutex = fs_mutex_create(); //fs_emu_stat_queue_init(&g_measured_vblank_times, VBLANK_TIMES_COUNT); if (fs_config_get_boolean("low_latency_vsync") == 1) { fs_log("using low latency vsync when full vsync is enabled\n"); g_fs_ml_video_sync_low_latency = 1; } else if (fs_config_get_boolean("low_latency_vsync") == 0) { fs_log("disabling use of low latency vsync\n"); g_fs_ml_video_sync_low_latency = 0; } }
void fs_ml_video_init() { FS_ML_INIT_ONCE; fs_log("creating condition\n"); g_video_cond = fs_condition_create(); fs_log("creating mutex\n"); g_video_mutex = fs_mutex_create(); g_video_event_queue = g_queue_new(); g_video_event_mutex = fs_mutex_create(); g_debug_input = getenv("FS_DEBUG_INPUT") && \ getenv("FS_DEBUG_INPUT")[0] == '1'; fs_ml_render_init(); }