OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ppapi/cpp/resource.h" | 5 #include "ppapi/cpp/resource.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "ppapi/cpp/logging.h" | 9 #include "ppapi/cpp/logging.h" |
10 #include "ppapi/cpp/module.h" | 10 #include "ppapi/cpp/module.h" |
11 | 11 |
12 namespace pp { | 12 namespace pp { |
13 | 13 |
14 Resource::Resource() : pp_resource_(0) { | 14 Resource::Resource() : pp_resource_(0) { |
15 } | 15 } |
16 | 16 |
17 Resource::Resource(const Resource& other) : pp_resource_(other.pp_resource_) { | 17 Resource::Resource(const Resource& other) : pp_resource_(other.pp_resource_) { |
18 if (!is_null()) | 18 if (!is_null()) |
19 Module::Get()->core()->AddRefResource(pp_resource_); | 19 Module::Get()->core()->AddRefResource(pp_resource_); |
20 } | 20 } |
21 | 21 |
22 Resource::~Resource() { | 22 Resource::~Resource() { |
23 if (!is_null()) | 23 if (!is_null()) |
24 Module::Get()->core()->ReleaseResource(pp_resource_); | 24 Module::Get()->core()->ReleaseResource(pp_resource_); |
25 } | 25 } |
26 | 26 |
27 Resource& Resource::operator=(const Resource& other) { | 27 Resource& Resource::operator=(const Resource& other) { |
| 28 if (!other.is_null()) |
| 29 Module::Get()->core()->AddRefResource(other.pp_resource_); |
28 if (!is_null()) | 30 if (!is_null()) |
29 Module::Get()->core()->ReleaseResource(pp_resource_); | 31 Module::Get()->core()->ReleaseResource(pp_resource_); |
30 pp_resource_ = other.pp_resource_; | 32 pp_resource_ = other.pp_resource_; |
31 if (!is_null()) | |
32 Module::Get()->core()->AddRefResource(pp_resource_); | |
33 return *this; | 33 return *this; |
34 } | 34 } |
35 | 35 |
36 PP_Resource Resource::detach() { | 36 PP_Resource Resource::detach() { |
37 PP_Resource ret = pp_resource_; | 37 PP_Resource ret = pp_resource_; |
38 pp_resource_ = 0; | 38 pp_resource_ = 0; |
39 return ret; | 39 return ret; |
40 } | 40 } |
41 | 41 |
42 Resource::Resource(PP_Resource resource) : pp_resource_(resource) { | 42 Resource::Resource(PP_Resource resource) : pp_resource_(resource) { |
43 if (!is_null()) | 43 if (!is_null()) |
44 Module::Get()->core()->AddRefResource(pp_resource_); | 44 Module::Get()->core()->AddRefResource(pp_resource_); |
45 } | 45 } |
46 | 46 |
47 void Resource::PassRefFromConstructor(PP_Resource resource) { | 47 void Resource::PassRefFromConstructor(PP_Resource resource) { |
48 PP_DCHECK(!pp_resource_); | 48 PP_DCHECK(!pp_resource_); |
49 pp_resource_ = resource; | 49 pp_resource_ = resource; |
50 } | 50 } |
51 | 51 |
52 } // namespace pp | 52 } // namespace pp |
OLD | NEW |