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