emugl: correct locking when we draw a new frame

This commit is contained in:
Simon Fels 2017-08-22 08:17:10 +02:00
commit e9cd1b7b66

View file

@ -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<std::mutex> 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;
}