Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error at screen curtain activation when Windows Magnifier is active #10545

Open
CyrilleB79 opened this issue Nov 25, 2019 · 11 comments
Open

Error at screen curtain activation when Windows Magnifier is active #10545

CyrilleB79 opened this issue Nov 25, 2019 · 11 comments
Labels
component/vision Framework for assisting users with low vision

Comments

@CyrilleB79
Copy link
Collaborator

Steps to reproduce:

  • Launch Windows Magnifier (Windows+PavNumPlus)
  • Alt+Tab to Magnifier window
  • Press "Display" button and select "Full screen" option
  • Press "Options" button and check the "Invert colors" checkbox
  • Open Vision panel in NVDA settings
  • Uncheck the "Always show a warning" checkbox (probably does not matter but I did this way)
  • Check the "Enable screen curtain" checkbox

Actual behavior:

  • Screen curtain is not enabled
  • an error beep is heard: cf. logWinMagnifier+ScreenCurtain.txt
  • a message box indicating"Could not load the Screen Curtain vision enhancement provider" appears.

Expected behavior:

  • Best choice: screen curtain is enabled and the screen becomes black
  • Mid choice: screen curtain is enabled, but the screen is white due to color inversion of the magnifier
  • Minimal choice: screen curtain cannot be activated, no error appears in the log and the message explains to the user why screen curtain cannot be activated

Other tests performed

  • Test 2: Windows Magnifier with normal colors + screen curtain: no error, the screen becomes black
  • Test 3: Zoomtext 11 (normal colors) + screen curtain: no error, the screen becomes black
  • Test 4: Zoomtext 11 (inverted colors) + screen curtain: no error, the screen becomes white
  • Test 5:
    • Start Windows Magnifier with normal colors
    • Activate screen curtain: no error, screen black
    • Invert Windows Magnifier colors: no error, the screen remains black (so this seems possible...)

System configuration

NVDA installed/portable/running from source:

From source

NVDA version:

Version : source-master-c750926
(last version)

Windows version:

Windows 10 1709

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

For test 1: none.
For some other tests: Zoomtext 11

Other information about your system:

Other questions

Does the issue still occur after restarting your PC?

Yes

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

No other stable version.
I have already seen this issue few time after the screen curtain was merged into alpha but did not bother to fill an issue at the time. I do not remember however the version of the alpha in which I have already seen the issue.

@LeonarddeR
Copy link
Collaborator

I'm afraid the only thing we could do here is improve the UX. As windows Magnifier holds the API that we use to activate the screen curtain, we simply can't use the screen curtain when the magnifier is on.

@LeonarddeR
Copy link
Collaborator

It should be pretty easy to at least add a warning to the NVDA user guide telling that the screen curtain can't be enabled when the windows magnifier is on. We could also hide the curtain option when the magnifier is on.

@CyrilleB79: could you also check what happens if the curtain is on and you activate the widnows magnifier? I"m afraid the curtain is killed without notice? Again, this is also a case that's pretty difficult to act upon.

@CyrilleB79
Copy link
Collaborator Author

As windows Magnifier holds the API that we use to activate the screen curtain, we simply can't use the screen curtain when the magnifier is on.

Yes we can as described briefly in Test 2: Screen curtain can be activated when Windows Magnifier is active, provided that color inversion is not enabled at this time.

@CyrilleB79
Copy link
Collaborator Author

@LeonarddeR I have made the test you suggest. Here are the results:

Test 6:

  • Activate Windows Magnifier (Windows+PavNumPlus) and check in options that color inversion is active
  • Unactivate Magnifier (Windows+Escape)
  • Activate and unactivate Magnifier once again to check that color inversion is kept in memory between 2 Magnifier launch.
  • Once Windows Magnifier is not active, start NVDA's screen curtain:
    Result: the screen becomes black
  • Launch Windows Magnifier (Windows+PavNumPlus)
    Result: No error happens but nothing can be seen since the screen is black
  • Disable NVDA's screen curtain
    Result: the screen is magnified but the colors are not inverted anymore!
  • Quit Win Magnifier (Windows+Escape)
  • Re-launch Windows Magnifier
    Result: Magnification OK and color inversion OK

Maybe Windows Magnifier programs a color transformation matrix that is overridden by NVDA's screen curtain color transformation matrix.

