19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef ANDROID_ISURFACE_FLINGER_CLIENT_H
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define ANDROID_ISURFACE_FLINGER_CLIENT_H
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <stdint.h>
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <sys/types.h>
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <utils/Errors.h>
240795272aa226f4e965968a03daddc53ce30b7cdaMathias Agopian#include <binder/IInterface.h>
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <utils/RefBase.h>
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <ui/ISurface.h>
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <ui/PixelFormat.h>
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace android {
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ----------------------------------------------------------------------------
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass Rect;
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass Point;
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass IMemory;
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass ISurface;
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projecttypedef int32_t    ClientID;
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projecttypedef int32_t    DisplayID;
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ----------------------------------------------------------------------------
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass layer_state_t;
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass ISurfaceFlingerClient : public IInterface
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic:
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    DECLARE_META_INTERFACE(SurfaceFlingerClient);
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    struct surface_data_t {
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int32_t             token;
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int32_t             identity;
5518b6b49ea5235fb6c0802db9a0cc2c6dd20646cbMathias Agopian        uint32_t            width;
5618b6b49ea5235fb6c0802db9a0cc2c6dd20646cbMathias Agopian        uint32_t            height;
5718b6b49ea5235fb6c0802db9a0cc2c6dd20646cbMathias Agopian        uint32_t            format;
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        status_t readFromParcel(const Parcel& parcel);
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        status_t writeToParcel(Parcel* parcel) const;
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
62d763b5d9197e01662cafa376e1227e53e0463a3cMathias Agopian    virtual sp<IMemoryHeap> getControlBlock() const = 0;
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual sp<ISurface> createSurface( surface_data_t* data,
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                        int pid,
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                        DisplayID display,
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                        uint32_t w,
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                        uint32_t h,
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                        PixelFormat format,
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                        uint32_t flags) = 0;
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual status_t    destroySurface(SurfaceID sid) = 0;
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual status_t    setState(int32_t count, const layer_state_t* states) = 0;
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project};
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ----------------------------------------------------------------------------
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass BnSurfaceFlingerClient : public BnInterface<ISurfaceFlingerClient>
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic:
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    virtual status_t    onTransact( uint32_t code,
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                    const Parcel& data,
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                    Parcel* reply,
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                    uint32_t flags = 0);
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project};
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ----------------------------------------------------------------------------
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; // namespace android
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif // ANDROID_ISURFACE_FLINGER_CLIENT_H
93