emugl: correct locking when we draw a new frame
This commit is contained in:
parent
4b344ad204
commit
e9cd1b7b66
1 changed files with 4 additions and 7 deletions
|
|
@ -938,13 +938,14 @@ void Renderer::draw(RendererWindow *window, const Renderable &renderable,
|
||||||
bool Renderer::draw(EGLNativeWindowType native_window,
|
bool Renderer::draw(EGLNativeWindowType native_window,
|
||||||
const anbox::graphics::Rect &window_frame,
|
const anbox::graphics::Rect &window_frame,
|
||||||
const RenderableList &renderables) {
|
const RenderableList &renderables) {
|
||||||
|
|
||||||
|
std::unique_lock<std::mutex> l(m_lock);
|
||||||
|
|
||||||
auto w = m_nativeWindows.find(native_window);
|
auto w = m_nativeWindows.find(native_window);
|
||||||
if (w == m_nativeWindows.end()) return false;
|
if (w == m_nativeWindows.end()) return false;
|
||||||
|
|
||||||
if (!bindWindow_locked(w->second)) {
|
if (!bindWindow_locked(w->second))
|
||||||
m_lock.unlock();
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
setupViewport(w->second, window_frame);
|
setupViewport(w->second, window_frame);
|
||||||
s_gles2.glViewport(0, 0, window_frame.width(), window_frame.height());
|
s_gles2.glViewport(0, 0, window_frame.width(), window_frame.height());
|
||||||
|
|
@ -959,9 +960,5 @@ bool Renderer::draw(EGLNativeWindowType native_window,
|
||||||
|
|
||||||
unbind_locked();
|
unbind_locked();
|
||||||
|
|
||||||
m_lock.lock();
|
|
||||||
|
|
||||||
m_lock.unlock();
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue