1 // Copyright (c) 2011 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.
5 #include "ppapi/shared_impl/scoped_pp_resource.h"
7 #include "ppapi/shared_impl/ppapi_globals.h"
8 #include "ppapi/shared_impl/resource.h"
9 #include "ppapi/shared_impl/resource_tracker.h"
13 ScopedPPResource::ScopedPPResource() : id_(0) {
16 ScopedPPResource::ScopedPPResource(PP_Resource resource
) : id_(resource
) {
20 ScopedPPResource::ScopedPPResource(const PassRef
&, PP_Resource resource
)
24 ScopedPPResource::ScopedPPResource(Resource
* resource
)
25 : id_(resource
? resource
->GetReference() : 0) {
26 // GetReference AddRef's for us.
29 ScopedPPResource::ScopedPPResource(const ScopedPPResource
& other
)
34 ScopedPPResource::~ScopedPPResource() {
38 ScopedPPResource
& ScopedPPResource::operator=(PP_Resource resource
) {
40 return *this; // Be careful about self-assignment.
47 ScopedPPResource
& ScopedPPResource::operator=(
48 const ScopedPPResource
& resource
) {
49 if (id_
== resource
.id_
)
50 return *this; // Be careful about self-assignment.
57 PP_Resource
ScopedPPResource::Release() {
58 // We do NOT call CallRelease, because we want to pass our reference to the
61 PP_Resource ret
= id_
;
66 void ScopedPPResource::CallAddRef() {
68 PpapiGlobals::Get()->GetResourceTracker()->AddRefResource(id_
);
71 void ScopedPPResource::CallRelease() {
73 PpapiGlobals::Get()->GetResourceTracker()->ReleaseResource(id_
);