blob: 3ccc198b3b116ac7e842fd9f53bcb91032c0c7cb [file] [log] [blame]
[email protected]1758e882010-11-01 16:16:501// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "ppapi/cpp/resource.h"
6
7#include <algorithm>
8
9#include "ppapi/cpp/logging.h"
10#include "ppapi/cpp/module.h"
11
12namespace pp {
13
14Resource::Resource() : pp_resource_(0) {
15}
16
17Resource::Resource(const Resource& other) : pp_resource_(other.pp_resource_) {
18 if (!is_null())
19 Module::Get()->core()->AddRefResource(pp_resource_);
20}
21
22Resource::~Resource() {
23 if (!is_null())
24 Module::Get()->core()->ReleaseResource(pp_resource_);
25}
26
27Resource& Resource::operator=(const Resource& other) {
[email protected]fba17e472011-01-12 00:41:1928 if (!other.is_null())
29 Module::Get()->core()->AddRefResource(other.pp_resource_);
[email protected]b99603c2010-12-30 22:13:3230 if (!is_null())
31 Module::Get()->core()->ReleaseResource(pp_resource_);
32 pp_resource_ = other.pp_resource_;
[email protected]1758e882010-11-01 16:16:5033 return *this;
34}
35
[email protected]1758e882010-11-01 16:16:5036PP_Resource Resource::detach() {
37 PP_Resource ret = pp_resource_;
38 pp_resource_ = 0;
39 return ret;
40}
41
42Resource::Resource(PP_Resource resource) : pp_resource_(resource) {
43 if (!is_null())
44 Module::Get()->core()->AddRefResource(pp_resource_);
45}
46
[email protected]09af0f72012-02-27 20:23:1947Resource::Resource(PassRef, PP_Resource resource) : pp_resource_(resource) {
48}
49
[email protected]1758e882010-11-01 16:16:5050void Resource::PassRefFromConstructor(PP_Resource resource) {
51 PP_DCHECK(!pp_resource_);
52 pp_resource_ = resource;
53}
54
55} // namespace pp