#include "surfaceInterface.h" #include <cutils/log.h> #include <gui/Surface.h> class SurfaceInterface : public android::ANativeObjectBase< ANativeWindow, android::Surface, android::RefBase> { public: static SurfaceInterface* get(); void setAsyncMode(ANativeWindow* anw, bool async) { ALOGD("SurfaceInterface::%s: set async mode %d", __func__, async); window = anw; android::Surface* s = android::Surface::getSelf(window); s->setAsyncMode(async); window = NULL; } ANativeWindow* window; }; static SurfaceInterface* sSurfaceInterface = NULL; SurfaceInterface* SurfaceInterface::get() { if (!sSurfaceInterface) sSurfaceInterface = new SurfaceInterface; return sSurfaceInterface; } extern "C" void surfaceInterface_init() { SurfaceInterface::get(); } extern "C" void surfaceInterface_setAsyncModeForWindow(void* window) { SurfaceInterface::get()->setAsyncMode((ANativeWindow*)window, true); }