| Index: media/video/capture/screen/screen_capturer_win.cc
|
| diff --git a/media/video/capture/screen/screen_capturer_win.cc b/media/video/capture/screen/screen_capturer_win.cc
|
| index aa844d9c9023255c807da3519c8af5b320d1abaa..ab78aa5b04035f3f76c09a2d32e4c815940a781c 100644
|
| --- a/media/video/capture/screen/screen_capturer_win.cc
|
| +++ b/media/video/capture/screen/screen_capturer_win.cc
|
| @@ -75,7 +75,7 @@ class ScreenCaptureFrameWin : public ScreenCaptureFrame {
|
| // ScreenCapturerWin is double-buffered as required by ScreenCapturer.
|
| class ScreenCapturerWin : public ScreenCapturer {
|
| public:
|
| - ScreenCapturerWin();
|
| + ScreenCapturerWin(bool disable_aero);
|
| virtual ~ScreenCapturerWin();
|
|
|
| // Overridden from ScreenCapturer:
|
| @@ -203,11 +203,24 @@ void ScreenCaptureFrameWin::AllocateBitmap(HDC desktop_dc,
|
| bmi.bmiHeader.biSizeImage / std::abs(bmi.bmiHeader.biHeight));
|
| }
|
|
|
| -ScreenCapturerWin::ScreenCapturerWin()
|
| +ScreenCapturerWin::ScreenCapturerWin(bool disable_aero)
|
| : delegate_(NULL),
|
| desktop_dc_rect_(SkIRect::MakeEmpty()),
|
| composition_func_(NULL),
|
| set_thread_execution_state_failed_(false) {
|
| + if (disable_aero) {
|
| + // Load dwmapi.dll dynamically since it is not available on XP.
|
| + if (!dwmapi_library_.is_valid()) {
|
| + base::FilePath path(base::GetNativeLibraryName(
|
| + UTF8ToUTF16(kDwmapiLibraryName)));
|
| + dwmapi_library_.Reset(base::LoadNativeLibrary(path, NULL));
|
| + }
|
| +
|
| + if (dwmapi_library_.is_valid() && composition_func_ == NULL) {
|
| + composition_func_ = static_cast<DwmEnableCompositionFunc>(
|
| + dwmapi_library_.GetFunctionPointer("DwmEnableComposition"));
|
| + }
|
| + }
|
| }
|
|
|
| ScreenCapturerWin::~ScreenCapturerWin() {
|
| @@ -275,18 +288,6 @@ void ScreenCapturerWin::Start(Delegate* delegate) {
|
|
|
| delegate_ = delegate;
|
|
|
| - // Load dwmapi.dll dynamically since it is not available on XP.
|
| - if (!dwmapi_library_.is_valid()) {
|
| - base::FilePath path(base::GetNativeLibraryName(
|
| - UTF8ToUTF16(kDwmapiLibraryName)));
|
| - dwmapi_library_.Reset(base::LoadNativeLibrary(path, NULL));
|
| - }
|
| -
|
| - if (dwmapi_library_.is_valid() && composition_func_ == NULL) {
|
| - composition_func_ = static_cast<DwmEnableCompositionFunc>(
|
| - dwmapi_library_.GetFunctionPointer("DwmEnableComposition"));
|
| - }
|
| -
|
| // Vote to disable Aero composited desktop effects while capturing. Windows
|
| // will restore Aero automatically if the process exits. This has no effect
|
| // under Windows 8 or higher. See crbug.com/124018.
|
| @@ -602,7 +603,13 @@ void ScreenCapturer::Delegate::ReleaseSharedBuffer(
|
|
|
| // static
|
| scoped_ptr<ScreenCapturer> ScreenCapturer::Create() {
|
| - return scoped_ptr<ScreenCapturer>(new ScreenCapturerWin());
|
| + return CreateWithDisableAero(true);
|
| +}
|
| +
|
| +// static
|
| +scoped_ptr<ScreenCapturer> ScreenCapturer::CreateWithDisableAero(
|
| + bool disable_aero) {
|
| + return scoped_ptr<ScreenCapturer>(new ScreenCapturerWin(disable_aero));
|
| }
|
|
|
| } // namespace media
|
|
|