Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(276)

Side by Side Diff: webrtc/modules/desktop_capture/shared_desktop_frame.cc

Issue 1347793005: Replace Atomic32 with webrtc/base/atomicops.h. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: fix typo Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/atomicops.h"
13 #include "webrtc/base/scoped_ptr.h" 14 #include "webrtc/base/scoped_ptr.h"
14 #include "webrtc/system_wrappers/interface/atomic32.h"
15 15
16 namespace webrtc { 16 namespace webrtc {
17 17
18 class SharedDesktopFrame::Core { 18 class SharedDesktopFrame::Core {
19 public: 19 public:
20 Core(DesktopFrame* frame) : frame_(frame) {} 20 Core(DesktopFrame* frame) : ref_count_(0), frame_(frame) {}
21 21
22 DesktopFrame* frame() { return frame_.get(); } 22 DesktopFrame* frame() { return frame_.get(); }
23 23
24 bool HasOneRef() { return ref_count_.Value() == 1; } 24 bool HasOneRef() { return rtc::AtomicOps::AcquireLoad(&ref_count_) == 1; }
25 25
26 virtual int32_t AddRef() { 26 virtual int32_t AddRef() { return rtc::AtomicOps::Increment(&ref_count_); }
27 return ++ref_count_;
28 }
29 27
30 virtual int32_t Release() { 28 virtual int32_t Release() {
31 int32_t ref_count; 29 int32_t ref_count;
32 ref_count = --ref_count_; 30 ref_count = rtc::AtomicOps::Decrement(&ref_count_);
33 if (ref_count == 0) 31 if (ref_count == 0)
34 delete this; 32 delete this;
35 return ref_count; 33 return ref_count;
36 } 34 }
37 35
38 private: 36 private:
39 virtual ~Core() {} 37 virtual ~Core() {}
40 38
41 Atomic32 ref_count_; 39 volatile int ref_count_;
42 rtc::scoped_ptr<DesktopFrame> frame_; 40 rtc::scoped_ptr<DesktopFrame> frame_;
43 41
44 RTC_DISALLOW_COPY_AND_ASSIGN(Core); 42 RTC_DISALLOW_COPY_AND_ASSIGN(Core);
45 }; 43 };
46 44
47 SharedDesktopFrame::~SharedDesktopFrame() {} 45 SharedDesktopFrame::~SharedDesktopFrame() {}
48 46
49 // static 47 // static
50 SharedDesktopFrame* SharedDesktopFrame::Wrap( 48 SharedDesktopFrame* SharedDesktopFrame::Wrap(
51 DesktopFrame* desktop_frame) { 49 DesktopFrame* desktop_frame) {
(...skipping 19 matching lines...) Expand all
71 69
72 SharedDesktopFrame::SharedDesktopFrame(rtc::scoped_refptr<Core> core) 70 SharedDesktopFrame::SharedDesktopFrame(rtc::scoped_refptr<Core> core)
73 : DesktopFrame(core->frame()->size(), 71 : DesktopFrame(core->frame()->size(),
74 core->frame()->stride(), 72 core->frame()->stride(),
75 core->frame()->data(), 73 core->frame()->data(),
76 core->frame()->shared_memory()), 74 core->frame()->shared_memory()),
77 core_(core) { 75 core_(core) {
78 } 76 }
79 77
80 } // namespace webrtc 78 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698