Index: media/tools/player_x11/gles_video_renderer.cc |
diff --git a/media/tools/player_x11/gles_video_renderer.cc b/media/tools/player_x11/gles_video_renderer.cc |
index f6cea9cd3605e4b5ebb97c2854a161fe92030f4e..fab345afcf7e7bbb5774b1f2254a2748025f31a0 100644 |
--- a/media/tools/player_x11/gles_video_renderer.cc |
+++ b/media/tools/player_x11/gles_video_renderer.cc |
@@ -23,10 +23,10 @@ GlesVideoRenderer::GlesVideoRenderer(Display* display, Window window) |
egl_destroy_image_khr_(NULL), |
display_(display), |
window_(window), |
- new_frame_(false), |
egl_display_(NULL), |
egl_surface_(NULL), |
- egl_context_(NULL) { |
+ egl_context_(NULL), |
+ glx_thread_message_loop_(NULL) { |
} |
GlesVideoRenderer::~GlesVideoRenderer() { |
@@ -149,22 +149,13 @@ bool GlesVideoRenderer::OnInitialize(media::VideoDecoder* decoder) { |
} |
void GlesVideoRenderer::OnFrameAvailable() { |
- AutoLock auto_lock(lock_); |
- new_frame_ = true; |
+ if (glx_thread_message_loop()) { |
+ glx_thread_message_loop()->PostTask(FROM_HERE, |
+ NewRunnableMethod(this, &GlesVideoRenderer::Paint)); |
+ } |
} |
void GlesVideoRenderer::Paint() { |
- // Use |new_frame_| to prevent overdraw since Paint() is called more |
- // often than needed. It is OK to lock only this flag and we don't |
- // want to lock the whole function because this method takes a long |
- // time to complete. |
- { |
- AutoLock auto_lock(lock_); |
- if (!new_frame_) |
- return; |
- new_frame_ = false; |
- } |
- |
// Initialize GLES here to avoid context switching. Some drivers doesn't |
// like switching context between threads. |
static bool initialized = false; |