tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

AndroidNativeWindow.h (1411B)


      1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 // vim:set ts=2 sts=2 sw=2 et cin:
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #ifndef AndroidNativeWindow_h__
      8 #define AndroidNativeWindow_h__
      9 
     10 #include <jni.h>
     11 #include <android/native_window.h>
     12 #include <android/native_window_jni.h>
     13 #include "mozilla/java/GeckoSurfaceWrappers.h"
     14 #include "SurfaceTexture.h"
     15 
     16 namespace mozilla {
     17 namespace gl {
     18 
     19 class AndroidNativeWindow final {
     20 public:
     21  AndroidNativeWindow() : mNativeWindow(nullptr) {}
     22 
     23  explicit AndroidNativeWindow(java::sdk::Surface::Param aSurface) {
     24    mNativeWindow =
     25        ANativeWindow_fromSurface(jni::GetEnvForThread(), aSurface.Get());
     26  }
     27 
     28  explicit AndroidNativeWindow(java::GeckoSurface::Param aSurface) {
     29    java::sdk::Surface::LocalRef surf = aSurface->GetSurface();
     30    mNativeWindow =
     31        ANativeWindow_fromSurface(jni::GetEnvForThread(), surf.Get());
     32  }
     33 
     34  ~AndroidNativeWindow() {
     35    if (mNativeWindow) {
     36      ANativeWindow_release(mNativeWindow);
     37      mNativeWindow = nullptr;
     38    }
     39  }
     40 
     41  ANativeWindow* NativeWindow() const { return mNativeWindow; }
     42 
     43 private:
     44  ANativeWindow* mNativeWindow;
     45 };
     46 
     47 }  // namespace gl
     48 }  // namespace mozilla
     49 
     50 #endif  // AndroidNativeWindow_h__