screeninfo icon indicating copy to clipboard operation
screeninfo copied to clipboard

possible GDI Object leak on Windows

Open carlfarrington opened this issue 3 years ago • 3 comments

Every time get_monitors() is called, the GDI Objects count for the python process on win32 increases. Once the 10,000 GDI Object hard limit is reached, the desktop becomes lagged, and GUI things break (my script is managing an application's full-screen status, and the result is a corrupted / not-fully-repainted window).

A small test, if you add the GDI Objects column to taskmgr, you can see the count continually increase.

while True:
    for m in get_monitors():
        print(str(m))

carlfarrington avatar Dec 04 '22 12:12 carlfarrington

This may relate to 'the call to ReleaseDC is incorrect' https://github.com/rr-/screeninfo/issues/30#issuecomment-612631519

carlfarrington avatar Dec 04 '22 15:12 carlfarrington

@carlfarrington can you verify if this stalled pull request fixes the issue you're experiencing and doesn't break the functionality? https://github.com/rr-/screeninfo/pull/32 Thanks

rr- avatar Dec 05 '22 13:12 rr-

A shame this is still open. I had the same problem. Thousands of GDI Handles after some hours. Basically 1 Handle per get_monitors() ... Well after replacing the "screeninfo\enumerators\windows.py" with the one from https://github.com/rr-/screeninfo/pull/32 I can comfirm this fixes the issue.

IFD3 avatar Apr 28 '24 10:04 IFD3