Chromium Code Reviews| Index: remoting/client/display/gl_renderer.cc |
| diff --git a/remoting/client/display/gl_renderer.cc b/remoting/client/display/gl_renderer.cc |
| index 8b2ee234a8dbae570d56f5e88bc5b4864c942e95..e88c3af8f05c99cf9fdc464bf2b5bc1673d2f559 100644 |
| --- a/remoting/client/display/gl_renderer.cc |
| +++ b/remoting/client/display/gl_renderer.cc |
| @@ -20,8 +20,8 @@ namespace remoting { |
| namespace { |
| -bool CompareDrawableZOrder(base::WeakPtr<Drawable> a, |
| - base::WeakPtr<Drawable> b) { |
| +template <typename DrawablePtr> |
|
nicholss
2017/01/13 16:45:01
I don't understand why this is better.
|
| +bool CompareDrawableZOrder(DrawablePtr a, DrawablePtr b) { |
| return a->GetZIndex() < b->GetZIndex(); |
| } |
| @@ -131,6 +131,19 @@ base::WeakPtr<GlRenderer> GlRenderer::GetWeakPtr() { |
| return weak_ptr_; |
| } |
| +// static |
| +std::unique_ptr<GlRenderer> GlRenderer::CreateGlRendererWithDesktop() { |
|
Sergey Ulanov
2017/01/13 02:03:10
This code looks weird. If the GlRenderer owns all
Yuwei
2017/01/13 02:21:08
That's exactly what I plan to do.
joedow
2017/01/13 16:09:34
To my knowledge Scott is actively working on this
nicholss
2017/01/13 16:45:01
This is close to what the plan is. A single object
|
| + std::unique_ptr<GlRenderer> renderer(new GlRenderer()); |
| + std::vector<Drawable*> drawables{&renderer->desktop_, &renderer->cursor_, |
| + &renderer->cursor_feedback_}; |
| + std::sort(drawables.begin(), drawables.end(), |
|
Sergey Ulanov
2017/01/13 02:03:10
This is way more complicated than necessary. We ha
nicholss
2017/01/13 16:45:01
that is if you assume nothing can be added or remo
|
| + CompareDrawableZOrder<Drawable*>); |
| + for (auto* drawable : drawables) { |
|
nicholss
2017/01/13 16:45:01
Why would you sort them, they are going to be sort
|
| + renderer->drawables_.push_back(drawable->GetWeakPtr()); |
| + } |
| + return renderer; |
| +} |
| + |
| void GlRenderer::RequestRender() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| if (render_scheduled_) { |
| @@ -142,9 +155,11 @@ void GlRenderer::RequestRender() { |
| } |
| void GlRenderer::AddDrawable(base::WeakPtr<Drawable> drawable) { |
|
Sergey Ulanov
2017/01/13 02:03:10
Is this function still used anywhere?
Yuwei
2017/01/13 02:21:08
I think the unit test is still using it. Also IIRC
nicholss
2017/01/13 16:45:01
This method is the entire point of my last commit.
|
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| drawable->SetCanvas(canvas_ ? canvas_->GetWeakPtr() : nullptr); |
| drawables_.push_back(drawable); |
| - std::sort(drawables_.begin(), drawables_.end(), CompareDrawableZOrder); |
| + std::sort(drawables_.begin(), drawables_.end(), |
| + CompareDrawableZOrder<base::WeakPtr<Drawable>>); |
| } |
| void GlRenderer::OnRender() { |
| @@ -172,12 +187,4 @@ void GlRenderer::OnRender() { |
| } |
| } |
| -std::unique_ptr<GlRenderer> GlRenderer::CreateGlRendererWithDesktop() { |
|
nicholss
2017/01/13 16:45:01
I think it is a mistake to remove this and use the
|
| - std::unique_ptr<GlRenderer> renderer(new GlRenderer()); |
| - renderer->AddDrawable(renderer->desktop_.GetWeakPtr()); |
| - renderer->AddDrawable(renderer->cursor_.GetWeakPtr()); |
| - renderer->AddDrawable(renderer->cursor_feedback_.GetWeakPtr()); |
| - return renderer; |
| -} |
| - |
| } // namespace remoting |