File: overlay_candidate_validator_ozone.cc

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (59 lines) | stat: -rw-r--r-- 2,008 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "content/browser/compositor/overlay_candidate_validator_ozone.h"

#include "ui/ozone/public/overlay_candidates_ozone.h"

namespace content {

static ui::SurfaceFactoryOzone::BufferFormat GetOzoneFormat(
    cc::ResourceFormat overlay_format) {
  switch (overlay_format) {
    case cc::RGBA_8888:
      return ui::SurfaceFactoryOzone::RGBA_8888;
    case cc::RGBA_4444:
    case cc::BGRA_8888:
    case cc::ALPHA_8:
    case cc::LUMINANCE_8:
    case cc::RGB_565:
    case cc::ETC1:
    case cc::RED_8:
      break;
  }
  NOTREACHED();
  return ui::SurfaceFactoryOzone::UNKNOWN;
}

OverlayCandidateValidatorOzone::OverlayCandidateValidatorOzone(
    gfx::AcceleratedWidget widget,
    ui::OverlayCandidatesOzone* overlay_candidates)
    : widget_(widget), overlay_candidates_(overlay_candidates) {
}

OverlayCandidateValidatorOzone::~OverlayCandidateValidatorOzone() {}

void OverlayCandidateValidatorOzone::CheckOverlaySupport(
    cc::OverlayCandidateList* surfaces) {
  DCHECK_GE(2U, surfaces->size());
  ui::OverlayCandidatesOzone::OverlaySurfaceCandidateList ozone_surface_list;
  ozone_surface_list.resize(surfaces->size());

  for (size_t i = 0; i < surfaces->size(); i++) {
    ozone_surface_list.at(i).transform = surfaces->at(i).transform;
    ozone_surface_list.at(i).format = GetOzoneFormat(surfaces->at(i).format);
    ozone_surface_list.at(i).display_rect = surfaces->at(i).display_rect;
    ozone_surface_list.at(i).crop_rect = surfaces->at(i).uv_rect;
    ozone_surface_list.at(i).plane_z_order = surfaces->at(i).plane_z_order;
  }

  overlay_candidates_->CheckOverlaySupport(&ozone_surface_list);
  DCHECK_EQ(surfaces->size(), ozone_surface_list.size());

  for (size_t i = 0; i < surfaces->size(); i++) {
    surfaces->at(i).overlay_handled = ozone_surface_list.at(i).overlay_handled;
  }
}

}  // namespace content