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

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura.h

Issue 10052018: Drop frontbuffers with ui-use-gpu-process, synchronized with browser, decoupled from backbuffer dro… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Storing the list of thumbnail callbacks, so that we can issue them upon RWHVA destruction. Created 8 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/render_widget_host_view_aura.h
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.h b/content/browser/renderer_host/render_widget_host_view_aura.h
index 145376273cbd06bc231e33d5d5db9efe6e0bb6e2..7eeadc62385eac9ca84527b52319ea33dc6eb3cd 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.h
+++ b/content/browser/renderer_host/render_widget_host_view_aura.h
@@ -11,6 +11,7 @@
#include "base/callback.h"
#include "base/memory/linked_ptr.h"
#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
#include "content/browser/renderer_host/image_transport_factory.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
#include "content/common/content_export.h"
@@ -49,7 +50,8 @@ class RenderWidgetHostViewAura
public ui::TextInputClient,
public aura::WindowDelegate,
public aura::client::ActivationDelegate,
- public ImageTransportFactoryObserver {
+ public ImageTransportFactoryObserver,
+ public base::SupportsWeakPtr<RenderWidgetHostViewAura> {
public:
// RenderWidgetHostView implementation.
virtual void InitAsChild(gfx::NativeView parent_view) OVERRIDE;
@@ -239,6 +241,21 @@ class RenderWidgetHostViewAura
// Called when window_ is removed from the window tree.
void RemovingFromRootWindow();
+ // After clearing |current_surface_|, and waiting for the compositor to finish
+ // using it, call this to inform the gpu process.
+ void SetSurfaceNotInUseByCompositor(ui::Compositor* compositor);
+
+ // This is called every time |current_surface_| usage changes (by thumbnailer,
+ // compositor draws, and tab visibility). Every time usage of current surface
+ // changes between "may be used" and "certain to not be used" by the ui, we
+ // inform the gpu process.
+ void AdjustSurfaceProtection();
+
+ // Called after async thumbnailer task completes. Used to call
+ // AdjustSurfaceProtection.
+ void CopyFromCompositingSurfaceFinished(base::Callback<void(bool)> callback,
+ bool result);
+
ui::Compositor* GetCompositor();
// Detaches |this| from the input method object.
@@ -307,6 +324,20 @@ class RenderWidgetHostViewAura
uint64 current_surface_;
+ // Protected means that the |current_surface_| may be in use by ui and cannot
+ // be safely discarded. Things to consider are thumbnailer, compositor draw,
+ // and tab visibility.
+ bool current_surface_is_protected_;
+ bool current_surface_in_use_by_compositor_;
+
+ std::vector<base::Callback<void(bool)> > pending_thumbnail_tasks_;
+
+ // This id increments every time surface_is_protected changes. We tag IPC
+ // messages which rely on protection state with this id to stay in sync.
+ uint32 protection_state_id_;
+
+ int32 surface_route_id_;
+
gfx::GLSurfaceHandle shared_surface_handle_;
// If non-NULL we're in OnPaint() and this is the supplied canvas.

Powered by Google App Engine
This is Rietveld 408576698