Loading libs/renderengine/gl/GLESRenderEngine.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -433,6 +433,7 @@ GLESRenderEngine::GLESRenderEngine(const RenderEngineCreationArgs& args, EGLDisp } mImageManager = std::make_unique<ImageManager>(this); mImageManager->initThread(); mDrawingBuffer = createFramebuffer(); } Loading libs/renderengine/gl/ImageManager.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -14,6 +14,9 @@ * limitations under the License. */ //#define LOG_NDEBUG 0 #undef LOG_TAG #define LOG_TAG "RenderEngine" #define ATRACE_TAG ATRACE_TAG_GRAPHICS #include <pthread.h> Loading @@ -27,7 +30,10 @@ namespace android { namespace renderengine { namespace gl { ImageManager::ImageManager(GLESRenderEngine* engine) : mEngine(engine) { ImageManager::ImageManager(GLESRenderEngine* engine) : mEngine(engine) {} void ImageManager::initThread() { mThread = std::thread([this]() { threadMain(); }); pthread_setname_np(mThread.native_handle(), "ImageManager"); // Use SCHED_FIFO to minimize jitter struct sched_param param = {0}; Loading Loading @@ -133,6 +139,8 @@ void ImageManager::threadMain() { entry.barrier->condition.notify_one(); } } ALOGD("Reached end of threadMain, terminating ImageManager thread!"); } } // namespace gl Loading libs/renderengine/gl/ImageManager.h +5 −1 Original line number Diff line number Diff line Loading @@ -39,6 +39,10 @@ public: }; ImageManager(GLESRenderEngine* engine); ~ImageManager(); // Starts the background thread for the ImageManager // We need this to guarantee that the class is fully-constructed before the // thread begins running. void initThread(); void cacheAsync(const sp<GraphicBuffer>& buffer, const std::shared_ptr<Barrier>& barrier) EXCLUDES(mMutex); status_t cache(const sp<GraphicBuffer>& buffer); Loading @@ -57,7 +61,7 @@ private: void queueOperation(const QueueEntry&& entry); void threadMain(); GLESRenderEngine* const mEngine; std::thread mThread = std::thread([this]() { threadMain(); }); std::thread mThread; std::condition_variable_any mCondition; std::mutex mMutex; std::queue<QueueEntry> mQueue GUARDED_BY(mMutex); Loading Loading
libs/renderengine/gl/GLESRenderEngine.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -433,6 +433,7 @@ GLESRenderEngine::GLESRenderEngine(const RenderEngineCreationArgs& args, EGLDisp } mImageManager = std::make_unique<ImageManager>(this); mImageManager->initThread(); mDrawingBuffer = createFramebuffer(); } Loading
libs/renderengine/gl/ImageManager.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -14,6 +14,9 @@ * limitations under the License. */ //#define LOG_NDEBUG 0 #undef LOG_TAG #define LOG_TAG "RenderEngine" #define ATRACE_TAG ATRACE_TAG_GRAPHICS #include <pthread.h> Loading @@ -27,7 +30,10 @@ namespace android { namespace renderengine { namespace gl { ImageManager::ImageManager(GLESRenderEngine* engine) : mEngine(engine) { ImageManager::ImageManager(GLESRenderEngine* engine) : mEngine(engine) {} void ImageManager::initThread() { mThread = std::thread([this]() { threadMain(); }); pthread_setname_np(mThread.native_handle(), "ImageManager"); // Use SCHED_FIFO to minimize jitter struct sched_param param = {0}; Loading Loading @@ -133,6 +139,8 @@ void ImageManager::threadMain() { entry.barrier->condition.notify_one(); } } ALOGD("Reached end of threadMain, terminating ImageManager thread!"); } } // namespace gl Loading
libs/renderengine/gl/ImageManager.h +5 −1 Original line number Diff line number Diff line Loading @@ -39,6 +39,10 @@ public: }; ImageManager(GLESRenderEngine* engine); ~ImageManager(); // Starts the background thread for the ImageManager // We need this to guarantee that the class is fully-constructed before the // thread begins running. void initThread(); void cacheAsync(const sp<GraphicBuffer>& buffer, const std::shared_ptr<Barrier>& barrier) EXCLUDES(mMutex); status_t cache(const sp<GraphicBuffer>& buffer); Loading @@ -57,7 +61,7 @@ private: void queueOperation(const QueueEntry&& entry); void threadMain(); GLESRenderEngine* const mEngine; std::thread mThread = std::thread([this]() { threadMain(); }); std::thread mThread; std::condition_variable_any mCondition; std::mutex mMutex; std::queue<QueueEntry> mQueue GUARDED_BY(mMutex); Loading