1/* 2* Copyright (c) 2011-2012, Code Aurora Forum. 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 Code Aurora Forum, Inc. 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#ifndef OVERLAY_H 31#define OVERLAY_H 32 33#include "overlayUtils.h" 34#include "overlayState.h" 35#include "overlayImpl.h" 36 37namespace overlay { 38/**/ 39class Overlay : utils::NoCopy { 40public: 41 /* dtor close */ 42 ~Overlay(); 43 44 /* Overlay related func */ 45 46 /* Following is the same as the pure virt interface in ov impl */ 47 48 bool setSource(const utils::PipeArgs args[utils::MAX_PIPES], 49 utils::eDest dest = utils::OV_PIPE_ALL); 50 bool setCrop(const utils::Dim& d, 51 utils::eDest dest = utils::OV_PIPE_ALL); 52 bool setTransform(const int orientation, 53 utils::eDest dest = utils::OV_PIPE_ALL); 54 bool setPosition(const utils::Dim& dim, 55 utils::eDest dest = utils::OV_PIPE_ALL); 56 bool commit(utils::eDest dest = utils::OV_PIPE_ALL); 57 58 bool queueBuffer(int fd, uint32_t offset, 59 utils::eDest dest = utils::OV_PIPE_ALL); 60 61 void dump() const; 62 63 /* state related functions */ 64 void setState(utils::eOverlayState s); 65 66 /* expose state */ 67 utils::eOverlayState getState() const; 68 69 /* Closes open pipes */ 70 static void initOverlay(); 71 72 /* Returns the per-display singleton instance of overlay */ 73 static Overlay* getInstance(int disp); 74 75private: 76 /* Ctor setup */ 77 Overlay(); 78 79 /* reset all pointers */ 80 void reset(); 81 82 /* Holds the state, state transition logic 83 * In the meantime, using simple enum rather than 84 * a class */ 85 OverlayState mState; 86 87 /* Holds the actual overlay impl, set when changing state*/ 88 OverlayImplBase *mOv; 89 90 /* Per-display Singleton Instance HWC_NUM_DISPLAY_TYPES */ 91 static Overlay *sInstance[2]; 92}; 93 94} // overlay 95 96#endif // OVERLAY_H 97