Pepper_47_C++_interfaces
resource.cc
Go to the documentation of this file.
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
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 
12 namespace pp {
13 
14 Resource::Resource() : pp_resource_(0) {
15 }
16 
17 Resource::Resource(const Resource& other) : pp_resource_(other.pp_resource_) {
18  if (!is_null())
19  Module::Get()->core()->AddRefResource(pp_resource_);
20 }
21 
23  if (!is_null())
24  Module::Get()->core()->ReleaseResource(pp_resource_);
25 }
26 
28  if (!other.is_null())
29  Module::Get()->core()->AddRefResource(other.pp_resource_);
30  if (!is_null())
31  Module::Get()->core()->ReleaseResource(pp_resource_);
32  pp_resource_ = other.pp_resource_;
33  return *this;
34 }
35 
37  PP_Resource ret = pp_resource_;
38  pp_resource_ = 0;
39  return ret;
40 }
41 
42 Resource::Resource(PP_Resource resource) : pp_resource_(resource) {
43  if (!is_null())
44  Module::Get()->core()->AddRefResource(pp_resource_);
45 }
46 
47 Resource::Resource(PassRef, PP_Resource resource) : pp_resource_(resource) {
48 }
49 
51  PP_DCHECK(!pp_resource_);
52  pp_resource_ = resource;
53 }
54 
56  if (is_null())
57  return;
58  Module::Get()->core()->ReleaseResource(pp_resource_);
59  pp_resource_ = 0;
60 }
61 
62 } // namespace pp
void PassRefFromConstructor(PP_Resource resource)
Definition: resource.cc:50
void AddRefResource(PP_Resource resource)
Definition: core.h:31
virtual ~Resource()
Destructor.
Definition: resource.cc:22
Resource()
The default constructor.
Definition: resource.cc:14
PP_Resource detach()
Definition: resource.cc:36
Core * core()
Definition: module.h:74
#define PP_DCHECK(a)
Definition: logging.h:16
void ReleaseResource(PP_Resource resource)
Definition: core.h:41
PassRef
Definition: pass_ref.h:17
bool is_null() const
Definition: resource.h:45
A reference counted module resource.
Definition: resource.h:20
static Module * Get()
Resource & operator=(const Resource &other)
Definition: resource.cc:27
void Clear()
Sets this resource to null. This releases ownership of the resource.
Definition: resource.cc:55