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

Side by Side Diff: chrome/browser/renderer_host/render_widget_host.cc

Issue 4030005: Mac: Fix flicker on gpu->nongpu transitions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: '' Created 10 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/renderer_host/render_widget_host.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chrome/browser/renderer_host/render_widget_host.h" 5 #include "chrome/browser/renderer_host/render_widget_host.h"
6 6
7 #include "app/keyboard_codes.h" 7 #include "app/keyboard_codes.h"
8 #include "base/auto_reset.h" 8 #include "base/auto_reset.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 int routing_id) 72 int routing_id)
73 : renderer_initialized_(false), 73 : renderer_initialized_(false),
74 renderer_accessible_(false), 74 renderer_accessible_(false),
75 view_(NULL), 75 view_(NULL),
76 process_(process), 76 process_(process),
77 painting_observer_(NULL), 77 painting_observer_(NULL),
78 routing_id_(routing_id), 78 routing_id_(routing_id),
79 is_loading_(false), 79 is_loading_(false),
80 is_hidden_(false), 80 is_hidden_(false),
81 is_gpu_rendering_active_(false), 81 is_gpu_rendering_active_(false),
82 #if defined(OS_MACOSX)
83 needs_to_hide_gpu_view_on_paint_(false),
84 #endif
82 repaint_ack_pending_(false), 85 repaint_ack_pending_(false),
83 resize_ack_pending_(false), 86 resize_ack_pending_(false),
84 mouse_move_pending_(false), 87 mouse_move_pending_(false),
85 mouse_wheel_pending_(false), 88 mouse_wheel_pending_(false),
86 needs_repainting_on_restore_(false), 89 needs_repainting_on_restore_(false),
87 is_unresponsive_(false), 90 is_unresponsive_(false),
88 in_get_backing_store_(false), 91 in_get_backing_store_(false),
89 view_being_painted_(false), 92 view_being_painted_(false),
90 ignore_input_events_(false), 93 ignore_input_events_(false),
91 text_direction_updated_(false), 94 text_direction_updated_(false),
(...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after
816 // Paint the backing store. This will update it with the 819 // Paint the backing store. This will update it with the
817 // renderer-supplied bits. The view will read out of the backing store 820 // renderer-supplied bits. The view will read out of the backing store
818 // later to actually draw to the screen. 821 // later to actually draw to the screen.
819 PaintBackingStoreRect(params.bitmap, params.bitmap_rect, 822 PaintBackingStoreRect(params.bitmap, params.bitmap_rect,
820 params.copy_rects, params.view_size, 823 params.copy_rects, params.view_size,
821 &painted_synchronously); 824 &painted_synchronously);
822 } 825 }
823 } 826 }
824 } 827 }
825 828
829 #if defined(OS_MACOSX)
830 if (needs_to_hide_gpu_view_on_paint_) {
831 if (view_)
832 view_->GpuRenderingStateDidChange();
833 needs_to_hide_gpu_view_on_paint_ = false;
834 }
835 #endif
836
826 // ACK early so we can prefetch the next PaintRect if there is a next one. 837 // ACK early so we can prefetch the next PaintRect if there is a next one.
827 // This must be done AFTER we're done painting with the bitmap supplied by the 838 // This must be done AFTER we're done painting with the bitmap supplied by the
828 // renderer. This ACK is a signal to the renderer that the backing store can 839 // renderer. This ACK is a signal to the renderer that the backing store can
829 // be re-used, so the bitmap may be invalid after this call. If the backing 840 // be re-used, so the bitmap may be invalid after this call. If the backing
830 // store is painting asynchronously, it will manage issuing this IPC. 841 // store is painting asynchronously, it will manage issuing this IPC.
831 if (painted_synchronously) 842 if (painted_synchronously)
832 Send(new ViewMsg_UpdateRect_ACK(routing_id_)); 843 Send(new ViewMsg_UpdateRect_ACK(routing_id_));
833 844
834 // We don't need to update the view if the view is hidden. We must do this 845 // We don't need to update the view if the view is hidden. We must do this
835 // early return after the ACK is sent, however, or the renderer will not send 846 // early return after the ACK is sent, however, or the renderer will not send
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
964 if (view_) 975 if (view_)
965 view_->ImeCancelComposition(); 976 view_->ImeCancelComposition();
966 } 977 }
967 978
968 void RenderWidgetHost::OnMsgGpuRenderingActivated(bool activated) { 979 void RenderWidgetHost::OnMsgGpuRenderingActivated(bool activated) {
969 #if defined(OS_MACOSX) 980 #if defined(OS_MACOSX)
970 bool old_state = is_gpu_rendering_active_; 981 bool old_state = is_gpu_rendering_active_;
971 #endif 982 #endif
972 is_gpu_rendering_active_ = activated; 983 is_gpu_rendering_active_ = activated;
973 #if defined(OS_MACOSX) 984 #if defined(OS_MACOSX)
974 if (old_state != is_gpu_rendering_active_ && view_) 985 if (old_state != is_gpu_rendering_active_ && view_) {
975 view_->GpuRenderingStateDidChange(); 986 if (is_gpu_rendering_active_) {
987 view_->GpuRenderingStateDidChange();
988 } else {
989 // Delay revealing the non-gpu view until it has been repainted.
990 needs_to_hide_gpu_view_on_paint_ = true;
991 }
992 }
976 #endif 993 #endif
977 } 994 }
978 995
979 #if defined(OS_MACOSX) 996 #if defined(OS_MACOSX)
980 997
981 void RenderWidgetHost::OnMsgShowPopup( 998 void RenderWidgetHost::OnMsgShowPopup(
982 const ViewHostMsg_ShowPopup_Params& params) { 999 const ViewHostMsg_ShowPopup_Params& params) {
983 view_->ShowPopupWithItems(params.bounds, 1000 view_->ShowPopupWithItems(params.bounds,
984 params.item_height, 1001 params.item_height,
985 params.item_font_size, 1002 params.item_font_size,
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
1225 // of this key event. 1242 // of this key event.
1226 if (!processed && !is_hidden_ && !front_item.skip_in_browser) { 1243 if (!processed && !is_hidden_ && !front_item.skip_in_browser) {
1227 UnhandledKeyboardEvent(front_item); 1244 UnhandledKeyboardEvent(front_item);
1228 1245
1229 // WARNING: This RenderWidgetHost can be deallocated at this point 1246 // WARNING: This RenderWidgetHost can be deallocated at this point
1230 // (i.e. in the case of Ctrl+W, where the call to 1247 // (i.e. in the case of Ctrl+W, where the call to
1231 // UnhandledKeyboardEvent destroys this RenderWidgetHost). 1248 // UnhandledKeyboardEvent destroys this RenderWidgetHost).
1232 } 1249 }
1233 } 1250 }
1234 } 1251 }
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/render_widget_host.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698