Skip to content

Fix Screengrab DPI scaling on Windows 10 version 1607+#4000

Merged
radarhere merged 3 commits intopython-pillow:masterfrom
nulano:dpi_fix
Sep 30, 2019
Merged

Fix Screengrab DPI scaling on Windows 10 version 1607+#4000
radarhere merged 3 commits intopython-pillow:masterfrom
nulano:dpi_fix

Conversation

@nulano
Copy link
Copy Markdown
Contributor

@nulano nulano commented Jul 31, 2019

Fixes #2438 and its duplicates #3432, #3626 for Windows 10 version 1607+ (Anniversary Update).

This PR uses SetThreadDpiAwarenessContext to temporarily make Python DPI aware. This function returns the previous awareness context, which is then used to restore the old value, thus avoiding problems with other parts of Python. It was added in Windows 10 version 1607, which is why it is called dynamically.

The issue is not fixed for older versions of Windows. This is not a big problem for Windows 7, as very few people use DPI scaling there. Windows 8 and Windows 10 pre-1607 are now out of standard support by Microsoft.

src/display.c Outdated
PyObject* buffer;
HANDLE dpiAwareness;
HMODULE user32 = LoadLibraryA("User32.dll");
Func_SetThreadDpiAwarenessContext SetThreadDpiAwarenessContext_function;
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can someone suggest a better name here? This the best I could do but it's ridiculously long.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At least it's descriptive! :)

nulano and others added 2 commits August 12, 2019 18:51
* Load User32 after possible return

* Removed unused setting of variable
@radarhere radarhere merged commit aaf2c42 into python-pillow:master Sep 30, 2019
@hugovk
Copy link
Copy Markdown
Member

hugovk commented Sep 30, 2019

PR 4000! 🍰

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable DPI Scaling Awareness

4 participants