ISurfaceComposer.h revision 3165cc21cfea781988407b19bd83292b19f05f55
1edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project/* 2edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Copyright (C) 2006 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_H 1890ac799241f077a7b7e6c1875fd933864c8dd2a7Mathias Agopian#define ANDROID_GUI_ISURFACE_COMPOSER_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/RefBase.h> 24edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <utils/Errors.h> 259cce325fae8adcf7560a28eef394489f09bad74dMathias Agopian 26c5b2c0bf8007562536b822eb060fc54a01f8e08bMathias Agopian#include <binder/IInterface.h> 27edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 28edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <ui/PixelFormat.h> 29edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 3090ac799241f077a7b7e6c1875fd933864c8dd2a7Mathias Agopian#include <gui/IGraphicBufferAlloc.h> 3190ac799241f077a7b7e6c1875fd933864c8dd2a7Mathias Agopian#include <gui/ISurfaceComposerClient.h> 32edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 339cce325fae8adcf7560a28eef394489f09bad74dMathias Agopiannamespace android { 34edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// ---------------------------------------------------------------------------- 35edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 36439cf8576d3b846c0aa0944d84372259bf075d51Mathias Agopianclass ComposerState; 378b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopianclass DisplayState; 38c666cae2d5995097ec49a87e375e2afdd92802b7Mathias Agopianclass DisplayInfo; 39d0566bc26fcf6ca396118701fa11900b627f2c09Mathias Agopianclass IDisplayEventConnection; 40d0566bc26fcf6ca396118701fa11900b627f2c09Mathias Agopianclass IMemoryHeap; 41a67932fe6864ac346e7f78b86df11cf6c5344137Mathias Agopian 423165cc21cfea781988407b19bd83292b19f05f55Mathias Agopianclass ISurfaceComposer: public IInterface { 43edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectpublic: 44edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project DECLARE_META_INTERFACE(SurfaceComposer); 45edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 463165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian // flags for setTransactionState() 4728378392fd5aa3e0a392c9eb64634055678c3987Jamie Gennis enum { 483165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian eSynchronous = 0x01, 4928378392fd5aa3e0a392c9eb64634055678c3987Jamie Gennis }; 5028378392fd5aa3e0a392c9eb64634055678c3987Jamie Gennis 51edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project /* create connection with surface flinger, requires 52edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * ACCESS_SURFACE_FLINGER permission 53edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */ 547e27f05739c8a2655cf0f7faea35614ce0a50278Mathias Agopian virtual sp<ISurfaceComposerClient> createConnection() = 0; 55edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 569a78c90cd46b2a3bd637b056873149d3b94384b4Jamie Gennis /* create a graphic buffer allocator 579a78c90cd46b2a3bd637b056873149d3b94384b4Jamie Gennis */ 589a78c90cd46b2a3bd637b056873149d3b94384b4Jamie Gennis virtual sp<IGraphicBufferAlloc> createGraphicBufferAlloc() = 0; 599a78c90cd46b2a3bd637b056873149d3b94384b4Jamie Gennis 609cce325fae8adcf7560a28eef394489f09bad74dMathias Agopian /* open/close transactions. requires ACCESS_SURFACE_FLINGER permission */ 613165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian virtual void setTransactionState(const Vector<ComposerState>& state, 623165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian const Vector<DisplayState>& displays, uint32_t flags) = 0; 63edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 64edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project /* signal that we're done booting. 659cce325fae8adcf7560a28eef394489f09bad74dMathias Agopian * Requires ACCESS_SURFACE_FLINGER permission 66edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */ 67edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project virtual void bootFinished() = 0; 68edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 691b0b30d04304392748a8a4ab5a69e52a19f51b3aMathias Agopian /* Capture the specified screen. requires READ_FRAME_BUFFER permission 701b0b30d04304392748a8a4ab5a69e52a19f51b3aMathias Agopian * This function will fail if there is a secure window on screen. 711b0b30d04304392748a8a4ab5a69e52a19f51b3aMathias Agopian */ 723165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian virtual status_t captureScreen(DisplayID dpy, sp<IMemoryHeap>* heap, 7374c40c0a273dbfd7d10617c4cc1b0c066bfc812eMathias Agopian uint32_t* width, uint32_t* height, PixelFormat* format, 743165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, 753165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian uint32_t maxLayerZ) = 0; 761b0b30d04304392748a8a4ab5a69e52a19f51b3aMathias Agopian 77582270d69db94286a248bd829f1ae6f910d45124Jamie Gennis /* verify that an ISurfaceTexture was created by SurfaceFlinger. 78134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis */ 79582270d69db94286a248bd829f1ae6f910d45124Jamie Gennis virtual bool authenticateSurfaceTexture( 80582270d69db94286a248bd829f1ae6f910d45124Jamie Gennis const sp<ISurfaceTexture>& surface) const = 0; 81d0566bc26fcf6ca396118701fa11900b627f2c09Mathias Agopian 82d0566bc26fcf6ca396118701fa11900b627f2c09Mathias Agopian /* return an IDisplayEventConnection */ 83d0566bc26fcf6ca396118701fa11900b627f2c09Mathias Agopian virtual sp<IDisplayEventConnection> createDisplayEventConnection() = 0; 848e533069e5721e55cb9768e140e16546c3a4a8b6Colin Cross 858e533069e5721e55cb9768e140e16546c3a4a8b6Colin Cross /* triggers screen off and waits for it to complete */ 868e533069e5721e55cb9768e140e16546c3a4a8b6Colin Cross virtual void blank() = 0; 878e533069e5721e55cb9768e140e16546c3a4a8b6Colin Cross 888e533069e5721e55cb9768e140e16546c3a4a8b6Colin Cross /* triggers screen on and waits for it to complete */ 898e533069e5721e55cb9768e140e16546c3a4a8b6Colin Cross virtual void unblank() = 0; 903094df359d1e6e2ae8ca4e935cc093f563804c96Mathias Agopian 91c666cae2d5995097ec49a87e375e2afdd92802b7Mathias Agopian /* returns information about a physical screen. This is intended to be 92c666cae2d5995097ec49a87e375e2afdd92802b7Mathias Agopian * used by low-level native tests */ 93c666cae2d5995097ec49a87e375e2afdd92802b7Mathias Agopian virtual status_t getDisplayInfo(DisplayID dpy, DisplayInfo* info) = 0; 94c666cae2d5995097ec49a87e375e2afdd92802b7Mathias Agopian 953094df359d1e6e2ae8ca4e935cc093f563804c96Mathias Agopian /* connects to an external display */ 963094df359d1e6e2ae8ca4e935cc093f563804c96Mathias Agopian virtual void connectDisplay(const sp<ISurfaceTexture> display) = 0; 97edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; 98edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 99edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// ---------------------------------------------------------------------------- 100edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 1013165cc21cfea781988407b19bd83292b19f05f55Mathias Agopianclass BnSurfaceComposer: public BnInterface<ISurfaceComposer> { 102edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectpublic: 103edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project enum { 104edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project // Note: BOOT_FINISHED must remain this value, it is called from 105edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project // Java by ActivityManagerService. 106edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BOOT_FINISHED = IBinder::FIRST_CALL_TRANSACTION, 107edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project CREATE_CONNECTION, 1089a78c90cd46b2a3bd637b056873149d3b94384b4Jamie Gennis CREATE_GRAPHIC_BUFFER_ALLOC, 109c666cae2d5995097ec49a87e375e2afdd92802b7Mathias Agopian GET_DISPLAY_INFO, 110698c0873cf2e07bdc7fd1e72169aee2a19fa40d7Mathias Agopian SET_TRANSACTION_STATE, 11159119e658a12279e8fff508f8773843de2d90917Mathias Agopian CAPTURE_SCREEN, 112134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis AUTHENTICATE_SURFACE, 113d0566bc26fcf6ca396118701fa11900b627f2c09Mathias Agopian CREATE_DISPLAY_EVENT_CONNECTION, 1148e533069e5721e55cb9768e140e16546c3a4a8b6Colin Cross BLANK, 1158e533069e5721e55cb9768e140e16546c3a4a8b6Colin Cross UNBLANK, 1163094df359d1e6e2ae8ca4e935cc093f563804c96Mathias Agopian CONNECT_DISPLAY, 117edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project }; 118edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 1193165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian virtual status_t onTransact(uint32_t code, const Parcel& data, 1203165cc21cfea781988407b19bd83292b19f05f55Mathias Agopian Parcel* reply, uint32_t flags = 0); 121edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; 122edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 123edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// ---------------------------------------------------------------------------- 124edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 125edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; // namespace android 126edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 12790ac799241f077a7b7e6c1875fd933864c8dd2a7Mathias Agopian#endif // ANDROID_GUI_ISURFACE_COMPOSER_H 128