On XO-1.75 and XO-4, the Chat activity process did persist after stop. Cause was sensors.EbookModeDetector._read thread, blocked on read(2) of /dev/input/event4. Expected because thread.daemon is not True. Did not affect XO-1 or XO-1.5, because /dev/input/event4 is not readable unless root. Set thread.daemon True can fix, but it was previously turned it off for reasons none of us can remember. So
switch from threading to event loop, using a watch, and handle unexpected end of file by cancelling the watch.
validate event data, (which avoids a redundant changed signal),
On XO-1.75 and XO-4, the Chat activity process did persist after stop. Cause was sensors.EbookModeDetector._read thread, blocked on read(2) of /dev/input/event4. Expected because thread.daemon is not True. Did not affect XO-1 or XO-1.5, because /dev/input/event4 is not readable unless root. Set thread.daemon True can fix, but it was previously turned it off for reasons none of us can remember. So