Index: media/tools/player_x11/x11_video_renderer.cc |
diff --git a/media/tools/player_x11/x11_video_renderer.cc b/media/tools/player_x11/x11_video_renderer.cc |
index 50f8b5f4030210fb6bfe132bfdeb1e11fee2a604..a803dd8b834f75c160379e4eccbfda43919bb874 100644 |
--- a/media/tools/player_x11/x11_video_renderer.cc |
+++ b/media/tools/player_x11/x11_video_renderer.cc |
@@ -57,9 +57,9 @@ X11VideoRenderer::X11VideoRenderer(Display* display, Window window) |
: display_(display), |
window_(window), |
image_(NULL), |
- new_frame_(false), |
picture_(0), |
- use_render_(false) { |
+ use_render_(false), |
+ glx_thread_message_loop_(NULL) { |
} |
X11VideoRenderer::~X11VideoRenderer() { |
@@ -132,22 +132,13 @@ bool X11VideoRenderer::OnInitialize(media::VideoDecoder* decoder) { |
} |
void X11VideoRenderer::OnFrameAvailable() { |
- AutoLock auto_lock(lock_); |
- new_frame_ = true; |
+ if (glx_thread_message_loop()) { |
+ glx_thread_message_loop()->PostTask(FROM_HERE, |
+ NewRunnableMethod(this, &X11VideoRenderer::Paint)); |
+ } |
} |
void X11VideoRenderer::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; |
- } |
- |
scoped_refptr<media::VideoFrame> video_frame; |
GetCurrentFrame(&video_frame); |