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 28edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <ui/PixelFormat.h> 297e27f05739c8a2655cf0f7faea35614ce0a50278Mathias Agopian 30edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectnamespace android { 31edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// ---------------------------------------------------------------------------- 32edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 334d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6Mathias Agopianclass IGraphicBufferProducer; 344d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6Mathias Agopian 357e27f05739c8a2655cf0f7faea35614ce0a50278Mathias Agopianclass ISurfaceComposerClient : public IInterface 36edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{ 377e27f05739c8a2655cf0f7faea35614ce0a50278Mathias Agopianpublic: 387e27f05739c8a2655cf0f7faea35614ce0a50278Mathias Agopian DECLARE_META_INTERFACE(SurfaceComposerClient); 39edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 403165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian // flags for createSurface() 413165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian enum { // (keep in sync with Surface.java) 423165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eHidden = 0x00000004, 433165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eDestroyBackbuffer = 0x00000020, 443165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eSecure = 0x00000080, 453165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eNonPremultiplied = 0x00000100, 463165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eOpaque = 0x00000400, 473165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eProtectedByApp = 0x00000800, 483165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eProtectedByDRM = 0x00001000, 493165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian 503165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eFXSurfaceNormal = 0x00000000, 513165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eFXSurfaceDim = 0x00020000, 523165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eFXSurfaceMask = 0x000F0000, 533165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian }; 543165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian 55cc08e688f5b82b4ebd076ad138b2749e8c86ad5eMathias Agopian /* 56cc08e688f5b82b4ebd076ad138b2749e8c86ad5eMathias Agopian * Requires ACCESS_SURFACE_FLINGER permission 57cc08e688f5b82b4ebd076ad138b2749e8c86ad5eMathias Agopian */ 584d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6Mathias Agopian virtual status_t createSurface( 599d4e3d2f42e93e2d12bacabe97d307d30c3c20ddJeff Brown const String8& name, uint32_t w, uint32_t h, 604d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6Mathias Agopian PixelFormat format, uint32_t flags, 614d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6Mathias Agopian sp<IBinder>* handle, 624d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6Mathias Agopian sp<IGraphicBufferProducer>* gbp) = 0; 637e27f05739c8a2655cf0f7faea35614ce0a50278Mathias Agopian 64cc08e688f5b82b4ebd076ad138b2749e8c86ad5eMathias Agopian /* 65cc08e688f5b82b4ebd076ad138b2749e8c86ad5eMathias Agopian * Requires ACCESS_SURFACE_FLINGER permission 66cc08e688f5b82b4ebd076ad138b2749e8c86ad5eMathias Agopian */ 67ac9fa427d4a86745e60a5f7fd8e3ea340c4db907Mathias Agopian virtual status_t destroySurface(const sp<IBinder>& handle) = 0; 68edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; 69edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 70edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// ---------------------------------------------------------------------------- 71edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 723165cc21cfea781988407b19bd83292b19f05f55Mathias Agopianclass BnSurfaceComposerClient: public BnInterface<ISurfaceComposerClient> { 73edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectpublic: 743165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian virtual status_t onTransact(uint32_t code, const Parcel& data, 753165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian Parcel* reply, uint32_t flags = 0); 76edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; 77edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 78edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// ---------------------------------------------------------------------------- 79edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 80edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; // namespace android 81edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 8290ac799241f077a7b7e6c1875fd933864c8dd2a7Mathias Agopian#endif // ANDROID_GUI_ISURFACE_COMPOSER_CLIENT_H 83