window_android_compositor.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Copyright 2015 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef UI_ANDROID_WINDOW_ANDROID_COMPOSITOR_H_
  5. #define UI_ANDROID_WINDOW_ANDROID_COMPOSITOR_H_
  6. #include <memory>
  7. #include "components/viz/common/frame_sinks/copy_output_request.h"
  8. #include "components/viz/common/surfaces/frame_sink_id.h"
  9. #include "ui/android/ui_android_export.h"
  10. #include "ui/compositor/compositor_lock.h"
  11. namespace ui {
  12. class ResourceManager;
  13. // Android interface for compositor-related tasks.
  14. class UI_ANDROID_EXPORT WindowAndroidCompositor {
  15. public:
  16. virtual ~WindowAndroidCompositor() {}
  17. // Ref must be destroyed on same thread as WindowAndroidCompositor.
  18. class ReadbackRef {
  19. public:
  20. virtual ~ReadbackRef() = default;
  21. protected:
  22. ReadbackRef() = default;
  23. };
  24. // While there are outstanding ReadbackRefs, Compositor will attempt to
  25. // ensure any pending viz::CopyOutputRequest in any part of the compositor
  26. // surface tree are fulfilled in a timely manner.
  27. virtual std::unique_ptr<ReadbackRef> TakeReadbackRef() = 0;
  28. virtual void RequestCopyOfOutputOnRootLayer(
  29. std::unique_ptr<viz::CopyOutputRequest> request) = 0;
  30. virtual void SetNeedsAnimate() = 0;
  31. virtual ResourceManager& GetResourceManager() = 0;
  32. virtual viz::FrameSinkId GetFrameSinkId() = 0;
  33. virtual void AddChildFrameSink(const viz::FrameSinkId& frame_sink_id) = 0;
  34. virtual void RemoveChildFrameSink(const viz::FrameSinkId& frame_sink_id) = 0;
  35. virtual bool IsDrawingFirstVisibleFrame() const = 0;
  36. virtual void SetVSyncPaused(bool paused) = 0;
  37. virtual void OnUpdateRefreshRate(float refresh_rate) = 0;
  38. virtual void OnUpdateSupportedRefreshRates(
  39. const std::vector<float>& supported_refresh_rates) = 0;
  40. virtual std::unique_ptr<ui::CompositorLock> GetCompositorLock(
  41. base::TimeDelta timeout) = 0;
  42. };
  43. } // namespace ui
  44. #endif // UI_ANDROID_WINDOW_ANDROID_COMPOSITOR_H_