| 651 | } |
| 652 | |
| 653 | void Close( bool bDeleteDevice ) |
| 654 | { |
| 655 | // Make sure thread is attached to JVM/env |
| 656 | JNIEnv *env; |
| 657 | g_JVM->AttachCurrentThread( &env, NULL ); |
| 658 | pthread_setspecific( g_ThreadKey, (void*)env ); |
| 659 | |
| 660 | env->CallVoidMethod( g_HIDDeviceManagerCallbackHandler, g_midHIDDeviceManagerClose, m_nId ); |
| 661 | ExceptionCheck( env, "Close" ); |
| 662 | |
| 663 | hid_mutex_guard dataLock( &m_dataLock ); |
| 664 | m_vecData.clear(); |
| 665 | |
| 666 | // Clean and release pending feature report reads |
| 667 | hid_mutex_guard cvLock( &m_cvLock ); |
| 668 | m_featureReport.clear(); |
| 669 | m_bIsWaitingForFeatureReport = false; |
| 670 | m_nFeatureReportError = -ECONNRESET; |
| 671 | pthread_cond_broadcast( &m_cv ); |
| 672 | |
| 673 | if ( bDeleteDevice ) |
| 674 | { |
| 675 | delete m_pDevice; |
| 676 | m_pDevice = nullptr; |
| 677 | } |
| 678 | } |
| 679 | |
| 680 | private: |
| 681 | pthread_mutex_t m_refCountLock = PTHREAD_MUTEX_INITIALIZER; |
no test coverage detected