| Index: cc/resources/texture_mailbox_deleter.cc
|
| diff --git a/cc/resources/texture_mailbox_deleter.cc b/cc/resources/texture_mailbox_deleter.cc
|
| deleted file mode 100644
|
| index ab863684e81fd4b8bc9ce7439460f1db7a177eb5..0000000000000000000000000000000000000000
|
| --- a/cc/resources/texture_mailbox_deleter.cc
|
| +++ /dev/null
|
| @@ -1,92 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "cc/resources/texture_mailbox_deleter.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/location.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "base/single_thread_task_runner.h"
|
| -#include "cc/output/context_provider.h"
|
| -#include "cc/resources/single_release_callback.h"
|
| -#include "gpu/command_buffer/client/gles2_interface.h"
|
| -
|
| -namespace cc {
|
| -
|
| -static void DeleteTextureOnImplThread(
|
| - const scoped_refptr<ContextProvider>& context_provider,
|
| - unsigned texture_id,
|
| - uint32 sync_point,
|
| - bool is_lost) {
|
| - if (sync_point)
|
| - context_provider->ContextGL()->WaitSyncPointCHROMIUM(sync_point);
|
| - context_provider->ContextGL()->DeleteTextures(1, &texture_id);
|
| -}
|
| -
|
| -static void PostTaskFromMainToImplThread(
|
| - scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
|
| - ReleaseCallback run_impl_callback,
|
| - unsigned sync_point,
|
| - bool is_lost) {
|
| - // This posts the task to RunDeleteTextureOnImplThread().
|
| - impl_task_runner->PostTask(
|
| - FROM_HERE, base::Bind(run_impl_callback, sync_point, is_lost));
|
| -}
|
| -
|
| -TextureMailboxDeleter::TextureMailboxDeleter(
|
| - const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
|
| - : impl_task_runner_(task_runner), weak_ptr_factory_(this) {}
|
| -
|
| -TextureMailboxDeleter::~TextureMailboxDeleter() {
|
| - for (size_t i = 0; i < impl_callbacks_.size(); ++i)
|
| - impl_callbacks_.at(i)->Run(0, true);
|
| -}
|
| -
|
| -scoped_ptr<SingleReleaseCallback> TextureMailboxDeleter::GetReleaseCallback(
|
| - const scoped_refptr<ContextProvider>& context_provider,
|
| - unsigned texture_id) {
|
| - // This callback owns a reference on the |context_provider|. It must be
|
| - // destroyed on the impl thread. Upon destruction of this class, the
|
| - // callback must immediately be destroyed.
|
| - scoped_ptr<SingleReleaseCallback> impl_callback =
|
| - SingleReleaseCallback::Create(base::Bind(&DeleteTextureOnImplThread,
|
| - context_provider,
|
| - texture_id));
|
| -
|
| - impl_callbacks_.push_back(impl_callback.Pass());
|
| -
|
| - // The raw pointer to the impl-side callback is valid as long as this
|
| - // class is alive. So we guard it with a WeakPtr.
|
| - ReleaseCallback run_impl_callback(
|
| - base::Bind(&TextureMailboxDeleter::RunDeleteTextureOnImplThread,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - impl_callbacks_.back()));
|
| -
|
| - // Provide a callback for the main thread that posts back to the impl
|
| - // thread.
|
| - scoped_ptr<SingleReleaseCallback> main_callback =
|
| - SingleReleaseCallback::Create(base::Bind(
|
| - &PostTaskFromMainToImplThread, impl_task_runner_, run_impl_callback));
|
| -
|
| - return main_callback.Pass();
|
| -}
|
| -
|
| -void TextureMailboxDeleter::RunDeleteTextureOnImplThread(
|
| - SingleReleaseCallback* impl_callback,
|
| - unsigned sync_point,
|
| - bool is_lost) {
|
| - for (size_t i = 0; i < impl_callbacks_.size(); ++i) {
|
| - if (impl_callbacks_.at(i) == impl_callback) {
|
| - // Run the callback, then destroy it here on the impl thread.
|
| - impl_callbacks_.at(i)->Run(sync_point, is_lost);
|
| - impl_callbacks_.erase(impl_callbacks_.begin() + i);
|
| - return;
|
| - }
|
| - }
|
| -
|
| - NOTREACHED() << "The Callback returned by GetDeleteCallback() was called "
|
| - << "more than once.";
|
| -}
|
| -
|
| -} // namespace cc
|
|
|