From e9cd1b7b66c40c3e01eb84a688a3da8a59cf69ae Mon Sep 17 00:00:00 2001 From: Simon Fels Date: Tue, 22 Aug 2017 08:17:10 +0200 Subject: [PATCH] emugl: correct locking when we draw a new frame --- src/anbox/graphics/emugl/Renderer.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/anbox/graphics/emugl/Renderer.cpp b/src/anbox/graphics/emugl/Renderer.cpp index 199775f..a807131 100644 --- a/src/anbox/graphics/emugl/Renderer.cpp +++ b/src/anbox/graphics/emugl/Renderer.cpp @@ -938,13 +938,14 @@ void Renderer::draw(RendererWindow *window, const Renderable &renderable, bool Renderer::draw(EGLNativeWindowType native_window, const anbox::graphics::Rect &window_frame, const RenderableList &renderables) { + + std::unique_lock l(m_lock); + auto w = m_nativeWindows.find(native_window); if (w == m_nativeWindows.end()) return false; - if (!bindWindow_locked(w->second)) { - m_lock.unlock(); + if (!bindWindow_locked(w->second)) return false; - } setupViewport(w->second, window_frame); s_gles2.glViewport(0, 0, window_frame.width(), window_frame.height()); @@ -959,9 +960,5 @@ bool Renderer::draw(EGLNativeWindowType native_window, unbind_locked(); - m_lock.lock(); - - m_lock.unlock(); - return false; }