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 171473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian#define LOG_TAG "ISurface" 181473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <stdio.h> 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <stdint.h> 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <sys/types.h> 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 230795272aa226f4e965968a03daddc53ce30b7cdaMathias Agopian#include <binder/Parcel.h> 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 257bb843ca0777111dae7daf8f1b0705817cf523c4Mathias Agopian#include <gui/ISurfaceTexture.h> 26000479f9e325b4e426a67033abd92d47da412725Mathias Agopian#include <surfaceflinger/ISurface.h> 27000479f9e325b4e426a67033abd92d47da412725Mathias Agopian 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace android { 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 301473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian// ---------------------------------------------------------------------- 311473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass BpSurface : public BpInterface<ISurface> 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BpSurface(const sp<IBinder>& impl) 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project : BpInterface<ISurface>(impl) 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 407bb843ca0777111dae7daf8f1b0705817cf523c4Mathias Agopian virtual sp<ISurfaceTexture> getSurfaceTexture() const { 411473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian Parcel data, reply; 421473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian data.writeInterfaceToken(ISurface::getInterfaceDescriptor()); 437bb843ca0777111dae7daf8f1b0705817cf523c4Mathias Agopian remote()->transact(GET_SURFACE_TEXTURE, data, &reply); 447bb843ca0777111dae7daf8f1b0705817cf523c4Mathias Agopian return interface_cast<ISurfaceTexture>(reply.readStrongBinder()); 4559751dbf7d8f12aeb5c4c07719b7dbbf1f9b5d4bMathias Agopian } 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIMPLEMENT_META_INTERFACE(Surface, "android.ui.ISurface"); 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ---------------------------------------------------------------------- 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatus_t BnSurface::onTransact( 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch(code) { 567bb843ca0777111dae7daf8f1b0705817cf523c4Mathias Agopian case GET_SURFACE_TEXTURE: { 5759751dbf7d8f12aeb5c4c07719b7dbbf1f9b5d4bMathias Agopian CHECK_INTERFACE(ISurface, data, reply); 587bb843ca0777111dae7daf8f1b0705817cf523c4Mathias Agopian reply->writeStrongBinder( getSurfaceTexture()->asBinder() ); 5959751dbf7d8f12aeb5c4c07719b7dbbf1f9b5d4bMathias Agopian return NO_ERROR; 6059751dbf7d8f12aeb5c4c07719b7dbbf1f9b5d4bMathias Agopian } 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return BBinder::onTransact(code, data, reply, flags); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; // namespace android 67