SUGGESTED FIX
The problem is believed to be in the function WinAccessBridge::receiveAQueuedPackage in WinAccessBridge.cpp. In every case in which the bug occurs (according to the Freedom Scientific engineer), the function messageQueue->getRemoveLockSetting returns TRUE instead of FALSE. When this happens, the first message in the queue is not processed. Since the function WinAccessBridge::receiveAQueuedPackage does not post the AB_MESSAGE_QUEUED message again, once this happens, the message queue will always be at least one message behind what is actually happening since the number of AB_MESSAGE_QUEUED messages received will always be less than the number of messages in the queue.
Recommendation is to add the line:
PostMessage(dialogWindow, AB_MESSAGE_QUEUED, (WPARAM) 0, (LPARAM) 0);
to the "else" clause of the "if" statement
if (messageQueue->getRemoveLockSetting() == FALSE) {
-> specifically right after the line:
PrintDebugString(" unable to dequeue message; remove lock is set");
|