/** * retro_init_libretro_cbs: * @data : pointer to retro_callbacks object * * Initializes libretro callbacks, and binds the libretro callbacks * to default callback functions. **/ void retro_init_libretro_cbs(void *data) { struct retro_callbacks *cbs = (struct retro_callbacks*)data; driver_t *driver = driver_get_ptr(); global_t *global = global_get_ptr(); if (!cbs) return; (void)driver; (void)global; pretro_set_video_refresh(video_frame); pretro_set_audio_sample(audio_driver_sample); pretro_set_audio_sample_batch(audio_driver_sample_batch); pretro_set_input_state(input_state); pretro_set_input_poll(input_poll); retro_set_default_callbacks(cbs); #ifdef HAVE_NETPLAY if (!driver->netplay_data) return; if (global->netplay_is_spectate) { pretro_set_input_state( (global->netplay_is_client ? input_state_spectate_client : input_state_spectate) ); } else { pretro_set_video_refresh(video_frame_net); pretro_set_audio_sample(audio_sample_net); pretro_set_audio_sample_batch(audio_sample_batch_net); pretro_set_input_state(input_state_net); } #endif }
static int16_t netplay_get_spectate_input(netplay_t *handle, bool port, unsigned device, unsigned index, unsigned id) { int16_t inp; if (recv_all(handle->fd, NONCONST_CAST &inp, sizeof(inp))) return swap_if_big16(inp); else { RARCH_ERR("Connection with host was cut.\n"); msg_queue_clear(g_extern.msg_queue); msg_queue_push(g_extern.msg_queue, "Connection with host was cut.", 1, 180); pretro_set_input_state(g_extern.netplay->cbs.state_cb); return g_extern.netplay->cbs.state_cb(port, device, index, id); } }