smasherprog / screen_capture_lite

cross platform screen/window capturing library
MIT License
616 stars 156 forks source link

WIP Fix for blank windows from Chromium content #89

Closed JoeLudwig closed 3 years ago

JoeLudwig commented 3 years ago

Fixes #87

It seems that when using Windows 10, or when using Aero on Windows 8.0 and above, PrintWindow will capture windows where D3D is used to render content. BitBlt fails in those cases, but is still useful as a backup because PrintWindow won't work for all windows either.

JoeLudwig commented 3 years ago

@smasherprog I don't think this is actually ready to merge yet.

Some things to address:

smasherprog commented 3 years ago

Win10 is minimum. Checking this out now... Thanks for the PR

smasherprog commented 3 years ago

Yeah, I didnt even think about popups. Thats an interesting topic as where would the popup go if it falls outside the bounds of the main window being captured? I think in that case it should be cut off to fit in the bounds of the window being captured. Thoughts?

This is the first time i have seen the PrintWindow function. Looks like that will allow capturing of windows so i am looking into if there are any performance concerns with printwindow or if it will "just work". If printwindow has some perf issues we would need to see if it can be called only if needed and use bitblt first. Have u looked into any of this?

TrentWeiss commented 3 years ago

@JoeLudwig , I just pulled your branch into my project (which submodules screen_capture_lite). It appears to fix the issue I raised in #72 (looks like my hypothesis that DirectX12 causing the issue is not entirely correct). The only new behavior I see is the presence of a very small vertical black stripe showing up on the left-hand side of the captured frames (see below). I can live with that, pretty easy to crop the black stripe out, but I just wanted to make you aware in case that's indicative of some other problem you may be facing. black_stripe

smasherprog commented 3 years ago

okay cool if this works, then ill merge it into master. I havent been spending alot of time in this project so i am really looking for others to help in this regard.

smasherprog commented 3 years ago

Checked the code out and it looks good to me. Thanks for the PR!!!