blob: a8210c93a8d78866afc89db2e9cf64d11b796d0d [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef FLUTTER_SHELL_PLATFORM_ANDROID_ANDROID_ENVIRONMENT_GL_H_
#define FLUTTER_SHELL_PLATFORM_ANDROID_ANDROID_ENVIRONMENT_GL_H_
#include "flutter/fml/macros.h"
#include "flutter/fml/memory/ref_counted.h"
#include "flutter/fml/time/time_delta.h"
#include "flutter/fml/time/time_point.h"
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <KHR/khrplatform.h>
namespace flutter {
namespace testing::android {
class InterceptingAndroidEnvironmentGL;
}
class AndroidEnvironmentGL
: public fml::RefCountedThreadSafe<AndroidEnvironmentGL> {
public:
bool IsValid() const;
EGLDisplay Display() const;
// Sets the presentation time for the surface.
//
// Returns false if there was a GL error or if eglPresentationTimeANDROID is
// unavailable.
virtual bool SetPresentationTime(EGLSurface surface,
fml::TimePoint time) const;
protected:
// MakeRefCounted
AndroidEnvironmentGL();
// MakeRefCounted
virtual ~AndroidEnvironmentGL();
private:
PFNEGLPRESENTATIONTIMEANDROIDPROC presentation_time_proc_;
EGLDisplay display_;
bool valid_;
friend class InterceptingAndroidEnvironmentGL;
FML_FRIEND_MAKE_REF_COUNTED(AndroidEnvironmentGL);
FML_FRIEND_REF_COUNTED_THREAD_SAFE(AndroidEnvironmentGL);
FML_DISALLOW_COPY_AND_ASSIGN(AndroidEnvironmentGL);
};
} // namespace flutter
#endif // FLUTTER_SHELL_PLATFORM_ANDROID_ANDROID_ENVIRONMENT_GL_H_