]> git.sesse.net Git - casparcg/blobdiff - dependencies64/cef/linux/libcef_dll/base/cef_ref_counted.cc
Upgrade CEF to 3.3029.1611.g44e39a8 / Chromium 58.0.3029.81.
[casparcg] / dependencies64 / cef / linux / libcef_dll / base / cef_ref_counted.cc
diff --git a/dependencies64/cef/linux/libcef_dll/base/cef_ref_counted.cc b/dependencies64/cef/linux/libcef_dll/base/cef_ref_counted.cc
new file mode 100644 (file)
index 0000000..7062498
--- /dev/null
@@ -0,0 +1,53 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "include/base/cef_ref_counted.h"
+#include "include/base/cef_thread_collision_warner.h"
+
+namespace base {
+
+namespace cef_subtle {
+
+bool RefCountedThreadSafeBase::HasOneRef() const {
+  return AtomicRefCountIsOne(
+      &const_cast<RefCountedThreadSafeBase*>(this)->ref_count_);
+}
+
+RefCountedThreadSafeBase::RefCountedThreadSafeBase() : ref_count_(0) {
+#if DCHECK_IS_ON()
+  in_dtor_ = false;
+#endif
+}
+
+RefCountedThreadSafeBase::~RefCountedThreadSafeBase() {
+#if DCHECK_IS_ON()
+  DCHECK(in_dtor_) << "RefCountedThreadSafe object deleted without "
+                      "calling Release()";
+#endif
+}
+
+void RefCountedThreadSafeBase::AddRef() const {
+#if DCHECK_IS_ON()
+  DCHECK(!in_dtor_);
+#endif
+  AtomicRefCountInc(&ref_count_);
+}
+
+bool RefCountedThreadSafeBase::Release() const {
+#if DCHECK_IS_ON()
+  DCHECK(!in_dtor_);
+  DCHECK(!AtomicRefCountIsZero(&ref_count_));
+#endif
+  if (!AtomicRefCountDec(&ref_count_)) {
+#if DCHECK_IS_ON()
+    in_dtor_ = true;
+#endif
+    return true;
+  }
+  return false;
+}
+
+}  // namespace cef_subtle
+
+}  // namespace base