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