OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
11 #include "webrtc/modules/desktop_capture/shared_desktop_frame.h" | 11 #include "webrtc/modules/desktop_capture/shared_desktop_frame.h" |
12 | 12 |
13 #include "webrtc/base/scoped_ptr.h" | 13 #include <memory> |
| 14 |
14 #include "webrtc/system_wrappers/include/atomic32.h" | 15 #include "webrtc/system_wrappers/include/atomic32.h" |
15 | 16 |
16 namespace webrtc { | 17 namespace webrtc { |
17 | 18 |
18 class SharedDesktopFrame::Core { | 19 class SharedDesktopFrame::Core { |
19 public: | 20 public: |
20 Core(DesktopFrame* frame) : frame_(frame) {} | 21 Core(DesktopFrame* frame) : frame_(frame) {} |
21 | 22 |
22 DesktopFrame* frame() { return frame_.get(); } | 23 DesktopFrame* frame() { return frame_.get(); } |
23 | 24 |
24 bool HasOneRef() { return ref_count_.Value() == 1; } | 25 bool HasOneRef() { return ref_count_.Value() == 1; } |
25 | 26 |
26 virtual int32_t AddRef() { | 27 virtual int32_t AddRef() { |
27 return ++ref_count_; | 28 return ++ref_count_; |
28 } | 29 } |
29 | 30 |
30 virtual int32_t Release() { | 31 virtual int32_t Release() { |
31 int32_t ref_count; | 32 int32_t ref_count; |
32 ref_count = --ref_count_; | 33 ref_count = --ref_count_; |
33 if (ref_count == 0) | 34 if (ref_count == 0) |
34 delete this; | 35 delete this; |
35 return ref_count; | 36 return ref_count; |
36 } | 37 } |
37 | 38 |
38 private: | 39 private: |
39 virtual ~Core() {} | 40 virtual ~Core() {} |
40 | 41 |
41 Atomic32 ref_count_; | 42 Atomic32 ref_count_; |
42 rtc::scoped_ptr<DesktopFrame> frame_; | 43 std::unique_ptr<DesktopFrame> frame_; |
43 | 44 |
44 RTC_DISALLOW_COPY_AND_ASSIGN(Core); | 45 RTC_DISALLOW_COPY_AND_ASSIGN(Core); |
45 }; | 46 }; |
46 | 47 |
47 SharedDesktopFrame::~SharedDesktopFrame() {} | 48 SharedDesktopFrame::~SharedDesktopFrame() {} |
48 | 49 |
49 // static | 50 // static |
50 SharedDesktopFrame* SharedDesktopFrame::Wrap( | 51 SharedDesktopFrame* SharedDesktopFrame::Wrap( |
51 DesktopFrame* desktop_frame) { | 52 DesktopFrame* desktop_frame) { |
52 rtc::scoped_refptr<Core> core(new Core(desktop_frame)); | 53 rtc::scoped_refptr<Core> core(new Core(desktop_frame)); |
(...skipping 18 matching lines...) Expand all Loading... |
71 | 72 |
72 SharedDesktopFrame::SharedDesktopFrame(rtc::scoped_refptr<Core> core) | 73 SharedDesktopFrame::SharedDesktopFrame(rtc::scoped_refptr<Core> core) |
73 : DesktopFrame(core->frame()->size(), | 74 : DesktopFrame(core->frame()->size(), |
74 core->frame()->stride(), | 75 core->frame()->stride(), |
75 core->frame()->data(), | 76 core->frame()->data(), |
76 core->frame()->shared_memory()), | 77 core->frame()->shared_memory()), |
77 core_(core) { | 78 core_(core) { |
78 } | 79 } |
79 | 80 |
80 } // namespace webrtc | 81 } // namespace webrtc |
OLD | NEW |