summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/render_widget.h
diff options
context:
space:
mode:
authordarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-21 04:42:05 +0000
committerdarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-21 04:42:05 +0000
commit53d3f3046205f2d6151f61b8ef835ad708215761 (patch)
tree8dd4f4ac91f3f0f2e7ba7cf0a1fac8a5969af5b3 /chrome/renderer/render_widget.h
parentc9086fbde71e70d3b89e574d6affc005cc190c7d (diff)
downloadchromium_src-53d3f3046205f2d6151f61b8ef835ad708215761.zip
chromium_src-53d3f3046205f2d6151f61b8ef835ad708215761.tar.gz
chromium_src-53d3f3046205f2d6151f61b8ef835ad708215761.tar.bz2
Combine ViewHostMsg_{Paint,Scroll}Rect into one IPC.
The combined IPC means that scrolling only requires one transport DIB instead of two. Previously, we'd use one in the ScrollRect IPC to pass up the pixels for the exposed region, and then we'd use a second one in the PaintRect IPC to pass up the pixels for the updated scroll bar rendering. Now all paints are done using a single transport DIB. Optimize RenderWidgetHostViewWin::OnPaint to only paint the damaged regions. This means calling GetUpdateRgn and GetRegionData to enumerate the list of damage rects. Then only those rects are copied from the backing store. The same optimization is not done for Linux or Mac yet. R=brettw BUG=29591 TEST=none Originally reviewed at http://codereview.chromium.org/506013 Review URL: http://codereview.chromium.org/509005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35078 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/render_widget.h')
-rw-r--r--chrome/renderer/render_widget.h26
1 files changed, 9 insertions, 17 deletions
diff --git a/chrome/renderer/render_widget.h b/chrome/renderer/render_widget.h
index c25c99a..4cf033e 100644
--- a/chrome/renderer/render_widget.h
+++ b/chrome/renderer/render_widget.h
@@ -142,8 +142,7 @@ class RenderWidget : public IPC::Channel::Listener,
const gfx::Rect& resizer_rect);
void OnWasHidden();
void OnWasRestored(bool needs_repainting);
- void OnPaintRectAck();
- void OnScrollRectAck();
+ void OnUpdateRectAck();
void OnRequestMoveAck();
void OnHandleInputEvent(const IPC::Message& message);
void OnMouseCaptureLost();
@@ -167,14 +166,9 @@ class RenderWidget : public IPC::Channel::Listener,
bool is_hidden() const { return is_hidden_; }
- // True if a PaintRect_ACK message is pending.
- bool paint_reply_pending() const {
- return paint_reply_pending_;
- }
-
- // True if a ScrollRect_ACK message is pending.
- bool scroll_reply_pending() const {
- return current_scroll_buf_ != NULL;
+ // True if an UpdateRect_ACK message is pending.
+ bool update_reply_pending() const {
+ return update_reply_pending_;
}
bool next_paint_is_resize_ack() const;
@@ -238,22 +232,20 @@ class RenderWidget : public IPC::Channel::Listener,
// The size of the RenderWidget.
gfx::Size size_;
- // Transport DIBs that are currently in use to transfer an image to the
- // browser.
+ // The TransportDIB that is being used to transfer an image to the browser.
TransportDIB* current_paint_buf_;
- TransportDIB* current_scroll_buf_;
PaintAggregator paint_aggregator_;
// The area that must be reserved for drawing the resize corner.
gfx::Rect resizer_rect_;
- // Flags for the next ViewHostMsg_PaintRect message.
+ // Flags for the next ViewHostMsg_UpdateRect message.
int next_paint_flags_;
- // True if we are expecting a PaintRect_ACK message (i.e., that a PaintRect
- // message has been sent).
- bool paint_reply_pending_;
+ // True if we are expecting an UpdateRect_ACK message (i.e., that a
+ // UpdateRect message has been sent).
+ bool update_reply_pending_;
// Set to true if we should ignore RenderWidget::Show calls.
bool did_show_;