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; }