1edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project/* 2edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 3edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 4edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * you may not use this file except in compliance with the License. 6edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * You may obtain a copy of the License at 7edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 8edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 10edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * See the License for the specific language governing permissions and 14edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * limitations under the License. 15edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */ 16edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 1790ac799241f077a7b7e6c1875fd933864c8dd2a7Mathias Agopian#ifndef ANDROID_GUI_ISURFACE_COMPOSER_CLIENT_H 1890ac799241f077a7b7e6c1875fd933864c8dd2a7Mathias Agopian#define ANDROID_GUI_ISURFACE_COMPOSER_CLIENT_H 19edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 20edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <stdint.h> 21edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <sys/types.h> 22edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 23edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <utils/Errors.h> 24edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <utils/RefBase.h> 25edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 269cce325fae8adcf7560a28eef394489f09bad74dMathias Agopian#include <binder/IInterface.h> 27edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 28d85084b2b65828442eafaff9b811e9b6c9ca9fadSvetoslav#include <ui/FrameStats.h> 29edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <ui/PixelFormat.h> 307e27f05739c8a2655cf0f7faea35614ce0a50278Mathias Agopian 31edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectnamespace android { 32edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// ---------------------------------------------------------------------------- 33edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 344d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6Mathias Agopianclass IGraphicBufferProducer; 354d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6Mathias Agopian 367e27f05739c8a2655cf0f7faea35614ce0a50278Mathias Agopianclass ISurfaceComposerClient : public IInterface 37edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{ 387e27f05739c8a2655cf0f7faea35614ce0a50278Mathias Agopianpublic: 397e27f05739c8a2655cf0f7faea35614ce0a50278Mathias Agopian DECLARE_META_INTERFACE(SurfaceComposerClient); 40edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 413165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian // flags for createSurface() 423165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian enum { // (keep in sync with Surface.java) 433165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eHidden = 0x00000004, 443165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eDestroyBackbuffer = 0x00000020, 453165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eSecure = 0x00000080, 463165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eNonPremultiplied = 0x00000100, 473165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eOpaque = 0x00000400, 483165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eProtectedByApp = 0x00000800, 493165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eProtectedByDRM = 0x00001000, 5003414a1cfe6c1222fd7723949bd622f9cba145aaRiley Andrews eCursorWindow = 0x00002000, 513165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian 523165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eFXSurfaceNormal = 0x00000000, 533165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eFXSurfaceDim = 0x00020000, 543165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eFXSurfaceMask = 0x000F0000, 553165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian }; 563165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian 57cc08e688f5b82b4ebd076ad138b2749e8c86ad5eMathias Agopian /* 58cc08e688f5b82b4ebd076ad138b2749e8c86ad5eMathias Agopian * Requires ACCESS_SURFACE_FLINGER permission 59cc08e688f5b82b4ebd076ad138b2749e8c86ad5eMathias Agopian */ 604d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6Mathias Agopian virtual status_t createSurface( 619d4e3d2f42e93e2d12bacabe97d307d30c3c20ddJeff Brown const String8& name, uint32_t w, uint32_t h, 624d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6Mathias Agopian PixelFormat format, uint32_t flags, 634d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6Mathias Agopian sp<IBinder>* handle, 644d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6Mathias Agopian sp<IGraphicBufferProducer>* gbp) = 0; 657e27f05739c8a2655cf0f7faea35614ce0a50278Mathias Agopian 66cc08e688f5b82b4ebd076ad138b2749e8c86ad5eMathias Agopian /* 67cc08e688f5b82b4ebd076ad138b2749e8c86ad5eMathias Agopian * Requires ACCESS_SURFACE_FLINGER permission 68cc08e688f5b82b4ebd076ad138b2749e8c86ad5eMathias Agopian */ 69ac9fa427d4a86745e60a5f7fd8e3ea340c4db907Mathias Agopian virtual status_t destroySurface(const sp<IBinder>& handle) = 0; 70d85084b2b65828442eafaff9b811e9b6c9ca9fadSvetoslav 71d85084b2b65828442eafaff9b811e9b6c9ca9fadSvetoslav /* 72d85084b2b65828442eafaff9b811e9b6c9ca9fadSvetoslav * Requires ACCESS_SURFACE_FLINGER permission 73d85084b2b65828442eafaff9b811e9b6c9ca9fadSvetoslav */ 74d85084b2b65828442eafaff9b811e9b6c9ca9fadSvetoslav virtual status_t clearLayerFrameStats(const sp<IBinder>& handle) const = 0; 75d85084b2b65828442eafaff9b811e9b6c9ca9fadSvetoslav 76d85084b2b65828442eafaff9b811e9b6c9ca9fadSvetoslav /* 77d85084b2b65828442eafaff9b811e9b6c9ca9fadSvetoslav * Requires ACCESS_SURFACE_FLINGER permission 78d85084b2b65828442eafaff9b811e9b6c9ca9fadSvetoslav */ 79d85084b2b65828442eafaff9b811e9b6c9ca9fadSvetoslav virtual status_t getLayerFrameStats(const sp<IBinder>& handle, FrameStats* outStats) const = 0; 80edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; 81edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 82edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// ---------------------------------------------------------------------------- 83edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 843165cc21cfea781988407b19bd83292b19f05f55Mathias Agopianclass BnSurfaceComposerClient: public BnInterface<ISurfaceComposerClient> { 85edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectpublic: 863165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian virtual status_t onTransact(uint32_t code, const Parcel& data, 873165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian Parcel* reply, uint32_t flags = 0); 88edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; 89edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 90edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// ---------------------------------------------------------------------------- 91edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 92edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; // namespace android 93edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 9490ac799241f077a7b7e6c1875fd933864c8dd2a7Mathias Agopian#endif // ANDROID_GUI_ISURFACE_COMPOSER_CLIENT_H 95