overlayCtrl.cpp revision b166940edca6e312463461438e2aa66e9852c26a
1/*
2* Copyright (C) 2008 The Android Open Source Project
3* Copyright (c) 2010-2012, The Linux Foundation. All rights reserved.
4*
5* Licensed under the Apache License, Version 2.0 (the "License");
6* you may not use this file except in compliance with the License.
7* You may obtain a copy of the License at
8*
9*      http://www.apache.org/licenses/LICENSE-2.0
10*
11* Unless required by applicable law or agreed to in writing, software
12* distributed under the License is distributed on an "AS IS" BASIS,
13* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14* See the License for the specific language governing permissions and
15* limitations under the License.
16*/
17
18#include <cutils/properties.h>
19#include "overlayCtrlData.h"
20#include "gralloc_priv.h" //for interlace
21
22namespace overlay{
23
24bool Ctrl::init(uint32_t fbnum) {
25    // MDP/FD init
26    if(!mMdp.init(fbnum)) {
27        ALOGE("Ctrl failed to init fbnum=%d", fbnum);
28        return false;
29    }
30
31    if(!getScreenInfo(mInfo)) {
32        ALOGE("Ctrl failed to getScreenInfo");
33        return false;
34    }
35
36    return true;
37}
38
39bool Ctrl::setSource(const utils::PipeArgs& args)
40{
41    return mMdp.setSource(args);
42}
43
44bool Ctrl::setPosition(const utils::Dim& dim)
45{
46    if(!dim.check(mInfo.mFBWidth, mInfo.mFBHeight)) {
47        ALOGE("Ctrl setPosition error in dim");
48        dim.dump();
49        return false;
50    }
51
52    if(!mMdp.setPosition(dim, mInfo.mFBWidth, mInfo.mFBHeight)) {
53        ALOGE("Ctrl failed MDP setPosition");
54        return false;
55    }
56    return true;
57}
58
59bool Ctrl::setTransform(const utils::eTransform& orient)
60{
61    if(!mMdp.setTransform(orient)) {
62        ALOGE("Ctrl setTransform failed for Mdp");
63        return false;
64    }
65    return true;
66}
67
68void Ctrl::setRotatorUsed(const bool& rotUsed) {
69    mMdp.setRotatorUsed(rotUsed);
70}
71
72bool Ctrl::setCrop(const utils::Dim& d)
73{
74    if(!mMdp.setCrop(d)) {
75        ALOGE("Data setCrop failed in MDP setCrop");
76        return false;
77    }
78    return true;
79}
80
81utils::FrameBufferInfo* utils::FrameBufferInfo::sFBInfoInstance = 0;
82
83void Ctrl::dump() const {
84    ALOGE("== Dump Ctrl start ==");
85    mInfo.dump("mInfo");
86    mMdp.dump();
87    ALOGE("== Dump Ctrl end ==");
88}
89
90} // overlay
91