1// Copyright (c) 2013 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 "ui/gl/android/surface_texture_listener.h"
6
7#include "base/location.h"
8#include "base/single_thread_task_runner.h"
9#include "base/thread_task_runner_handle.h"
10#include "jni/SurfaceTextureListener_jni.h"
11
12namespace gfx {
13
14SurfaceTextureListener::SurfaceTextureListener(const base::Closure& callback)
15    : callback_(callback),
16      browser_loop_(base::ThreadTaskRunnerHandle::Get()) {
17}
18
19SurfaceTextureListener::~SurfaceTextureListener() {
20}
21
22void SurfaceTextureListener::Destroy(JNIEnv* env, jobject obj) {
23  delete this;
24}
25
26void SurfaceTextureListener::FrameAvailable(JNIEnv* env, jobject obj) {
27  if (!browser_loop_->BelongsToCurrentThread()) {
28    browser_loop_->PostTask(FROM_HERE, callback_);
29  } else {
30    callback_.Run();
31  }
32}
33
34// static
35bool SurfaceTextureListener::RegisterSurfaceTextureListener(JNIEnv* env) {
36  return RegisterNativesImpl(env);
37}
38
39}  // namespace gfx
40