Chromium Code Reviews| Index: webrtc/modules/desktop_capture/x11/x_server_pixel_buffer.cc |
| diff --git a/webrtc/modules/desktop_capture/x11/x_server_pixel_buffer.cc b/webrtc/modules/desktop_capture/x11/x_server_pixel_buffer.cc |
| index bcfcb7e02792a86c940852aab545d1783f7b329d..ca84dfcb8a2042f422966972aa462a338bafa0ff 100644 |
| --- a/webrtc/modules/desktop_capture/x11/x_server_pixel_buffer.cc |
| +++ b/webrtc/modules/desktop_capture/x11/x_server_pixel_buffer.cc |
| @@ -59,11 +59,7 @@ bool IsXImageRGBFormat(XImage* image) { |
| namespace webrtc { |
| -XServerPixelBuffer::XServerPixelBuffer() |
| - : display_(NULL), window_(0), |
| - x_image_(NULL), |
| - shm_segment_info_(NULL), shm_pixmap_(0), shm_gc_(NULL) { |
| -} |
| +XServerPixelBuffer::XServerPixelBuffer() {} |
| XServerPixelBuffer::~XServerPixelBuffer() { |
| Release(); |
| @@ -229,7 +225,9 @@ void XServerPixelBuffer::Synchronize() { |
| if (shm_segment_info_ && !shm_pixmap_) { |
| // XShmGetImage can fail if the display is being reconfigured. |
| XErrorTrap error_trap(display_); |
| - XShmGetImage(display_, window_, x_image_, 0, 0, AllPlanes); |
| + // XShmGetImage will return false if the window is partially out of screen. |
|
Sergey Ulanov
2016/06/10 23:35:58
s/will return false/fails/
|
| + xshm_get_image_succeeded_ = |
| + XShmGetImage(display_, window_, x_image_, 0, 0, AllPlanes); |
| } |
| } |
| @@ -240,7 +238,7 @@ void XServerPixelBuffer::CaptureRect(const DesktopRect& rect, |
| uint8_t* data; |
| - if (shm_segment_info_) { |
| + if (shm_segment_info_ && (shm_pixmap_ || xshm_get_image_succeeded_)) { |
| if (shm_pixmap_) { |
| XCopyArea(display_, window_, shm_pixmap_, shm_gc_, |
| rect.left(), rect.top(), rect.width(), rect.height(), |