JNIEXPORT void JNICALL JNI_OnUnload()

in src/main/c/Windows/SerialPort_Windows.c [711:738]


JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *jvm, void *reserved)
{
	// Ensure that the class has not already been uninitialized
	if (!classInitialized)
		return;
	classInitialized = 0;

	// Retrieve the JNI environment
	JNIEnv *env;
	jint jniVersion = JNI_VERSION_1_2;
	(*jvm)->GetEnv(jvm, (void**)&env, jniVersion);

	// Close all open ports
	for (int i = 0; i < serialPorts.length; ++i)
		if (serialPorts.ports[i]->handle != INVALID_HANDLE_VALUE)
			Java_com_fazecast_jSerialComm_SerialPort_closePortNative(env, jniErrorClass, (jlong)(intptr_t)serialPorts.ports[i]);

	if (serialCommClass)
	{
		(*env)->DeleteGlobalRef(env, serialCommClass);
		serialCommClass = NULL;
	}
	if (jniErrorClass)
	{
		(*env)->DeleteGlobalRef(env, jniErrorClass);
		jniErrorClass = NULL;
	}
}