Index: content/browser/android/synchronous_compositor_observer.h |
diff --git a/content/browser/android/synchronous_compositor_observer.h b/content/browser/android/synchronous_compositor_observer.h |
index 864df1645be9736343bd3e066d95edf867f86073..f623a748b2398209f6f86d25d52b270b1d1ded8f 100644 |
--- a/content/browser/android/synchronous_compositor_observer.h |
+++ b/content/browser/android/synchronous_compositor_observer.h |
@@ -8,7 +8,9 @@ |
#include <vector> |
#include "base/macros.h" |
-#include "content/public/browser/render_process_host_observer.h" |
+#include "base/synchronization/lock.h" |
+#include "content/public/browser/android/synchronous_compositor.h" |
+#include "content/public/browser/browser_message_filter.h" |
#include "ui/android/window_android_observer.h" |
namespace ui { |
@@ -17,17 +19,14 @@ class WindowAndroid; |
namespace content { |
+class RenderProcessHost; |
class SynchronousCompositorHost; |
-// SynchronousCompositor class that's tied to the lifetime of a |
-// RenderProcessHost. Responsible for its own lifetime. |
-class SynchronousCompositorObserver : public RenderProcessHostObserver, |
- public ui::WindowAndroidObserver { |
+// TODO(boliu): Rename this to SynchronousCompositorFilter. |
+class SynchronousCompositorObserver : public ui::WindowAndroidObserver, |
+ public BrowserMessageFilter { |
public: |
- static SynchronousCompositorObserver* GetOrCreateFor(int process_id); |
- |
- // RenderProcessHostObserver overrides. |
- void RenderProcessHostDestroyed(RenderProcessHost* host) override; |
+ explicit SynchronousCompositorObserver(int process_id); |
// WindowAndroidObserver overrides. |
void OnCompositingDidCommit() override; |
@@ -39,13 +38,20 @@ class SynchronousCompositorObserver : public RenderProcessHostObserver, |
void OnActivityStopped() override; |
void OnActivityStarted() override; |
+ // BrowserMessageFilter overrides. |
+ bool OnMessageReceived(const IPC::Message& message) override; |
+ |
void SyncStateAfterVSync(ui::WindowAndroid* window_android, |
SynchronousCompositorHost* compositor_host); |
+ void SetFrameFuture( |
+ const int routing_id, |
dcheng
2016/10/21 06:42:56
Nit: usually const int, etc don't have a lot of me
boliu
2016/10/21 15:15:32
Done.
|
+ const scoped_refptr<SynchronousCompositor::FrameFuture>& frame_future); |
dcheng
2016/10/21 06:42:56
Nit: scoped_refptr<> frame_future
boliu
2016/10/21 15:15:32
Done.
|
private: |
- explicit SynchronousCompositorObserver(int process_id); |
~SynchronousCompositorObserver() override; |
+ bool ReceiveFrame(const IPC::Message& message); |
+ |
RenderProcessHost* const render_process_host_; |
// For synchronizing renderer state after a vsync. |
@@ -53,6 +59,11 @@ class SynchronousCompositorObserver : public RenderProcessHostObserver, |
std::vector<SynchronousCompositorHost*> |
compositor_host_pending_renderer_state_; |
+ base::Lock future_map_lock_; // Protects |future_map_|. |
+ using FrameFutureMap = |
+ std::map<int, scoped_refptr<SynchronousCompositor::FrameFuture>>; |
+ FrameFutureMap future_map_; |
+ |
DISALLOW_COPY_AND_ASSIGN(SynchronousCompositorObserver); |
}; |