| Index: remoting/client/gl_desktop.cc
|
| diff --git a/remoting/client/gl_desktop.cc b/remoting/client/gl_desktop.cc
|
| index a47506e72f35c64ae5cf4415ac2897c9b2b00c0b..04c43319f782a33d9bad57088007971b90e967aa 100644
|
| --- a/remoting/client/gl_desktop.cc
|
| +++ b/remoting/client/gl_desktop.cc
|
| @@ -27,33 +27,31 @@ void GlDesktop::SetCanvas(GlCanvas* canvas) {
|
| return;
|
| }
|
| layer_.reset(new GlRenderLayer(kTextureId, canvas));
|
| - if (last_frame_) {
|
| - layer_->SetTexture(last_frame_->data(), last_frame_->size().width(),
|
| - last_frame_->size().height());
|
| - }
|
| + last_desktop_size_.set(0, 0);
|
| }
|
|
|
| void GlDesktop::SetVideoFrame(std::unique_ptr<webrtc::DesktopFrame> frame) {
|
| - if (layer_) {
|
| - if (!last_frame_ || !frame->size().equals(last_frame_->size())) {
|
| - layer_->SetTexture(frame->data(), frame->size().width(),
|
| - frame->size().height());
|
| - } else {
|
| - for (webrtc::DesktopRegion::Iterator i(frame->updated_region());
|
| - !i.IsAtEnd(); i.Advance()) {
|
| - const uint8_t* rect_start =
|
| - frame->GetFrameDataAtPos(i.rect().top_left());
|
| - layer_->UpdateTexture(
|
| - rect_start, i.rect().left(), i.rect().top(), i.rect().width(),
|
| - i.rect().height(), frame->stride());
|
| - }
|
| + if (!layer_) {
|
| + return;
|
| + }
|
| + if (!frame->size().equals(last_desktop_size_)) {
|
| + layer_->SetTexture(frame->data(), frame->size().width(),
|
| + frame->size().height());
|
| + last_desktop_size_.set(frame->size().width(), frame->size().height());
|
| + } else {
|
| + for (webrtc::DesktopRegion::Iterator i(frame->updated_region());
|
| + !i.IsAtEnd(); i.Advance()) {
|
| + const uint8_t* rect_start =
|
| + frame->GetFrameDataAtPos(i.rect().top_left());
|
| + layer_->UpdateTexture(
|
| + rect_start, i.rect().left(), i.rect().top(), i.rect().width(),
|
| + i.rect().height(), frame->stride());
|
| }
|
| }
|
| - last_frame_ = std::move(frame);
|
| }
|
|
|
| void GlDesktop::Draw() {
|
| - if (layer_ && last_frame_) {
|
| + if (layer_ && !last_desktop_size_.is_empty()) {
|
| layer_->Draw();
|
| }
|
| }
|
|
|