Index: webrtc/modules/desktop_capture/window_capturer_x11.cc |
diff --git a/webrtc/modules/desktop_capture/window_capturer_x11.cc b/webrtc/modules/desktop_capture/window_capturer_x11.cc |
old mode 100755 |
new mode 100644 |
index 8ead98109a883ab0ed2b24d17fc5cdc3e1dc4192..d88585bfa8052d34a0de60b58a8089d6a3992bca |
--- a/webrtc/modules/desktop_capture/window_capturer_x11.cc |
+++ b/webrtc/modules/desktop_capture/window_capturer_x11.cc |
@@ -36,10 +36,7 @@ namespace { |
template <class PropertyType> |
class XWindowProperty { |
public: |
- XWindowProperty(Display* display, Window window, Atom property) |
- : is_valid_(false), |
- size_(0), |
- data_(NULL) { |
+ XWindowProperty(Display* display, Window window, Atom property) { |
const int kBitsPerByte = 8; |
Atom actual_type; |
int actual_format; |
@@ -49,7 +46,7 @@ class XWindowProperty { |
&actual_format, &size_, |
&bytes_after, &data_); |
if (status != Success) { |
- data_ = NULL; |
+ data_ = nullptr; |
return; |
} |
if (sizeof(PropertyType) * kBitsPerByte != actual_format) { |
@@ -78,9 +75,9 @@ class XWindowProperty { |
} |
private: |
- bool is_valid_; |
- unsigned long size_; // NOLINT: type required by XGetWindowProperty |
- unsigned char* data_; |
+ bool is_valid_ = false; |
+ unsigned long size_ = 0; // NOLINT: type required by XGetWindowProperty |
+ unsigned char* data_ = nullptr; |
RTC_DISALLOW_COPY_AND_ASSIGN(XWindowProperty); |
}; |
@@ -117,26 +114,23 @@ class WindowCapturerLinux : public WindowCapturer, |
// Returns window title for the specified X |window|. |
bool GetWindowTitle(::Window window, std::string* title); |
- Callback* callback_; |
+ Callback* callback_ = nullptr; |
rtc::scoped_refptr<SharedXDisplay> x_display_; |
Atom wm_state_atom_; |
Atom window_type_atom_; |
Atom normal_window_type_atom_; |
- bool has_composite_extension_; |
+ bool has_composite_extension_ = false; |
- ::Window selected_window_; |
+ ::Window selected_window_ = 0; |
XServerPixelBuffer x_server_pixel_buffer_; |
RTC_DISALLOW_COPY_AND_ASSIGN(WindowCapturerLinux); |
}; |
WindowCapturerLinux::WindowCapturerLinux(const DesktopCaptureOptions& options) |
- : callback_(NULL), |
- x_display_(options.x_display()), |
- has_composite_extension_(false), |
- selected_window_(0) { |
+ : x_display_(options.x_display()) { |
// Create Atoms so we don't need to do it every time they are used. |
wm_state_atom_ = XInternAtom(display(), "WM_STATE", True); |
window_type_atom_ = XInternAtom(display(), "_NET_WM_WINDOW_TYPE", True); |
@@ -280,7 +274,7 @@ void WindowCapturerLinux::Start(Callback* callback) { |
void WindowCapturerLinux::Capture(const DesktopRegion& region) { |
if (!x_server_pixel_buffer_.IsWindowValid()) { |
LOG(LS_INFO) << "The window is no longer valid."; |
- callback_->OnCaptureCompleted(NULL); |
+ callback_->OnCaptureResult(Result::ERROR_PERMANENT, nullptr); |
return; |
} |
@@ -291,21 +285,21 @@ void WindowCapturerLinux::Capture(const DesktopRegion& region) { |
// visible on screen and not covered by any other window. This is not |
// something we want so instead, just bail out. |
LOG(LS_INFO) << "No Xcomposite extension detected."; |
- callback_->OnCaptureCompleted(NULL); |
+ callback_->OnCaptureResult(Result::ERROR_PERMANENT, nullptr); |
return; |
} |
- DesktopFrame* frame = |
- new BasicDesktopFrame(x_server_pixel_buffer_.window_size()); |
+ std::unique_ptr<DesktopFrame> frame( |
+ new BasicDesktopFrame(x_server_pixel_buffer_.window_size())); |
x_server_pixel_buffer_.Synchronize(); |
x_server_pixel_buffer_.CaptureRect(DesktopRect::MakeSize(frame->size()), |
- frame); |
+ frame.get()); |
frame->mutable_updated_region()->SetRect( |
DesktopRect::MakeSize(frame->size())); |
- callback_->OnCaptureCompleted(frame); |
+ callback_->OnCaptureResult(Result::SUCCESS, std::move(frame)); |
} |
bool WindowCapturerLinux::HandleXEvent(const XEvent& event) { |
@@ -399,12 +393,12 @@ bool WindowCapturerLinux::GetWindowTitle(::Window window, std::string* title) { |
int status; |
bool result = false; |
XTextProperty window_name; |
- window_name.value = NULL; |
+ window_name.value = nullptr; |
if (window) { |
status = XGetWMName(display(), window, &window_name); |
if (status && window_name.value && window_name.nitems) { |
int cnt; |
- char **list = NULL; |
+ char** list = nullptr; |
status = Xutf8TextPropertyToTextList(display(), &window_name, &list, |
&cnt); |
if (status >= Success && cnt && *list) { |
@@ -429,7 +423,7 @@ bool WindowCapturerLinux::GetWindowTitle(::Window window, std::string* title) { |
// static |
WindowCapturer* WindowCapturer::Create(const DesktopCaptureOptions& options) { |
if (!options.x_display()) |
- return NULL; |
+ return nullptr; |
return new WindowCapturerLinux(options); |
} |