17cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden/* 27cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * Copyright (C) 2013 The Android Open Source Project 37cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * 47cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * Licensed under the Apache License, Version 2.0 (the "License"); 57cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * you may not use this file except in compliance with the License. 67cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * You may obtain a copy of the License at 77cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * 87cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * http://www.apache.org/licenses/LICENSE-2.0 97cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * 107cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * Unless required by applicable law or agreed to in writing, software 117cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * distributed under the License is distributed on an "AS IS" BASIS, 127cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * See the License for the specific language governing permissions and 147cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden * limitations under the License. 157cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden */ 167cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 177cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden#ifndef BUFFER_PRODUCER_WRAPPER_H_ 187cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 197cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden#define BUFFER_PRODUCER_WRAPPER_H_ 207cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 217cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden#include <gui/IGraphicBufferProducer.h> 227cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 237cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFaddennamespace android { 247cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 257cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden// Can't use static_cast to cast a RefBase back to an IGraphicBufferProducer, 267cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden// because IGBP's parent (IInterface) uses virtual inheritance. This class 277cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden// wraps IGBP while we pass it through AMessage. 287cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 297cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFaddenstruct BufferProducerWrapper : RefBase { 307cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden BufferProducerWrapper( 317cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden const sp<IGraphicBufferProducer>& bufferProducer) : 327cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden mBufferProducer(bufferProducer) { } 337cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 347cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden sp<IGraphicBufferProducer> getBufferProducer() const { 357cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden return mBufferProducer; 367cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden } 377cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 387cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFaddenprivate: 397cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden const sp<IGraphicBufferProducer> mBufferProducer; 407cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 417cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden DISALLOW_EVIL_CONSTRUCTORS(BufferProducerWrapper); 427cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden}; 437cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 447cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden} // namespace android 457cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 467cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden#endif // BUFFER_PRODUCER_WRAPPER_H_ 47