widget/android/AndroidLayerViewWrapper.h
author Mike Habicher <mikeh@mozilla.com>
Wed, 07 Aug 2013 19:51:54 -0400
changeset 119839 1433d653b701fcec58d146f92c90d4630beec958
parent 103993 1dd671e62713e98043e87a4686759c66f255a4d6
permissions -rw-r--r--
Bug 890427 - Let the Camera app know when the preview has actually started/stopped. r=jst, a=leo+

/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef AndroidLayerViewWrapper_h__
#define AndroidLayerViewWrapper_h__

#include <jni.h>
#include <pthread.h>

class AndroidEGLObject {
public:
    static void Init(JNIEnv* aJEnv);
};

typedef void* EGLSurface;

class AndroidGLController {
public:
    static void Init(JNIEnv* aJEnv);

    void Acquire(JNIEnv* aJEnv, jobject aJObj);
    void SetGLVersion(int aVersion);
    void Reacquire(JNIEnv* aJEnv, jobject aJObj);
    EGLSurface ProvideEGLSurface();
    void WaitForValidSurface();

private:
    static jmethodID jSetGLVersionMethod;
    static jmethodID jWaitForValidSurfaceMethod;
    static jmethodID jProvideEGLSurfaceMethod;
    static jmethodID jResumeCompositorIfValidMethod;

    // the JNIEnv for the compositor thread
    JNIEnv* mJEnv;
    pthread_t mThread;
    jobject mJObj;
};

#endif