diff --git a/webrtc/base/refcount.h b/webrtc/base/refcount.h index 55ce23a348..9e881c85bd 100644 --- a/webrtc/base/refcount.h +++ b/webrtc/base/refcount.h @@ -12,6 +12,7 @@ #define WEBRTC_BASE_REFCOUNT_H_ #include +#include #include "webrtc/base/atomicops.h" @@ -22,6 +23,7 @@ class RefCountInterface { public: virtual int AddRef() const = 0; virtual int Release() const = 0; + protected: virtual ~RefCountInterface() {} }; @@ -29,75 +31,123 @@ class RefCountInterface { template class RefCountedObject : public T { public: - RefCountedObject() : ref_count_(0) { - } + RefCountedObject() {} - template - explicit RefCountedObject(P p) : T(p), ref_count_(0) { - } + template + explicit RefCountedObject(const P& p) : T(p) {} - template - RefCountedObject(P1 p1, P2 p2) : T(p1, p2), ref_count_(0) { - } + template + explicit RefCountedObject(P&& p) : T(std::move(p)) {} - template - RefCountedObject(P1 p1, P2 p2, P3 p3) : T(p1, p2, p3), ref_count_(0) { - } + template + RefCountedObject(P1 p1, P2 p2) : T(p1, p2) {} - template - RefCountedObject(P1 p1, P2 p2, P3 p3, P4 p4) - : T(p1, p2, p3, p4), ref_count_(0) { - } + template + RefCountedObject(P1 p1, P2 p2, P3 p3) : T(p1, p2, p3) {} - template - RefCountedObject(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) - : T(p1, p2, p3, p4, p5), ref_count_(0) { - } + template + RefCountedObject(P1 p1, P2 p2, P3 p3, P4 p4) : T(p1, p2, p3, p4) {} - template + template + RefCountedObject(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) : T(p1, p2, p3, p4, p5) {} + + template RefCountedObject(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) - : T(p1, p2, p3, p4, p5, p6), ref_count_(0) { - } + : T(p1, p2, p3, p4, p5, p6) {} - template + template RefCountedObject(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7) - : T(p1, p2, p3, p4, p5, p6, p7), ref_count_(0) { - } + : T(p1, p2, p3, p4, p5, p6, p7) {} - template + template RefCountedObject(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8) - : T(p1, p2, p3, p4, p5, p6, p7, p8), ref_count_(0) { - } + : T(p1, p2, p3, p4, p5, p6, p7, p8) {} - template - RefCountedObject( - P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9) - : T(p1, p2, p3, p4, p5, p6, p7, p8, p9), ref_count_(0) { - } + template + RefCountedObject(P1 p1, + P2 p2, + P3 p3, + P4 p4, + P5 p5, + P6 p6, + P7 p7, + P8 p8, + P9 p9) + : T(p1, p2, p3, p4, p5, p6, p7, p8, p9) {} - template - RefCountedObject( - P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10) - : T(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10), ref_count_(0) { - } + template + RefCountedObject(P1 p1, + P2 p2, + P3 p3, + P4 p4, + P5 p5, + P6 p6, + P7 p7, + P8 p8, + P9 p9, + P10 p10) + : T(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) {} - template - RefCountedObject( - P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, - P11 p11) - : T(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11), ref_count_(0) { - } + template + RefCountedObject(P1 p1, + P2 p2, + P3 p3, + P4 p4, + P5 p5, + P6 p6, + P7 p7, + P8 p8, + P9 p9, + P10 p10, + P11 p11) + : T(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) {} - virtual int AddRef() const { - return AtomicOps::Increment(&ref_count_); - } + virtual int AddRef() const { return AtomicOps::Increment(&ref_count_); } virtual int Release() const { int count = AtomicOps::Decrement(&ref_count_); @@ -118,10 +168,9 @@ class RefCountedObject : public T { } protected: - virtual ~RefCountedObject() { - } + virtual ~RefCountedObject() {} - mutable volatile int ref_count_; + mutable volatile int ref_count_ = 0; }; } // namespace rtc diff --git a/webrtc/modules/desktop_capture/shared_desktop_frame.cc b/webrtc/modules/desktop_capture/shared_desktop_frame.cc index e069a54d02..3114235273 100644 --- a/webrtc/modules/desktop_capture/shared_desktop_frame.cc +++ b/webrtc/modules/desktop_capture/shared_desktop_frame.cc @@ -23,7 +23,7 @@ SharedDesktopFrame::~SharedDesktopFrame() {} std::unique_ptr SharedDesktopFrame::Wrap( std::unique_ptr desktop_frame) { return std::unique_ptr( - new SharedDesktopFrame(new Core(desktop_frame.release()))); + new SharedDesktopFrame(new Core(std::move(desktop_frame)))); } SharedDesktopFrame* SharedDesktopFrame::Wrap(DesktopFrame* desktop_frame) {