void xnUSBAsynchThreadRelease() { xnl::AutoCSLocker locker(g_InitData.hLock); --g_InitData.nOpenDevices; if (g_InitData.nOpenDevices == 0) { xnUSBAsynchThreadStop(); } }
void xnUSBAsynchThreadRelease() { XnAutoCSLocker locker(g_InitData.hLock); --g_InitData.nThreads; if (g_InitData.nThreads == 0) { xnUSBAsynchThreadStop(); } }
XnStatus xnUSBPlatformSpecificShutdown() { xnUSBAsynchThreadStop(); if (g_InitData.hLock != NULL) { xnOSCloseCriticalSection(&g_InitData.hLock); g_InitData.hLock = NULL; } if (g_InitData.pContext != NULL) { // close the library libusb_exit(g_InitData.pContext); g_InitData.pContext = NULL; } return (XN_STATUS_OK); }
XnStatus xnUSBPlatformSpecificShutdown() { xnUSBAsynchThreadStop(); #ifdef XN_USE_UDEV g_bShouldRunUDEVThread = false; xnOSWaitAndTerminateThread(&g_hUDEVThread, 2 * 1000); g_hUDEVThread = NULL; #endif if (g_InitData.hLock != NULL) { xnOSCloseCriticalSection(&g_InitData.hLock); g_InitData.hLock = NULL; } if (g_InitData.pContext != NULL) { // close the library libusb_exit(g_InitData.pContext); g_InitData.pContext = NULL; } return (XN_STATUS_OK); }