Repository navigation
zdsr: Document channel readiness, runtime detection, and Braille - #182
Merged
Merged
Conversation
This was referenced Nov 7, 2026
Document that the runtime-supported probe requires both the reader and daemon processes, and explain how an independent channel that is still starting affects initialization, speaking-state queries, and speak requests. Also document that older ZDSRAPI versions may omit the Braille export and how the backend reports that through its feature set and the Braille and output operations. Signed-off-by: qt06 <qt06.com@gmail.com>
qt06
force-pushed
the
zdsr-backend-notes
branch
from
November 7, 2026 06:40
2527a24 to
d527383
Compare
ethindp
pushed a commit
that referenced
this pull request
Nov 8, 2026
`open_optional_library` previously called `LoadLibrary` by bare DLL name first. Windows could resolve an unrelated same-named copy from the working directory or `%PATH%`, and Prism would not then try the product's registered install directory. A stale DLL with a different export set could therefore make a backend unavailable even though its registered installation contained a usable DLL. Search the directory containing Prism first, then the install directory from the registry when provided, and only then fall back to Windows' ambient DLL search path. App-local deployments remain supported. The helper is shared by optional-library backends, so the behavior applies to all of them; the registry path is only used by backends that provide one. Update the backend contribution guidance to document the order and distinguish required exports from optional exports. Verified with x64 and x86 Windows builds, clang-tidy, and a stale-DLL-in-`%PATH%` test: the registered ZDSR installation was selected instead of the older DLL. Related ZDSR follow-ups: #181 makes the Braille export optional, and #182 documents the ZDSR behavior introduced by #177 and #178. This loader change is independently useful and does not depend on those PRs. Signed-off-by: qt06 <qt06.com@gmail.com>
ethindp
pushed a commit
that referenced
this pull request
Nov 9, 2026
Some ZDSR API versions export the four speech functions (`InitTTS`, `Speak`, `GetSpeakState`, `StopSpeak`) but do not provide `Braille`. Requiring the Braille export prevented those versions from loading even though speech was available. Bind `Braille` independently from the required speech functions. The backend advertises `SUPPORTS_BRAILLE` only after initialization confirms the export; without it, direct Braille calls return `PRISM_ERROR_NOT_IMPLEMENTED`, while `output` continues with speech only. `get_features` no longer loads the DLL and only reports Braille support after initialization. Verified with an app-local test DLL exporting the four speech functions but no `Braille`: initialization succeeds, Braille is not advertised, direct Braille returns not-implemented, and speech-only output succeeds. With the installed API that exports Braille, `get_features` omits the feature before initialization and reports it after successful initialization. x64 and x86 builds pass, and clang-tidy reports no diagnostics for `zdsr.cpp`. Related PRs: #180 fixes optional DLL search precedence; #182 documents the ZDSR-specific Braille behavior together with the independent-channel readiness and process-probe behavior from #177 and #178. Signed-off-by: qt06 <qt06.com@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Update the ZDSR backend notes to reflect the merged behavior:
ZDSRMain.exeandZDSRDaemon.exe; service and per-channel processes are not used as the availability signal.ZDSRAPI.iniselecting an independent channel (type=1), the channel may still be starting afterInitTTSsucceeds. Status 9 is treated as not speaking, so initialization succeeds andis_speakingreturns false.speakreturnsPRISM_ERROR_BACKEND_NOT_AVAILABLEuntil the channel is ready; callers may retry without reinitializing.Braille. After initialization, the backend advertises Braille support only when the loaded API provides that export; otherwise direct Braille calls returnPRISM_ERROR_NOT_IMPLEMENTEDandoutputuses speech only.Documentation-only change. The runtime-probe and channel-readiness behavior was introduced by #177 and #178; the optional Braille behavior is implemented by #181.
Related PRs: #180 fixes optional DLL search precedence; #181 makes the ZDSR Braille export optional.