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