1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// Use of this source code is governed by a BSD-style license that can be
3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// found in the LICENSE file.
4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen#include "ui/gl/android/surface_texture_listener.h"
6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen#include "base/location.h"
8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen#include "base/single_thread_task_runner.h"
9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen#include "base/thread_task_runner_handle.h"
10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen#include "jni/SurfaceTextureListener_jni.h"
11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chennamespace gfx {
13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
14d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenSurfaceTextureListener::SurfaceTextureListener(const base::Closure& callback)
15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    : callback_(callback),
16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen      browser_loop_(base::ThreadTaskRunnerHandle::Get()) {
17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
19d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenSurfaceTextureListener::~SurfaceTextureListener() {
20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid SurfaceTextureListener::Destroy(JNIEnv* env, jobject obj) {
23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen  delete this;
24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid SurfaceTextureListener::FrameAvailable(JNIEnv* env, jobject obj) {
27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen  if (!browser_loop_->BelongsToCurrentThread()) {
28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    browser_loop_->PostTask(FROM_HERE, callback_);
29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen  } else {
30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    callback_.Run();
31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen  }
32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// static
35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenbool SurfaceTextureListener::RegisterSurfaceTextureListener(JNIEnv* env) {
36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen  return RegisterNativesImpl(env);
37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}  // namespace gfx
40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen