Why was there a timeout on acquiring the mutex?
Can we move XY into Write/ReadData?
Do we ever care about the mutex acquiring failing?
Should the tx buffer be in stack or heap?
Can we reduce the number of locks taken, or do we want to focus on keeping them as short as possible?
Why is the updatemutex a queue, not a semaphore?
Can we reduce the number of files involved?
Is InvertRect useful?
Any reason not to switch to DelayUntil?
Why was there a timeout on acquiring the mutex? Can we move XY into Write/ReadData? Do we ever care about the mutex acquiring failing? Should the tx buffer be in stack or heap? Can we reduce the number of locks taken, or do we want to focus on keeping them as short as possible? Why is the updatemutex a queue, not a semaphore? Can we reduce the number of files involved? Is InvertRect useful? Any reason not to switch to DelayUntil?