aboutsummaryrefslogtreecommitdiffstats
path: root/emulator/opengl/host/libs/libOpenglRender/RenderThread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'emulator/opengl/host/libs/libOpenglRender/RenderThread.cpp')
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/RenderThread.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/emulator/opengl/host/libs/libOpenglRender/RenderThread.cpp b/emulator/opengl/host/libs/libOpenglRender/RenderThread.cpp
index 9ae2a43..19d6c1f 100644
--- a/emulator/opengl/host/libs/libOpenglRender/RenderThread.cpp
+++ b/emulator/opengl/host/libs/libOpenglRender/RenderThread.cpp
@@ -25,9 +25,10 @@
#define STREAM_BUFFER_SIZE 4*1024*1024
-RenderThread::RenderThread() :
+RenderThread::RenderThread(IOStream *stream, emugl::Mutex *lock) :
osUtils::Thread(),
- m_stream(NULL),
+ m_lock(lock),
+ m_stream(stream),
m_finished(false)
{
}
@@ -37,16 +38,9 @@ RenderThread::~RenderThread()
delete m_stream;
}
-RenderThread *RenderThread::create(IOStream *p_stream)
+RenderThread *RenderThread::create(IOStream *p_stream, emugl::Mutex *lock)
{
- RenderThread *rt = new RenderThread();
- if (!rt) {
- return NULL;
- }
-
- rt->m_stream = p_stream;
-
- return rt;
+ return new RenderThread(p_stream, lock);
}
int RenderThread::Main()
@@ -113,6 +107,7 @@ int RenderThread::Main()
do {
progress = false;
+ m_lock->lock();
//
// try to process some of the command buffer using the GLESv1 decoder
//
@@ -141,6 +136,8 @@ int RenderThread::Main()
progress = true;
}
+ m_lock->unlock();
+
} while( progress );
}