/** * uninit_drivers: * @flags : Bitmask of drivers to deinitialize. * * Deinitializes drivers. * @flags determines which drivers get deinitialized. **/ void uninit_drivers(int flags) { driver_t *driver = driver_get_ptr(); if (flags & DRIVER_AUDIO) uninit_audio(); if (flags & DRIVER_VIDEO) { global_t *global = global_get_ptr(); if (global->system.hw_render_callback.context_destroy && !driver->video_cache_context) global->system.hw_render_callback.context_destroy(); } #ifdef HAVE_MENU if (flags & DRIVER_MENU) { menu_driver_context_destroy(); if (!driver->menu_data_own) { menu_free_list(driver->menu); menu_free(driver->menu); driver->menu = NULL; } } #endif if (flags & DRIVERS_VIDEO_INPUT) uninit_video_input(); if ((flags & DRIVER_VIDEO) && !driver->video_data_own) driver->video_data = NULL; if ((flags & DRIVER_CAMERA) && !driver->camera_data_own) { uninit_camera(); driver->camera_data = NULL; } if ((flags & DRIVER_LOCATION) && !driver->location_data_own) { uninit_location(); driver->location_data = NULL; } if ((flags & DRIVER_INPUT) && !driver->input_data_own) driver->input_data = NULL; if ((flags & DRIVER_AUDIO) && !driver->audio_data_own) driver->audio_data = NULL; }
/** * uninit_drivers: * @flags : Bitmask of drivers to deinitialize. * * Deinitializes drivers. * @flags determines which drivers get deinitialized. **/ void uninit_drivers(int flags) { driver_t *driver = driver_get_ptr(); #ifdef HAVE_MENU if (flags & DRIVER_MENU) { menu_driver_context_destroy(); if (!driver->menu_data_own) { menu_free(driver->menu); driver->menu = NULL; } } #endif if ((flags & DRIVER_LOCATION) && !driver->location_data_own) { uninit_location(); driver->location_data = NULL; } if ((flags & DRIVER_CAMERA) && !driver->camera_data_own) { uninit_camera(); driver->camera_data = NULL; } if (flags & DRIVER_AUDIO) uninit_audio(); if (flags & DRIVERS_VIDEO_INPUT) uninit_video_input(); if (flags & DRIVER_VIDEO) { const struct retro_hw_render_callback *hw_render = (const struct retro_hw_render_callback*)video_driver_callback(); if (hw_render->context_destroy && !driver->video_cache_context) hw_render->context_destroy(); } if ((flags & DRIVER_VIDEO) && !driver->video_data_own) driver->video_data = NULL; if ((flags & DRIVER_INPUT) && !driver->input_data_own) driver->input_data = NULL; if ((flags & DRIVER_AUDIO) && !driver->audio_data_own) driver->audio_data = NULL; }
void uninit_drivers(void) { uninit_audio(); if (g_extern.system.hw_render_callback.context_destroy && !driver.video_cache_context) g_extern.system.hw_render_callback.context_destroy(); #ifdef HAVE_MENU if (driver.menu && driver.menu_ctx && driver.menu_ctx->context_destroy) driver.menu_ctx->context_destroy(driver.menu); if (!driver.menu_data_own) { menu_free(driver.menu); driver.menu = NULL; } #endif uninit_video_input(); if (!driver.video_data_own) driver.video_data = NULL; #ifdef HAVE_CAMERA if (!driver.camera_data_own) { uninit_camera(); driver.camera_data = NULL; } #endif #ifdef HAVE_LOCATION if (!driver.location_data_own) { uninit_location(); driver.location_data = NULL; } #endif #ifdef HAVE_OSK if (!driver.osk_data_own) { uninit_osk(); driver.osk_data = NULL; } #endif if (!driver.input_data_own) driver.input_data = NULL; if (!driver.audio_data_own) driver.audio_data = NULL; }
void uninit_drivers(void) { uninit_audio(); if (g_extern.system.hw_render_callback.context_destroy && !driver.video_cache_context) g_extern.system.hw_render_callback.context_destroy(); uninit_video_input(); #ifdef HAVE_CAMERA uninit_camera(); if (driver.camera_data_own) driver.camera_data = NULL; #endif #ifdef HAVE_LOCATION uninit_location(); if (driver.location_data_own) driver.location_data = NULL; #endif #ifdef HAVE_OSK uninit_osk(); if (driver.osk_data_own) driver.osk_data = NULL; #endif if (driver.video_data_own) driver.video_data = NULL; if (driver.audio_data_own) driver.audio_data = NULL; if (driver.input_data_own) driver.input_data = NULL; #ifdef HAVE_CAMERA driver.camera_data_own = false; #endif #ifdef HAVE_LOCATION driver.location_data_own = false; #endif #ifdef HAVE_OSK driver.osk_data_own = false; #endif driver.video_data_own = false; driver.audio_data_own = false; driver.input_data_own = false; }
bool camera_driver_ctl(enum rarch_camera_ctl_state state, void *data) { static bool camera_driver_active = false; static bool camera_driver_data_own = false; switch (state) { case RARCH_CAMERA_CTL_DESTROY: camera_driver_active = false; camera_driver_data_own = false; camera_driver = NULL; break; case RARCH_CAMERA_CTL_SET_OWN_DRIVER: camera_driver_data_own = true; break; case RARCH_CAMERA_CTL_UNSET_OWN_DRIVER: camera_driver_data_own = false; break; case RARCH_CAMERA_CTL_OWNS_DRIVER: return camera_driver_data_own; case RARCH_CAMERA_CTL_SET_ACTIVE: camera_driver_active = true; break; case RARCH_CAMERA_CTL_UNSET_ACTIVE: camera_driver_active = false; break; case RARCH_CAMERA_CTL_IS_ACTIVE: return camera_driver_active; case RARCH_CAMERA_CTL_DEINIT: uninit_camera(); break; default: break; } return false; }