static void wiiusb_hid_free(const void *data) { struct wiiusb_adapter *adapter = NULL; struct wiiusb_adapter *next_adapter = NULL; wiiusb_hid_t *hid = (wiiusb_hid_t*)data; if (!hid) return; hid->poll_thread_quit = true; if (hid->poll_thread) sthread_join(hid->poll_thread); hid->manual_removal = TRUE; /* remove each of the adapters */ for (adapter = hid->adapters_head; adapter; adapter = next_adapter) { next_adapter = adapter->next; wiiusb_hid_remove_adapter(adapter); } pad_connection_destroy(hid->connections); free(hid); }
static void apple_hid_free(void *data) { apple_hid_t *hid_apple = (apple_hid_t*)data; if (!hid_apple || !hid_apple->ptr) return; pad_connection_destroy(hid_apple->slots); apple_hid_manager_free(hid_apple); if (hid_apple) free(hid_apple); }
static void iohidmanager_hid_free(const void *data) { iohidmanager_hid_t *hid_apple = (iohidmanager_hid_t*)data; if (!hid_apple || !hid_apple->ptr) return; pad_connection_destroy(hid_apple->slots); iohidmanager_hid_manager_free(hid_apple); if (hid_apple) free(hid_apple); }
static void btstack_hid_free(void *data) { btstack_hid_t *hid = (btstack_hid_t*)data; if (!hid) return; pad_connection_destroy(hid->slots); btpad_set_inquiry_state(true); btstack_set_poweron(false); if (hid) free(hid); }
static void wiiusb_hid_free(void *data) { wiiusb_hid_t *hid = (wiiusb_hid_t*)data; while (adapters.next) if (remove_adapter(hid, &adapters.next->device) == -1) RARCH_ERR("could not remove device %p\n", adapters.next->device); pad_connection_destroy(hid->slots); // wiiusb_hotplug_deregister_callback(hid->ctx, hid->hp); if (hid) free(hid); }
/** * Tear down the HID system set up by hid_init() * * @argument instance the hid_driver_instance_t to tear down. */ void hid_deinit(hid_driver_instance_t *instance) { if(!instance) return; RARCH_LOG("[hid]: destroying instance\n"); if(instance->os_driver && instance->os_driver_data) { RARCH_LOG("[hid]: tearing down HID subsystem driver...\n"); instance->os_driver->free(instance->os_driver_data); } RARCH_LOG("[hid]: destroying pad data...\n"); pad_connection_destroy(instance->pad_list); RARCH_LOG("[hid]: wiping instance data...\n"); memset(instance, 0, sizeof(hid_driver_instance_t)); }
static void libusb_hid_free(void *data) { libusb_hid_t *hid = (libusb_hid_t*)data; while(adapters.next) if (remove_adapter(hid, adapters.next->device) == -1) RARCH_ERR("could not remove device %p\n", adapters.next->device); if (hid->poll_thread) { hid->quit = 1; sthread_join(hid->poll_thread); } pad_connection_destroy(hid->slots); libusb_hotplug_deregister_callback(hid->ctx, hid->hp); libusb_exit(hid->ctx); free(hid); }
static void apple_joypad_destroy(void) { pad_connection_destroy(slots); apple_hid_free(); }