1f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam/*
2f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam * Copyright (C) 2012 The Android Open Source Project
3f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam *
4f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam * Licensed under the Apache License, Version 2.0 (the "License");
5f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam * you may not use this file except in compliance with the License.
6f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam * You may obtain a copy of the License at
7f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam *
8f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam *      http://www.apache.org/licenses/LICENSE-2.0
9f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam *
10f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam * Unless required by applicable law or agreed to in writing, software
11f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam * distributed under the License is distributed on an "AS IS" BASIS,
12f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam * See the License for the specific language governing permissions and
14f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam * limitations under the License.
15f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam */
16f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam
17f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam#ifndef ANDROID_GUI_DUMMYCONSUMER_H
18f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam#define ANDROID_GUI_DUMMYCONSUMER_H
19f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam
20f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam#include <gui/BufferQueue.h>
21f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam
22f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lamnamespace android {
23f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam// ----------------------------------------------------------------------------
24f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam
25f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam
26f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam// The DummyConsumer does not keep a reference to BufferQueue
27f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam// unlike SurfaceTexture.  This prevents a circular reference from
289d61a28d72d85ac0460fb7fba9f85f8a955354c7Daniel Lam// forming without having to use a ProxyConsumerListener
299d61a28d72d85ac0460fb7fba9f85f8a955354c7Daniel Lamclass DummyConsumer : public BufferQueue::ConsumerListener {
30f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lampublic:
319d61a28d72d85ac0460fb7fba9f85f8a955354c7Daniel Lam    DummyConsumer();
32f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam    virtual ~DummyConsumer();
33f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lamprotected:
34f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam
35f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam    // Implementation of the BufferQueue::ConsumerListener interface.  These
36f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam    // calls are used to notify the SurfaceTexture of asynchronous events in the
37f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam    // BufferQueue.
38f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam    virtual void onFrameAvailable();
39f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam    virtual void onBuffersReleased();
40f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam
41f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam};
42f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam
43f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam// ----------------------------------------------------------------------------
44f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam}; // namespace android
45f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam
46f71c4ae136f7749b9dfdaa2dd64d771868eeeb2dDaniel Lam#endif // ANDROID_GUI_DUMMYCONSUMER_H
47