From 2aef536bcda750bc265fbea60071b9ee451f2762 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mika=20Isoj=C3=A4rvi?= Date: Tue, 2 Feb 2016 13:13:48 -0800 Subject: [PATCH] Load libui.so lazily in android_native EGLImage tests. Avoid loading libui.so during test hierarchy inflation by loading it lazily when it's used for the first time instead. Bug: 26929325 Change-Id: I22348d91d415beae37016ed654e36774bbb5a504 --- modules/egl/teglAndroidUtil.cpp | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/modules/egl/teglAndroidUtil.cpp b/modules/egl/teglAndroidUtil.cpp index 64cbe9b..e32c18a 100644 --- a/modules/egl/teglAndroidUtil.cpp +++ b/modules/egl/teglAndroidUtil.cpp @@ -101,7 +101,8 @@ AndroidNativeClientBuffer::AndroidNativeClientBuffer (const LibUI& lib, GLenum f class AndroidNativeImageSource : public ImageSource { public: - AndroidNativeImageSource (GLenum format) : m_format(format) {} + AndroidNativeImageSource (GLenum format) : m_format(format), m_libui(DE_NULL) {} + ~AndroidNativeImageSource (void); MovePtr createBuffer (const glw::Functions&, Texture2D*) const; string getRequiredExtension (void) const { return "EGL_ANDROID_image_native_buffer"; } EGLImageKHR createImage (const Library& egl, EGLDisplay dpy, EGLContext ctx, EGLClientBuffer clientBuffer) const; @@ -109,9 +110,26 @@ public: protected: GLenum m_format; - LibUI m_libui; + + const LibUI& getLibUI (void) const; + +private: + mutable LibUI* m_libui; }; +AndroidNativeImageSource::~AndroidNativeImageSource (void) +{ + delete m_libui; +} + +const LibUI& AndroidNativeImageSource::getLibUI (void) const +{ + if (!m_libui) + m_libui = new LibUI(); + + return *m_libui; +} + void checkStatus (status_t status) { if (status != tcu::Android::internal::OK) @@ -120,7 +138,7 @@ void checkStatus (status_t status) MovePtr AndroidNativeImageSource::createBuffer (const glw::Functions&, Texture2D* ref) const { - MovePtr buffer (new AndroidNativeClientBuffer(m_libui, m_format)); + MovePtr buffer (new AndroidNativeClientBuffer(getLibUI(), m_format)); GraphicBuffer& graphicBuffer = buffer->getGraphicBuffer(); if (ref != DE_NULL) { @@ -157,7 +175,7 @@ MovePtr createAndroidNativeImageSource (GLenum format) { return MovePtr(new AndroidNativeImageSource(format)); } - catch (std::runtime_error& exc) + catch (const std::runtime_error& exc) { return createUnsupportedImageSource(string("Android native buffers unsupported: ") + exc.what(), format); } -- 2.7.4