public final void stopListening()

in src/main/java/com/fazecast/jSerialComm/SerialPort.java [2104:2147]


		public final void stopListening()
		{
			if (!eventListenerRunning)
				return;
			eventListenerRunning = false;

			// Clear all timeouts and event masks to allow listening threads to return
			int oldTimeoutMode = timeoutMode, oldEventFlags = eventFlags;
			timeoutMode = TIMEOUT_NONBLOCKING;
			eventFlags = 0;
			if (androidPort != null)
			{
				androidPort.setEventListeningStatus(false);
				androidPort.configPort(SerialPort.this);
			}
			else
			{
				setEventListeningStatus(portHandle, false);
				configPort(portHandle);
			}

			// Wait until the event-reading thread returns. This thread MUST return or the serial port will
			//   be in an unspecified, possibly unrecoverable state
			try
			{
				if (!Thread.currentThread().equals(serialEventThread))
					do
					{
						serialEventThread.join(500);
						if (serialEventThread.isAlive())
							serialEventThread.interrupt();
					} while (serialEventThread.isAlive());
			}
			catch (InterruptedException e) { Thread.currentThread().interrupt(); }
			serialEventThread = null;

			// Reset the previously specified timeouts and event flags
			timeoutMode = oldTimeoutMode;
			eventFlags = oldEventFlags;
			if (androidPort != null)
				androidPort.configPort(SerialPort.this);
			else
				configPort(portHandle);
		}