The easiest solution is to implement the minimal choice for expected behaviour, i.e. indicate to the user that screen curtain should not be used when Magnifier is active. However we should ideally also discourage the user to launch the Magnifier when screen curtain is on.

Another question is: Is screen curtain profile-dependant?
If yes, what will happen if the user is using the magnifier (inverted colors) and switch to an application wwhose profile asks to enable the magnifier? I did not yet made the test...

@CyrilleB79
Copy link
Collaborator Author

By the way, @LeonarddeR, why did you put the CANTFIX label? Probably we cannot support screen curtain along with Windows Magnifier. However we can probably do some things to improve UX:

  • Give the user a user-friendly message when he tries to activate the screen curtain while the Magnifier is active
  • Avoid the error in the log
  • Update user guide to warn the user not to use Magnifier along with screen curtain

@LeonarddeR
Copy link
Collaborator

By the way, @LeonarddeR, why did you put the CANTFIX label?

Because we can't fix any conflicts between the magnifier and screen curtain. We can only describe them in the user guide.

Your tests really prove to be helpful, thanks a lot for this!

@CyrilleB79
Copy link
Collaborator Author

OK, I thought that CANTFIX label was a label to use when an issue was closed to indicate the closure reason. This incompatibility should however be indicated at least in user doc (and maybe in a message box when activating feature) before closing this issue.

@CyrilleB79
Copy link
Collaborator Author

Another idea: Would it be possible to use MagGetFullscreenColorEffect before the screen curtain activation in order to store the current color transformation? This would allow to restore the color transformation when screen curtain is deactivated.

@LeonarddeR LeonarddeR added the component/vision Framework for assisting users with low vision label Dec 5, 2019
feerrenrut pushed a commit that referenced this issue Jan 20, 2020
…#10689)

When screen curtain activation failed it could not be activated in future attempts.
An example of screen curtain activation failing is described in #10545.
Activation may fail because Windows Magnifier is already active with color inversion.
But activation also fails when you try again to activate screen curtain,
even if you have disabled color inversion or exited Windows Magnifier.

This change:
If screen curtain activation has previously failed (E.G. due to Windows Magnifier's 
color inversion) it should not fail after color inversion is disabled or Magnifier is off.

The Magnifier API must be uninitialized before it can be reinitialized, as requested 
on 'Magnification API Overview | Microsoft Docs' webpage [1]:

> Initializing the Magnifier Run-time LibraryInitializing the Magnifier Run-time Library 
> Before you can call any other magnifier API functions, you must create and initialize 
> the magnifier run-time objects by calling the MagInitialize function.
> Similarly, after you finish using the magnifier API,
> call the MagUninitialize function to destroy the magnifier run-time objects and free 
> the associated system resources.

[1](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/magapi/magapi-intro#initializing-the-magnifier-run-time-library)
@Adriani90
Copy link
Collaborator

@CyrilleB79 I see that a related PR has been merged. Did this improve it now?
If there are some conflicts with magnifier and screen curtain, I agree these should be documented in the user guide.

@CyrilleB79
Copy link
Collaborator Author

No, the merged PR (#10689) does not solve this issue, i.e. it does not allow to activate screen curtain when Magnifier is active. There does not seem to be a solution. So I think documenting this incompatibility would be enough to close this issue.

@CyrilleB79
Copy link
Collaborator Author

As explained in #16258 (comment), to close this issue, not only the documentation should be updated to mention this limitation. In addition the screen curtain failure should be notified in some way to the user, also when triggering a profile (app switching) or when starting NVDA, what is not the case today.

seanbudd pushed a commit that referenced this issue Mar 6, 2024
…colors in the Magnifier (#16258)

Partial fix for #10545

Summary of the issue:
Screen curtain cannot be activated while Windows Magnifier is running with inverted screen colors.
An error message can be heard when trying to activate the screen curtain.
Though, this incompatibility is not documented in the User Guide.

Description of user facing changes
Update the User Guide.
Adriani90 pushed a commit to Adriani90/nvda that referenced this issue Mar 13, 2024
…colors in the Magnifier (nvaccess#16258)

Partial fix for nvaccess#10545

Summary of the issue:
Screen curtain cannot be activated while Windows Magnifier is running with inverted screen colors.
An error message can be heard when trying to activate the screen curtain.
Though, this incompatibility is not documented in the User Guide.

Description of user facing changes
Update the User Guide.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/vision Framework for assisting users with low vision
Projects
None yet
Development

No branches or pull requests

3 participants