nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
Other
2.08k stars 628 forks source link

Profile switching is slow as NVDA freezes when connecting to a Braille device using Bluetooth #14399

Open cary-rowen opened 1 year ago

cary-rowen commented 1 year ago

Steps to reproduce:

  1. Use Bluetooth to connect to a braille device, such as Seika NoteTaker;
  2. Create new Profile for different applications;
  3. Set one of the profile to "no-braille device";

Actual behavior:

During switching between two profiles, NVDA freezes due to conecting for Bluetooth device;

Expected behavior:

Bluetooth devices may take some time to connect, but NVDA should not freeze.

NVDA logs, crash dumps and other attachments:

None

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

2022.4Beta3 and Alpha

Windows version:

Windows 10 22H2 (x64) build 19045.2251

Name and version of other software in use when reproducing the issue:

None

Other information about your system:

None

Other questions

Does the issue still occur after restarting your computer?

Yes

Have you tried any other versions of NVDA? If so, please report their behaviors.

None

If NVDA add-ons are disabled, is your problem still occurring?

Yes

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

Yes

cary-rowen commented 1 year ago

@feerrenrut

seanbudd commented 1 year ago

It may be possible to retain the connection in the background, allowing profile switching / disabling a braille device., without formally ending the connection. NVDA can just stop communicating braille information to the device when braille is disabled. This concept would be similar to keeping a bluetooth headphone connection, but muting it.

cary-rowen commented 1 year ago

@seanbudd Will this be easy to implement?

@moyanming do you have any ideas?

feerrenrut commented 1 year ago

It may be possible to retain the connection in the background, allowing profile switching / disabling a braille device., without formally ending the connection.

One obstacle will be differentiating a temporary change, E.G., a profile switch, from a standard config change, E.G., setting 'no braille' in the user settings GUI.

Another way to improve this would be to look into making this non-blocking for NVDA while waiting on the connection to be established.

First, this particular case needs to be investigated to understand what causes it, to ensure there isn't something specific to this braille driver that could be done differently.

Adriani90 commented 10 months ago

@cary-rowen how is it now in the last NVDA alpha version? Are you still having this issue?

cc: @burmancomp

SaschaCowley commented 2 months ago

Note: This does not seem to be reproducible with automatic display detection; the display has to be chosen explicitly.