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

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

Issue 239963002: Android: Move scheduling logic to CompositorImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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/compositor_impl_android.h
diff --git a/content/browser/renderer_host/compositor_impl_android.h b/content/browser/renderer_host/compositor_impl_android.h
index 969b1142285f53db11578d47793e0791ca92c900..cd10780b98752fa9d58b213a163aebbde2598130 100644
--- a/content/browser/renderer_host/compositor_impl_android.h
+++ b/content/browser/renderer_host/compositor_impl_android.h
@@ -9,6 +9,7 @@
#include "base/compiler_specific.h"
#include "base/containers/scoped_ptr_hash_map.h"
#include "base/memory/scoped_ptr.h"
+#include "base/memory/weak_ptr.h"
#include "cc/resources/ui_resource_client.h"
#include "cc/trees/layer_tree_host_client.h"
#include "cc/trees/layer_tree_host_single_thread_client.h"
@@ -63,7 +64,7 @@ class CONTENT_EXPORT CompositorImpl
virtual void SetHasTransparentBackground(bool flag) OVERRIDE;
virtual bool CompositeAndReadback(
void *pixels, const gfx::Rect& rect) OVERRIDE;
- virtual void Composite() OVERRIDE;
+ virtual void SetNeedsComposite() OVERRIDE;
virtual cc::UIResourceId GenerateUIResource(const SkBitmap& bitmap,
bool is_transient) OVERRIDE;
virtual cc::UIResourceId GenerateCompressedUIResource(const gfx::Size& size,
@@ -76,7 +77,7 @@ class CONTENT_EXPORT CompositorImpl
virtual void WillBeginMainFrame(int frame_id) OVERRIDE {}
virtual void DidBeginMainFrame() OVERRIDE {}
virtual void Animate(base::TimeTicks frame_begin_time) OVERRIDE {}
- virtual void Layout() OVERRIDE {}
+ virtual void Layout() OVERRIDE;
virtual void ApplyScrollAndScale(const gfx::Vector2d& scroll_delta,
float page_scale) OVERRIDE {}
virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface(bool fallback)
@@ -98,8 +99,12 @@ class CONTENT_EXPORT CompositorImpl
// WindowAndroidCompositor implementation.
virtual void AttachLayerForReadback(scoped_refptr<cc::Layer> layer) OVERRIDE;
+ virtual void OnVSync(base::TimeTicks frame_time,
+ base::TimeDelta vsync_period) OVERRIDE;
private:
+ void PostComposite(base::TimeDelta delay);
+ void Composite(bool is_vsync);
Sami 2014/05/09 13:21:14 Mind making this an enum -- CompositingTrigger or
no sievers 2014/05/09 22:53:44 Done.
cc::UIResourceId GenerateUIResourceFromUIResourceBitmap(
const cc::UIResourceBitmap& bitmap,
bool is_transient);
@@ -122,6 +127,33 @@ class CONTENT_EXPORT CompositorImpl
gfx::NativeWindow root_window_;
+ // Used locally to track whether a call to LTH::Composite() did result in
+ // a posted SwapBuffers().
+ bool did_post_swapbuffers_;
+
+ // Used locally to inhibit ScheduleComposite() during Layout().
+ bool ignore_schedule_composite_;
+
+ // Whether we need to composite in general because of any invalidation or
+ // explicit request.
+ bool needs_composite_;
+
+ // When SetNeedsComposite() is getting called, we will try to schedule
Sami 2014/05/09 13:21:14 This explanation should probably go next to SetNee
no sievers 2014/05/09 22:53:44 ScheduleComposite is the LTHClient implementation.
+ // regularly during vsync.
+ bool should_composite_on_vsync_;
+
+ // Whether we composited immediately outside of a vsync callback since
+ // the last tick.
+ bool did_composite_outside_vsync_;
Sami 2014/05/09 13:21:14 Would something did_composite_during_this_frame_ b
no sievers 2014/05/09 22:53:44 Done.
+
+ // The number of SwapBuffer calls that have not returned and ACK'd from
+ // the GPU thread.
+ unsigned int pending_swapbuffers_;
+
+ base::TimeDelta vsync_period_;
+
+ base::WeakPtrFactory<CompositorImpl> weak_factory_;
+
DISALLOW_COPY_AND_ASSIGN(CompositorImpl);
};

Powered by Google App Engine
This is Rietveld 408576698