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

Screen curtain check for success #12708

Open
seanbudd opened this issue Aug 3, 2021 · 1 comment · May be fixed by #12701
Open

Screen curtain check for success #12708

seanbudd opened this issue Aug 3, 2021 · 1 comment · May be fixed by #12701
Labels
feature/screen-curtain p5 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.

Comments

@seanbudd
Copy link
Member

seanbudd commented Aug 3, 2021

Is your feature request related to a problem? Please describe.

The screen curtain relies on an unreliable API for WOW64 applications like NVDA. If it fails silently on an untested version of Windows, personal or confidential information may be exposed on the display without a user knowing.

Describe the solution you'd like

Add a check for success when using the screen curtain.

Ensure it:

  • captures all displays
  • relies on a low level, reliable windows API, eg winGDI
  • can be confident in the success of the screen capture (eg an empty buffer after a failed copy could look result in a black, empty bitmap)
  • can be confident in the analysis of the screen capture
  • is fast, as iterating over many pixels is slow in python.

Describe alternatives you've considered

There are multiple options for implementing the check, using an API like winGDI

  • Using the wxWidgets API
    • a simple and fast, but not complete API. We would need to ensure the API is reliable as well.
  • Using the NVDA screenBitmap module
    • slow as it requires iterating over pixels within Python to check the image
  • A custom NVDA C++ implementation
    • requires dev time but can ensure no unintended changes compared to using an intermediate API

Additional context

See #12491

@seanbudd seanbudd added this to the 2021.3 milestone Aug 3, 2021
@seanbudd seanbudd linked a pull request Aug 3, 2021 that will close this issue
8 tasks
@seanbudd seanbudd linked a pull request Aug 3, 2021 that will close this issue
8 tasks
@seanbudd seanbudd self-assigned this Aug 24, 2021
@feerrenrut
Copy link
Contributor

We won't let this block the release, but we do want to keep making progress on this.

@seanbudd seanbudd modified the milestones: 2021.3, 2022.1 Sep 23, 2021
@seanbudd seanbudd added the p5 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority label Nov 29, 2021
@feerrenrut feerrenrut removed this from the 2022.1 milestone Feb 14, 2022
@seanbudd seanbudd removed their assignment May 23, 2022
@seanbudd seanbudd added feature/screen-curtain triaged Has been triaged, issue is waiting for implementation. labels May 26, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature/screen-curtain p5 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants