Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(913)

Side by Side Diff: content/browser/browser_plugin/browser_plugin_guest.cc

Issue 11828005: Fixing resize for HW accelerated compositing. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/browser_plugin/browser_plugin_guest.h" 5 #include "content/browser/browser_plugin/browser_plugin_guest.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "content/browser/browser_plugin/browser_plugin_embedder.h" 10 #include "content/browser/browser_plugin/browser_plugin_embedder.h"
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 } 595 }
596 596
597 void BrowserPluginGuest::OnUpdateRect( 597 void BrowserPluginGuest::OnUpdateRect(
598 const ViewHostMsg_UpdateRect_Params& params) { 598 const ViewHostMsg_UpdateRect_Params& params) {
599 599
600 BrowserPluginMsg_UpdateRect_Params relay_params; 600 BrowserPluginMsg_UpdateRect_Params relay_params;
601 relay_params.view_size = params.view_size; 601 relay_params.view_size = params.view_size;
602 relay_params.scale_factor = params.scale_factor; 602 relay_params.scale_factor = params.scale_factor;
603 relay_params.is_resize_ack = ViewHostMsg_UpdateRect_Flags::is_resize_ack( 603 relay_params.is_resize_ack = ViewHostMsg_UpdateRect_Flags::is_resize_ack(
604 params.flags); 604 params.flags);
605 relay_params.needs_ack = params.needs_ack;
605 606
606 // HW accelerated case, acknowledge resize only 607 // HW accelerated case, acknowledge resize only
607 if (!params.needs_ack) { 608 if (!params.needs_ack) {
608 relay_params.damage_buffer_sequence_id = 0; 609 relay_params.damage_buffer_sequence_id = 0;
609 SendMessageToEmbedder(new BrowserPluginMsg_UpdateRect( 610 SendMessageToEmbedder(new BrowserPluginMsg_UpdateRect(
610 embedder_routing_id(), 611 embedder_routing_id(),
611 instance_id(), 612 instance_id(),
612 relay_params)); 613 relay_params));
613 return; 614 return;
614 } 615 }
615 616
616 RenderViewHost* render_view_host = web_contents()->GetRenderViewHost(); 617 RenderViewHost* render_view_host = web_contents()->GetRenderViewHost();
617 // Only copy damage if the guest is in autosize mode and the guest's view size 618 // Only copy damage if the guest is in autosize mode and the guest's view size
618 // is less than the maximum size or the guest's view size is equal to the 619 // is less than the maximum size or the guest's view size is equal to the
619 // damage buffer's size and the guest's scale factor is equal to the damage 620 // damage buffer's size and the guest's scale factor is equal to the damage
620 // buffer's scale factor. 621 // buffer's scale factor.
621 // The scaling change can happen due to asynchronous updates of the DPI on a 622 // The scaling change can happen due to asynchronous updates of the DPI on a
622 // resolution change. 623 // resolution change.
623 if (((auto_size_enabled_ && InAutoSizeBounds(params.view_size)) || 624 if (((auto_size_enabled_ && InAutoSizeBounds(params.view_size)) ||
Cris Neckar 2013/01/08 23:22:35 ditto
624 (params.view_size.width() == damage_view_size().width() && 625 (params.view_size.width() == damage_view_size().width() &&
625 params.view_size.height() == damage_view_size().height())) && 626 params.view_size.height() == damage_view_size().height())) &&
626 params.scale_factor == damage_buffer_scale_factor()) { 627 params.scale_factor == damage_buffer_scale_factor()) {
627 TransportDIB* dib = render_view_host->GetProcess()-> 628 TransportDIB* dib = render_view_host->GetProcess()->
628 GetTransportDIB(params.bitmap); 629 GetTransportDIB(params.bitmap);
629 if (dib) { 630 if (dib) {
630 size_t guest_damage_buffer_size = 631 size_t guest_damage_buffer_size =
631 #if defined(OS_WIN) 632 #if defined(OS_WIN)
632 params.bitmap_rect.width() * 633 params.bitmap_rect.width() *
633 params.bitmap_rect.height() * 4; 634 params.bitmap_rect.height() * 4;
(...skipping 13 matching lines...) Expand all
647 relay_params.scroll_delta = params.scroll_delta; 648 relay_params.scroll_delta = params.scroll_delta;
648 relay_params.scroll_rect = params.scroll_rect; 649 relay_params.scroll_rect = params.scroll_rect;
649 relay_params.copy_rects = params.copy_rects; 650 relay_params.copy_rects = params.copy_rects;
650 651
651 SendMessageToEmbedder(new BrowserPluginMsg_UpdateRect(embedder_routing_id(), 652 SendMessageToEmbedder(new BrowserPluginMsg_UpdateRect(embedder_routing_id(),
652 instance_id(), 653 instance_id(),
653 relay_params)); 654 relay_params));
654 } 655 }
655 656
656 } // namespace content 657 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/common/browser_plugin_messages.h » ('j') | content/renderer/browser_plugin/browser_plugin.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698