Fix DPI 16 callback PlayString and PlayEvents#225
Fix DPI 16 callback PlayString and PlayEvents#225LexiconCode wants to merge 1 commit intodictation-toolbox:masterfrom
Conversation
Fix playString/playEvents hanging on DNS 16 by passing notify=1 in the extra vtable parameter DNS 16 added to PlayString and PlayEvents. Without it, PlaybackDone never fires and the message loop blocks indefinitely. Adds Dragon version detection at connect time to select the correct calling convention.
| @@ -28,6 +28,7 @@ class CDragonCode | |||
| CDragonCode() { | |||
| m_hMsgWnd = NULL; | |||
| m_dwKey = 0; | |||
There was a problem hiding this comment.
This will need to be tweaked instead of 13
|
Thanks for figuring this out, Aaron! I'll test this PR for you soon. Doing the call in assembly sure is fancy. However, it might be better to conditionally define that in the header file, similar to what was done for Dragon 15 here. Then we can have a separate binary for Dragon 16. GetVersion() will still be needed, of course. |
|
I can say that this does fix the ESP errors for me. However, there are some problems with Such are the joys of programming in assembly. We can keep going that way if you like, but patching dspeech.h is probably easier. Anyway, I was mistaken before. GetVersion() won't be needed if we go with a separate binary. |
|
BTW, modifying dspeech.h to use your extra parameter works fine. The problem is only a missing parameter, not a calling convention issue. Also, the ANSI implementation accepts the extra parameter, but ignores it. We'll have to use the Unicode method. |
Fix playString/playEvents ESP corruption/hanging on DNS 16 by passing notify=1 in the extra vtable parameter DPI 16 added to PlayString and PlayEvents.
I would appreciate testing and we might need to adjust the version gating Dragon v14/15?