gl_surface_overlay.cc 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  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. #include "ui/gl/gl_surface_overlay.h"
  5. #include "ui/gfx/gpu_fence.h"
  6. #include "ui/gfx/native_widget_types.h"
  7. #include "ui/gl/gl_image.h"
  8. namespace gl {
  9. GLSurfaceOverlay::GLSurfaceOverlay(
  10. GLImage* image,
  11. std::unique_ptr<gfx::GpuFence> gpu_fence,
  12. const gfx::OverlayPlaneData& overlay_plane_data)
  13. : image_(image),
  14. gpu_fence_(std::move(gpu_fence)),
  15. overlay_plane_data_(overlay_plane_data) {}
  16. GLSurfaceOverlay::GLSurfaceOverlay(GLSurfaceOverlay&& other) = default;
  17. GLSurfaceOverlay::~GLSurfaceOverlay() {}
  18. bool GLSurfaceOverlay::ScheduleOverlayPlane(gfx::AcceleratedWidget widget) {
  19. std::vector<gfx::GpuFence> acquire_fences;
  20. if (gpu_fence_)
  21. acquire_fences.push_back(std::move(*gpu_fence_));
  22. auto pixmap = image_->GetNativePixmap();
  23. DCHECK(pixmap);
  24. return pixmap->ScheduleOverlayPlane(widget, overlay_plane_data_,
  25. std::move(acquire_fences), {});
  26. }
  27. void GLSurfaceOverlay::Flush() const {
  28. return image_->Flush();
  29. }
  30. } // namespace gl