Index: content/browser/media/capture/desktop_capture_device.cc |
diff --git a/content/browser/media/capture/desktop_capture_device.cc b/content/browser/media/capture/desktop_capture_device.cc |
index 930b752159408de76259fbcd81318ccf0d4b872b..246ab1b5d396557259a98af9fa6c012ae9205419 100644 |
--- a/content/browser/media/capture/desktop_capture_device.cc |
+++ b/content/browser/media/capture/desktop_capture_device.cc |
@@ -15,6 +15,7 @@ |
#include "content/browser/media/capture/desktop_capture_device_uma_types.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/desktop_media_id.h" |
+#include "content/public/browser/power_save_blocker.h" |
#include "media/base/video_util.h" |
#include "third_party/libyuv/include/libyuv/scale_argb.h" |
#include "third_party/webrtc/modules/desktop_capture/desktop_and_cursor_composer.h" |
@@ -124,6 +125,10 @@ class DesktopCaptureDevice::Core : public webrtc::DesktopCapturer::Callback { |
scoped_ptr<webrtc::BasicDesktopFrame> black_frame_; |
+ // TODO(jiayl): Remove power_save_blocker_ when there is an API to keep the |
+ // screen from sleeping for the drive-by web. |
+ scoped_ptr<PowerSaveBlocker> power_save_blocker_; |
+ |
DISALLOW_COPY_AND_ASSIGN(Core); |
}; |
@@ -164,6 +169,10 @@ void DesktopCaptureDevice::Core::AllocateAndStart( |
// This capturer always outputs ARGB, non-interlaced. |
capture_format_.pixel_format = media::PIXEL_FORMAT_ARGB; |
+ power_save_blocker_.reset(PowerSaveBlocker::Create( |
+ PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep, |
+ "DesktopCaptureDevice is running").release()); |
+ |
desktop_capturer_->Start(this); |
CaptureFrameAndScheduleNext(); |