| Index: native_client_sdk/src/tests/nacl_io_test/fake_resource_manager.h
|
| diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_resource_manager.h b/native_client_sdk/src/tests/nacl_io_test/fake_resource_manager.h
|
| index f545e910c6c2403e4c4b64b8a4fd039e36e9054a..33c44444c39a2b4ff686fe3ad54ac1d98f6ba11a 100644
|
| --- a/native_client_sdk/src/tests/nacl_io_test/fake_resource_manager.h
|
| +++ b/native_client_sdk/src/tests/nacl_io_test/fake_resource_manager.h
|
| @@ -55,6 +55,14 @@ class FakeResourceTracker {
|
| void Release() { sdk_util::AtomicAddFetch(&ref_count_, -1); }
|
| int32_t ref_count() const { return ref_count_; }
|
|
|
| + // Give up ownership of this resource. It is the responsibility of the caller
|
| + // to delete this FakeResource.
|
| + FakeResource* Pass() {
|
| + FakeResource* result = resource_;
|
| + resource_ = NULL;
|
| + return result;
|
| + }
|
| +
|
| template <typename T>
|
| T* resource() {
|
| if (!CheckType(T::classname()))
|
| @@ -63,6 +71,8 @@ class FakeResourceTracker {
|
| return static_cast<T*>(resource_);
|
| }
|
|
|
| + FakeResource* resource() { return resource_; }
|
| +
|
| const char* classname() const { return classname_; }
|
| const char* file() const { return file_; }
|
| int line() const { return line_; }
|
| @@ -82,7 +92,11 @@ class FakeResourceTracker {
|
| class FakeResource {
|
| public:
|
| FakeResource() {}
|
| + // Called when the resource is destroyed. For debugging purposes, this does
|
| + // not happen until the resource manager is destroyed.
|
| virtual ~FakeResource() {}
|
| + // Called when the last reference to the resource is released.
|
| + virtual void Destroy() {}
|
|
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(FakeResource);
|
| @@ -94,6 +108,6 @@ inline T* FakeResourceManager::Get(PP_Resource handle) {
|
| }
|
|
|
| #define CREATE_RESOURCE(MANAGER, TYPE, RESOURCE) \
|
| - (MANAGER)->Create(RESOURCE, #TYPE, __FILE__, __LINE__)
|
| + (MANAGER)->Create((RESOURCE), #TYPE, __FILE__, __LINE__)
|
|
|
| #endif // LIBRARIES_NACL_IO_TEST_FAKE_RESOURCE_MANAGER_H_
|
|
|