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

Side by Side Diff: chrome/browser/renderer_host/render_widget_host_view_mac.mm

Issue 4815001: Use inner HWND for accelerated rendering on windows (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 <QuartzCore/QuartzCore.h> 5 #include <QuartzCore/QuartzCore.h>
6 6
7 #include "chrome/browser/renderer_host/render_widget_host_view_mac.h" 7 #include "chrome/browser/renderer_host/render_widget_host_view_mac.h"
8 8
9 #include "app/app_switches.h" 9 #include "app/app_switches.h"
10 #include "app/surface/io_surface_support_mac.h" 10 #include "app/surface/io_surface_support_mac.h"
(...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after
738 void RenderWidgetHostViewMac::ImeCancelComposition() { 738 void RenderWidgetHostViewMac::ImeCancelComposition() {
739 [cocoa_view_ cancelComposition]; 739 [cocoa_view_ cancelComposition];
740 } 740 }
741 741
742 void RenderWidgetHostViewMac::DidUpdateBackingStore( 742 void RenderWidgetHostViewMac::DidUpdateBackingStore(
743 const gfx::Rect& scroll_rect, int scroll_dx, int scroll_dy, 743 const gfx::Rect& scroll_rect, int scroll_dx, int scroll_dy,
744 const std::vector<gfx::Rect>& copy_rects) { 744 const std::vector<gfx::Rect>& copy_rects) {
745 if (!is_hidden_) { 745 if (!is_hidden_) {
746 std::vector<gfx::Rect> rects(copy_rects); 746 std::vector<gfx::Rect> rects(copy_rects);
747 747
748 // Because the findbar might be open, we cannot use scrollRect:by: here. Fo r 748 // Because the findbar might be open, we cannot use scrollRect:by: here. For
749 // now, simply mark all of scroll rect as dirty. 749 // now, simply mark all of scroll rect as dirty.
750 if (!scroll_rect.IsEmpty()) 750 if (!scroll_rect.IsEmpty())
751 rects.push_back(scroll_rect); 751 rects.push_back(scroll_rect);
752 752
753 for (size_t i = 0; i < rects.size(); ++i) { 753 for (size_t i = 0; i < rects.size(); ++i) {
754 NSRect ns_rect = [cocoa_view_ flipRectToNSRect:rects[i]]; 754 NSRect ns_rect = [cocoa_view_ flipRectToNSRect:rects[i]];
755 755
756 if (about_to_validate_and_paint_) { 756 if (about_to_validate_and_paint_) {
757 // As much as we'd like to use -setNeedsDisplayInRect: here, we can't. 757 // As much as we'd like to use -setNeedsDisplayInRect: here, we can't.
758 // We're in the middle of executing a -drawRect:, and as soon as it 758 // We're in the middle of executing a -drawRect:, and as soon as it
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
1012 [view updateSwapBuffersCount:swap_buffers_count 1012 [view updateSwapBuffersCount:swap_buffers_count
1013 fromRenderer:renderer_id 1013 fromRenderer:renderer_id
1014 routeId:route_id]; 1014 routeId:route_id];
1015 } 1015 }
1016 1016
1017 void RenderWidgetHostViewMac::UpdateRootGpuViewVisibility( 1017 void RenderWidgetHostViewMac::UpdateRootGpuViewVisibility(
1018 bool show_gpu_widget) { 1018 bool show_gpu_widget) {
1019 // Plugins are destroyed on page navigate. The compositor layer on the other 1019 // Plugins are destroyed on page navigate. The compositor layer on the other
1020 // hand is created on demand and then stays alive until its renderer process 1020 // hand is created on demand and then stays alive until its renderer process
1021 // dies (usually on cross-domain navigation). Instead, only a flag 1021 // dies (usually on cross-domain navigation). Instead, only a flag
1022 // |is_gpu_rendering_active()| is flipped when the compositor output should be 1022 // |is_accelerated_compositing_active()| is flipped when the compositor output
1023 // shown/hidden. 1023 // should be shown/hidden.
1024 // Show/hide the view belonging to the compositor here. 1024 // Show/hide the view belonging to the compositor here.
1025 plugin_container_manager_.set_gpu_rendering_active(show_gpu_widget); 1025 plugin_container_manager_.set_gpu_rendering_active(show_gpu_widget);
1026 1026
1027 gfx::PluginWindowHandle root_handle = 1027 gfx::PluginWindowHandle root_handle =
1028 plugin_container_manager_.root_container_handle(); 1028 plugin_container_manager_.root_container_handle();
1029 if (root_handle != gfx::kNullPluginWindow) { 1029 if (root_handle != gfx::kNullPluginWindow) {
1030 PluginViewMap::iterator it = plugin_views_.find(root_handle); 1030 PluginViewMap::iterator it = plugin_views_.find(root_handle);
1031 DCHECK(plugin_views_.end() != it); 1031 DCHECK(plugin_views_.end() != it);
1032 if (plugin_views_.end() == it) { 1032 if (plugin_views_.end() == it) {
1033 return; 1033 return;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1078 int32 route_id, 1078 int32 route_id,
1079 uint64 swap_buffers_count) { 1079 uint64 swap_buffers_count) {
1080 BrowserThread::PostTask( 1080 BrowserThread::PostTask(
1081 BrowserThread::IO, FROM_HERE, 1081 BrowserThread::IO, FROM_HERE,
1082 new BuffersSwappedAcknowledger( 1082 new BuffersSwappedAcknowledger(
1083 renderer_id, route_id, swap_buffers_count)); 1083 renderer_id, route_id, swap_buffers_count));
1084 } 1084 }
1085 1085
1086 void RenderWidgetHostViewMac::GpuRenderingStateDidChange() { 1086 void RenderWidgetHostViewMac::GpuRenderingStateDidChange() {
1087 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1087 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1088 if (GetRenderWidgetHost()->is_gpu_rendering_active()) { 1088 if (GetRenderWidgetHost()->is_accelerated_compositing_active()) {
1089 UpdateRootGpuViewVisibility( 1089 UpdateRootGpuViewVisibility(
1090 GetRenderWidgetHost()->is_gpu_rendering_active()); 1090 GetRenderWidgetHost()->is_accelerated_compositing_active());
1091 } else { 1091 } else {
1092 needs_gpu_visibility_update_after_repaint_ = true; 1092 needs_gpu_visibility_update_after_repaint_ = true;
1093 } 1093 }
1094 } 1094 }
1095 1095
1096 void RenderWidgetHostViewMac::DrawAcceleratedSurfaceInstance( 1096 void RenderWidgetHostViewMac::DrawAcceleratedSurfaceInstance(
1097 CGLContextObj context, 1097 CGLContextObj context,
1098 gfx::PluginWindowHandle plugin_handle, 1098 gfx::PluginWindowHandle plugin_handle,
1099 NSSize size) { 1099 NSSize size) {
1100 // Called on the display link thread. 1100 // Called on the display link thread.
(...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after
1678 - (void)drawRect:(NSRect)dirtyRect { 1678 - (void)drawRect:(NSRect)dirtyRect {
1679 if (!renderWidgetHostView_->render_widget_host_) { 1679 if (!renderWidgetHostView_->render_widget_host_) {
1680 // TODO(shess): Consider using something more noticable? 1680 // TODO(shess): Consider using something more noticable?
1681 [[NSColor whiteColor] set]; 1681 [[NSColor whiteColor] set];
1682 NSRectFill(dirtyRect); 1682 NSRectFill(dirtyRect);
1683 return; 1683 return;
1684 } 1684 }
1685 1685
1686 const gfx::Rect damagedRect([self flipNSRectToRect:dirtyRect]); 1686 const gfx::Rect damagedRect([self flipNSRectToRect:dirtyRect]);
1687 1687
1688 if (renderWidgetHostView_->render_widget_host_->is_gpu_rendering_active()) { 1688 if (renderWidgetHostView_->render_widget_host_->
1689 is_accelerated_compositing_active()) {
1689 gfx::Rect gpuRect; 1690 gfx::Rect gpuRect;
1690 1691
1691 gfx::PluginWindowHandle root_handle = 1692 gfx::PluginWindowHandle root_handle =
1692 renderWidgetHostView_->plugin_container_manager_.root_container_handle(); 1693 renderWidgetHostView_->plugin_container_manager_.root_container_handle();
1693 if (root_handle != gfx::kNullPluginWindow) { 1694 if (root_handle != gfx::kNullPluginWindow) {
1694 RenderWidgetHostViewMac::PluginViewMap::iterator it = 1695 RenderWidgetHostViewMac::PluginViewMap::iterator it =
1695 renderWidgetHostView_->plugin_views_.find(root_handle); 1696 renderWidgetHostView_->plugin_views_.find(root_handle);
1696 DCHECK(it != renderWidgetHostView_->plugin_views_.end()); 1697 DCHECK(it != renderWidgetHostView_->plugin_views_.end());
1697 if (it != renderWidgetHostView_->plugin_views_.end() && 1698 if (it != renderWidgetHostView_->plugin_views_.end() &&
1698 ![it->second isHidden]) { 1699 ![it->second isHidden]) {
(...skipping 975 matching lines...) Expand 10 before | Expand all | Expand 10 after
2674 if (!string) return NO; 2675 if (!string) return NO;
2675 2676
2676 // If the user is currently using an IME, confirm the IME input, 2677 // If the user is currently using an IME, confirm the IME input,
2677 // and then insert the text from the service, the same as TextEdit and Safari. 2678 // and then insert the text from the service, the same as TextEdit and Safari.
2678 [self confirmComposition]; 2679 [self confirmComposition];
2679 [self insertText:string]; 2680 [self insertText:string];
2680 return YES; 2681 return YES;
2681 } 2682 }
2682 2683
2683 @end 2684 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698