1a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian/* 2a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian * Copyright (C) 2013 The Android Open Source Project 3a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian * 4a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian * Licensed under the Apache License, Version 2.0 (the "License"); 5a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian * you may not use this file except in compliance with the License. 6a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian * You may obtain a copy of the License at 7a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian * 8a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian * http://www.apache.org/licenses/LICENSE-2.0 9a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian * 10a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian * Unless required by applicable law or agreed to in writing, software 11a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian * distributed under the License is distributed on an "AS IS" BASIS, 12a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian * See the License for the specific language governing permissions and 14a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian * limitations under the License. 15a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian */ 16a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian 17a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian#include <stdint.h> 18a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian#include <sys/types.h> 19a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian 20a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian#include <binder/IInterface.h> 21a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian#include <binder/Parcel.h> 22a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian 23a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian#include <gui/IConsumerListener.h> 24a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian 25a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian// --------------------------------------------------------------------------- 26a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopiannamespace android { 27a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian// --------------------------------------------------------------------------- 28a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian 29a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopianenum { 30a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian ON_FRAME_AVAILABLE = IBinder::FIRST_CALL_TRANSACTION, 31a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian ON_BUFFER_RELEASED 32a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian}; 33a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian 34a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopianclass BpConsumerListener : public BpInterface<IConsumerListener> 35a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian{ 36a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopianpublic: 37a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian BpConsumerListener(const sp<IBinder>& impl) 38a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian : BpInterface<IConsumerListener>(impl) { 39a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian } 40a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian 41a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian virtual void onFrameAvailable() { 42a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian Parcel data, reply; 43a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian data.writeInterfaceToken(IConsumerListener::getInterfaceDescriptor()); 44a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian remote()->transact(ON_FRAME_AVAILABLE, data, &reply, IBinder::FLAG_ONEWAY); 45a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian } 46a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian 47a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian virtual void onBuffersReleased() { 48a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian Parcel data, reply; 49a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian data.writeInterfaceToken(IConsumerListener::getInterfaceDescriptor()); 50a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian remote()->transact(ON_BUFFER_RELEASED, data, &reply, IBinder::FLAG_ONEWAY); 51a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian } 52a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian}; 53a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian 54a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias AgopianIMPLEMENT_META_INTERFACE(ConsumerListener, "android.gui.IConsumerListener"); 55a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian 56a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian// ---------------------------------------------------------------------- 57a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian 58a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopianstatus_t BnConsumerListener::onTransact( 59a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) 60a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian{ 61a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian switch(code) { 62a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian case ON_FRAME_AVAILABLE: 63a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian CHECK_INTERFACE(IConsumerListener, data, reply); 64a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian onFrameAvailable(); 65a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian return NO_ERROR; 66a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian case ON_BUFFER_RELEASED: 67a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian CHECK_INTERFACE(IConsumerListener, data, reply); 68a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian onBuffersReleased(); 69a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian return NO_ERROR; 70a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian } 71a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian return BBinder::onTransact(code, data, reply, flags); 72a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian} 73a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian 74a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian 75a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian// --------------------------------------------------------------------------- 76a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian}; // namespace android 77a4e19521ac4563f2ff6517bcfd63d9b8d33a6d0bMathias Agopian// --------------------------------------------------------------------------- 78