| Index: webrtc/modules/desktop_capture/win/screen_capturer_win_gdi.cc
 | 
| diff --git a/webrtc/modules/desktop_capture/win/screen_capturer_win_gdi.cc b/webrtc/modules/desktop_capture/win/screen_capturer_win_gdi.cc
 | 
| index b22f0387f110fbe5f6eb98ddccb93199e13e2a9a..87bc195ce40e06d0f0cfe0d71d9cf78bb523435f 100644
 | 
| --- a/webrtc/modules/desktop_capture/win/screen_capturer_win_gdi.cc
 | 
| +++ b/webrtc/modules/desktop_capture/win/screen_capturer_win_gdi.cc
 | 
| @@ -10,11 +10,10 @@
 | 
|  
 | 
|  #include "webrtc/modules/desktop_capture/win/screen_capturer_win_gdi.h"
 | 
|  
 | 
| -#include <assert.h>
 | 
| -
 | 
|  #include <utility>
 | 
|  
 | 
|  #include "webrtc/base/checks.h"
 | 
| +#include "webrtc/base/logging.h"
 | 
|  #include "webrtc/base/timeutils.h"
 | 
|  #include "webrtc/modules/desktop_capture/desktop_capture_options.h"
 | 
|  #include "webrtc/modules/desktop_capture/desktop_frame.h"
 | 
| @@ -110,8 +109,8 @@ bool ScreenCapturerWinGdi::SelectSource(SourceId id) {
 | 
|  }
 | 
|  
 | 
|  void ScreenCapturerWinGdi::Start(Callback* callback) {
 | 
| -  assert(!callback_);
 | 
| -  assert(callback);
 | 
| +  RTC_DCHECK(!callback_);
 | 
| +  RTC_DCHECK(callback);
 | 
|  
 | 
|    callback_ = callback;
 | 
|  
 | 
| @@ -169,15 +168,13 @@ void ScreenCapturerWinGdi::PrepareCaptureResources() {
 | 
|    }
 | 
|  
 | 
|    if (!desktop_dc_) {
 | 
| -    assert(!memory_dc_);
 | 
| +    RTC_DCHECK(!memory_dc_);
 | 
|  
 | 
|      // Create GDI device contexts to capture from the desktop into memory.
 | 
|      desktop_dc_ = GetDC(nullptr);
 | 
| -    if (!desktop_dc_)
 | 
| -      abort();
 | 
| +    RTC_CHECK(desktop_dc_);
 | 
|      memory_dc_ = CreateCompatibleDC(desktop_dc_);
 | 
| -    if (!memory_dc_)
 | 
| -      abort();
 | 
| +    RTC_CHECK(memory_dc_);
 | 
|  
 | 
|      desktop_dc_rect_ = screen_rect;
 | 
|  
 | 
| @@ -198,8 +195,8 @@ bool ScreenCapturerWinGdi::CaptureImage() {
 | 
|    // may still be reading from them.
 | 
|    if (!queue_.current_frame() ||
 | 
|        !queue_.current_frame()->size().equals(screen_rect.size())) {
 | 
| -    assert(desktop_dc_);
 | 
| -    assert(memory_dc_);
 | 
| +    RTC_DCHECK(desktop_dc_);
 | 
| +    RTC_DCHECK(memory_dc_);
 | 
|  
 | 
|      std::unique_ptr<DesktopFrame> buffer = DesktopFrameWin::Create(
 | 
|          size, shared_memory_factory_.get(), desktop_dc_);
 | 
| @@ -213,16 +210,22 @@ bool ScreenCapturerWinGdi::CaptureImage() {
 | 
|    DesktopFrameWin* current = static_cast<DesktopFrameWin*>(
 | 
|        queue_.current_frame()->GetUnderlyingFrame());
 | 
|    HGDIOBJ previous_object = SelectObject(memory_dc_, current->bitmap());
 | 
| -  if (previous_object) {
 | 
| -    BitBlt(memory_dc_, 0, 0, screen_rect.width(), screen_rect.height(),
 | 
| -           desktop_dc_, screen_rect.left(), screen_rect.top(),
 | 
| -           SRCCOPY | CAPTUREBLT);
 | 
| -
 | 
| -    // Select back the previously selected object to that the device contect
 | 
| -    // could be destroyed independently of the bitmap if needed.
 | 
| -    SelectObject(memory_dc_, previous_object);
 | 
| +  if (!previous_object || previous_object == HGDI_ERROR) {
 | 
| +    return false;
 | 
| +  }
 | 
| +
 | 
| +  bool result = (BitBlt(memory_dc_, 0, 0, screen_rect.width(),
 | 
| +      screen_rect.height(), desktop_dc_, screen_rect.left(), screen_rect.top(),
 | 
| +      SRCCOPY | CAPTUREBLT) != FALSE);
 | 
| +  if (!result) {
 | 
| +    LOG_GLE(LS_WARNING) << "BitBlt failed";
 | 
|    }
 | 
| -  return true;
 | 
| +
 | 
| +  // Select back the previously selected object to that the device contect
 | 
| +  // could be destroyed independently of the bitmap if needed.
 | 
| +  SelectObject(memory_dc_, previous_object);
 | 
| +
 | 
| +  return result;
 | 
|  }
 | 
|  
 | 
|  }  // namespace webrtc
 | 
| 
 |