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

Unified Diff: content/public/browser/android/synchronous_compositor.h

Issue 2347563003: Added FrameFuture class (Closed)
Patch Set: Code review Created 4 years, 3 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/public/browser/android/synchronous_compositor.h
diff --git a/content/public/browser/android/synchronous_compositor.h b/content/public/browser/android/synchronous_compositor.h
index 5b8b72328f5d55ff681c725f1c29db00564eca41..11477d13da267a16ffdb09b8163060afd0204019 100644
--- a/content/public/browser/android/synchronous_compositor.h
+++ b/content/public/browser/android/synchronous_compositor.h
@@ -10,6 +10,7 @@
#include <memory>
#include "base/memory/ref_counted.h"
+#include "base/synchronization/waitable_event.h"
#include "base/time/time.h"
#include "cc/resources/returned_resource.h"
#include "content/common/content_export.h"
@@ -59,11 +60,27 @@ class CONTENT_EXPORT SynchronousCompositor {
DISALLOW_COPY_AND_ASSIGN(Frame);
};
+ class FrameFuture : public base::RefCountedThreadSafe<FrameFuture> {
+ public:
+ FrameFuture();
+ void setFrame(std::unique_ptr<SynchronousCompositor::Frame> frame);
+ SynchronousCompositor::Frame* getFrame();
+ void Wait();
boliu 2016/09/20 00:27:56 there should be no Wait or hasFrame, and getFrame
ojars 2016/09/22 18:21:39 Done.
+ bool hasFrame();
+
+ private:
+ base::WaitableEvent waitable_event_;
+ std::unique_ptr<content::SynchronousCompositor::Frame> frame_;
+ friend class base::RefCountedThreadSafe<FrameFuture>;
+ ~FrameFuture();
+ };
+
// "On demand" hardware draw. Parameters are used by compositor for this draw.
// |viewport_size| is the current size to improve results during resize.
// |viewport_rect_for_tile_priority| and |transform_for_tile_priority| are
// used to customize the tiling decisions of compositor.
- virtual Frame DemandDrawHw(
+ // TODO(ojars): update this and the next documentation
+ virtual scoped_refptr<FrameFuture> DemandDrawHw(
const gfx::Size& viewport_size,
const gfx::Rect& viewport_rect_for_tile_priority,
const gfx::Transform& transform_for_tile_priority) = 0;
@@ -71,7 +88,7 @@ class CONTENT_EXPORT SynchronousCompositor {
// Same as DemandDrawHw, but uses asynchronous IPC messages. Calls
// SynchronousCompositorClient::OnDrawHardwareProcessFrame to return the
// frame.
- virtual void DemandDrawHwAsync(
+ virtual scoped_refptr<FrameFuture> DemandDrawHwAsync(
const gfx::Size& viewport_size,
const gfx::Rect& viewport_rect_for_tile_priority,
const gfx::Transform& transform_for_tile_priority) = 0;

Powered by Google App Engine
This is Rietveld 408576698