11173118eace0e9e347cb007f0da817cee87579edGlenn Kasten/*
21173118eace0e9e347cb007f0da817cee87579edGlenn Kasten * Copyright (C) 2011 The Android Open Source Project
31173118eace0e9e347cb007f0da817cee87579edGlenn Kasten *
41173118eace0e9e347cb007f0da817cee87579edGlenn Kasten * Licensed under the Apache License, Version 2.0 (the "License");
51173118eace0e9e347cb007f0da817cee87579edGlenn Kasten * you may not use this file except in compliance with the License.
61173118eace0e9e347cb007f0da817cee87579edGlenn Kasten * You may obtain a copy of the License at
71173118eace0e9e347cb007f0da817cee87579edGlenn Kasten *
81173118eace0e9e347cb007f0da817cee87579edGlenn Kasten *      http://www.apache.org/licenses/LICENSE-2.0
91173118eace0e9e347cb007f0da817cee87579edGlenn Kasten *
101173118eace0e9e347cb007f0da817cee87579edGlenn Kasten * Unless required by applicable law or agreed to in writing, software
111173118eace0e9e347cb007f0da817cee87579edGlenn Kasten * distributed under the License is distributed on an "AS IS" BASIS,
121173118eace0e9e347cb007f0da817cee87579edGlenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131173118eace0e9e347cb007f0da817cee87579edGlenn Kasten * See the License for the specific language governing permissions and
141173118eace0e9e347cb007f0da817cee87579edGlenn Kasten * limitations under the License.
151173118eace0e9e347cb007f0da817cee87579edGlenn Kasten */
161173118eace0e9e347cb007f0da817cee87579edGlenn Kasten
171173118eace0e9e347cb007f0da817cee87579edGlenn Kasten#ifndef NATIVE_WINDOW_WRAPPER_H_
181173118eace0e9e347cb007f0da817cee87579edGlenn Kasten
191173118eace0e9e347cb007f0da817cee87579edGlenn Kasten#define NATIVE_WINDOW_WRAPPER_H_
201173118eace0e9e347cb007f0da817cee87579edGlenn Kasten
211173118eace0e9e347cb007f0da817cee87579edGlenn Kasten#include <gui/SurfaceTextureClient.h>
221173118eace0e9e347cb007f0da817cee87579edGlenn Kasten
231173118eace0e9e347cb007f0da817cee87579edGlenn Kastennamespace android {
241173118eace0e9e347cb007f0da817cee87579edGlenn Kasten
255778822d86b0337407514b9372562b86edfa91cdAndreas Huber// SurfaceTextureClient derives from ANativeWindow which derives from multiple
265778822d86b0337407514b9372562b86edfa91cdAndreas Huber// base classes, in order to carry it in AMessages, we'll temporarily wrap it
275778822d86b0337407514b9372562b86edfa91cdAndreas Huber// into a NativeWindowWrapper.
281173118eace0e9e347cb007f0da817cee87579edGlenn Kasten
291173118eace0e9e347cb007f0da817cee87579edGlenn Kastenstruct NativeWindowWrapper : RefBase {
301173118eace0e9e347cb007f0da817cee87579edGlenn Kasten    NativeWindowWrapper(
311173118eace0e9e347cb007f0da817cee87579edGlenn Kasten            const sp<SurfaceTextureClient> &surfaceTextureClient) :
321173118eace0e9e347cb007f0da817cee87579edGlenn Kasten        mSurfaceTextureClient(surfaceTextureClient) { }
331173118eace0e9e347cb007f0da817cee87579edGlenn Kasten
341173118eace0e9e347cb007f0da817cee87579edGlenn Kasten    sp<ANativeWindow> getNativeWindow() const {
355778822d86b0337407514b9372562b86edfa91cdAndreas Huber        return mSurfaceTextureClient;
361173118eace0e9e347cb007f0da817cee87579edGlenn Kasten    }
371173118eace0e9e347cb007f0da817cee87579edGlenn Kasten
385778822d86b0337407514b9372562b86edfa91cdAndreas Huber    sp<SurfaceTextureClient> getSurfaceTextureClient() const {
395778822d86b0337407514b9372562b86edfa91cdAndreas Huber        return mSurfaceTextureClient;
405778822d86b0337407514b9372562b86edfa91cdAndreas Huber    }
411173118eace0e9e347cb007f0da817cee87579edGlenn Kasten
421173118eace0e9e347cb007f0da817cee87579edGlenn Kastenprivate:
431173118eace0e9e347cb007f0da817cee87579edGlenn Kasten    const sp<SurfaceTextureClient> mSurfaceTextureClient;
441173118eace0e9e347cb007f0da817cee87579edGlenn Kasten
451173118eace0e9e347cb007f0da817cee87579edGlenn Kasten    DISALLOW_EVIL_CONSTRUCTORS(NativeWindowWrapper);
461173118eace0e9e347cb007f0da817cee87579edGlenn Kasten};
471173118eace0e9e347cb007f0da817cee87579edGlenn Kasten
481173118eace0e9e347cb007f0da817cee87579edGlenn Kasten}  // namespace android
491173118eace0e9e347cb007f0da817cee87579edGlenn Kasten
501173118eace0e9e347cb007f0da817cee87579edGlenn Kasten#endif  // NATIVE_WINDOW_WRAPPER_H_
51