overlayGenPipe.cpp revision 4a84a77c6de89fc12b727bf41661aa2314dfba8f
1/* 2* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. 3* 4* Redistribution and use in source and binary forms, with or without 5* modification, are permitted provided that the following conditions are 6* met: 7* * Redistributions of source code must retain the above copyright 8* notice, this list of conditions and the following disclaimer. 9* * Redistributions in binary form must reproduce the above 10* copyright notice, this list of conditions and the following 11* disclaimer in the documentation and/or other materials provided 12* with the distribution. 13* * Neither the name of The Linux Foundation nor the names of its 14* contributors may be used to endorse or promote products derived 15* from this software without specific prior written permission. 16* 17* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 18* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 20* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 21* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 24* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 26* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 27* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28*/ 29 30#include "overlayGenPipe.h" 31#include "mdp_version.h" 32 33namespace overlay { 34 35GenericPipe::GenericPipe(const int& dpy) : mDpy(dpy), 36 mCtrl(new Ctrl(dpy)), mData(new Data(dpy)) { 37} 38 39GenericPipe::~GenericPipe() { 40 delete mCtrl; 41 delete mData; 42} 43 44void GenericPipe::setSource(const utils::PipeArgs& args) { 45 mCtrl->setSource(args); 46} 47 48void GenericPipe::setCrop(const overlay::utils::Dim& d) { 49 mCtrl->setCrop(d); 50} 51 52void GenericPipe::setColor(const uint32_t color) { 53 mCtrl->setColor(color); 54} 55 56void GenericPipe::setTransform(const utils::eTransform& orient) { 57 mCtrl->setTransform(orient); 58} 59 60void GenericPipe::setPosition(const utils::Dim& d) { 61 mCtrl->setPosition(d); 62} 63 64bool GenericPipe::setVisualParams(const MetaData_t &metadata) 65{ 66 return mCtrl->setVisualParams(metadata); 67} 68 69void GenericPipe::setPipeType(const utils::eMdpPipeType& pType) { 70 mCtrl->setPipeType(pType); 71} 72 73bool GenericPipe::commit() { 74 return mCtrl->commit(); 75} 76 77bool GenericPipe::queueBuffer(int fd, uint32_t offset) { 78 int pipeId = mCtrl->getPipeId(); 79 OVASSERT(-1 != pipeId, "Ctrl ID should not be -1"); 80 // set pipe id from ctrl to data 81 mData->setPipeId(pipeId); 82 83 return mData->queueBuffer(fd, offset); 84} 85 86utils::Dim GenericPipe::getCrop() const 87{ 88 return mCtrl->getCrop(); 89} 90 91uint8_t GenericPipe::getPriority() const { 92 return mCtrl->getPriority(); 93} 94 95void GenericPipe::dump() const 96{ 97 ALOGE("== Dump Generic pipe start =="); 98 mCtrl->dump(); 99 mData->dump(); 100 ALOGE("== Dump Generic pipe end =="); 101} 102 103void GenericPipe::getDump(char *buf, size_t len) { 104 mCtrl->getDump(buf, len); 105 mData->getDump(buf, len); 106} 107 108int GenericPipe::getPipeId() { 109 return mCtrl->getPipeId(); 110} 111 112bool GenericPipe::validateAndSet(GenericPipe* pipeArray[], const int& count, 113 const int& fbFd) { 114 Ctrl* ctrlArray[count]; 115 memset(&ctrlArray, 0, sizeof(ctrlArray)); 116 117 for(int i = 0; i < count; i++) { 118 ctrlArray[i] = pipeArray[i]->mCtrl; 119 } 120 121 return Ctrl::validateAndSet(ctrlArray, count, fbFd); 122} 123 124} //namespace overlay 125