Fix crash in the window capturer on windows

BUG=crbug.com/289753
R=wez@chromium.org

Review URL: https://webrtc-codereview.appspot.com/2203005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4737 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
sergeyu@chromium.org 2013-09-12 19:17:26 +00:00
parent 7959e16cc2
commit 6a5cc9d899
2 changed files with 7 additions and 0 deletions

View File

@ -10,6 +10,8 @@
#include "webrtc/modules/desktop_capture/desktop_frame_win.h" #include "webrtc/modules/desktop_capture/desktop_frame_win.h"
#include "webrtc/system_wrappers/interface/logging.h"
namespace webrtc { namespace webrtc {
DesktopFrameWin::DesktopFrameWin(DesktopSize size, DesktopFrameWin::DesktopFrameWin(DesktopSize size,
@ -48,6 +50,7 @@ DesktopFrameWin* DesktopFrameWin::Create(DesktopSize size,
HBITMAP bitmap = CreateDIBSection(hdc, &bmi, DIB_RGB_COLORS, &data, HBITMAP bitmap = CreateDIBSection(hdc, &bmi, DIB_RGB_COLORS, &data,
section_handle, 0); section_handle, 0);
if (!bitmap) { if (!bitmap) {
LOG(LS_WARNING) << "Failed to allocate new window frame " << GetLastError();
delete shared_memory; delete shared_memory;
return NULL; return NULL;
} }

View File

@ -189,6 +189,10 @@ void WindowCapturerWin::Capture(const DesktopRegion& region) {
scoped_ptr<DesktopFrameWin> frame(DesktopFrameWin::Create( scoped_ptr<DesktopFrameWin> frame(DesktopFrameWin::Create(
DesktopSize(rect.right - rect.left, rect.bottom - rect.top), DesktopSize(rect.right - rect.left, rect.bottom - rect.top),
NULL, window_dc_)); NULL, window_dc_));
if (!frame.get()) {
callback_->OnCaptureCompleted(NULL);
return;
}
HDC mem_dc = CreateCompatibleDC(window_dc_); HDC mem_dc = CreateCompatibleDC(window_dc_);
SelectObject(mem_dc, frame->bitmap()); SelectObject(mem_dc, frame->bitmap());