/* * Copyright (C) 2016 The CyanogenMod Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include using android::sp; using android::status_t; using android::IBinder; using android::IGraphicBufferConsumer; using android::IGraphicBufferProducer; using android::PixelFormat; using android::SurfaceControl; using android::SurfaceComposerClient; android::SurfaceComposerClient::Transaction *t = nullptr; void* sc = nullptr; // BufferItemConsumer(const sp& consumer, uint64_t consumerUsage, int bufferCount, bool controlledByApp); extern "C" void _ZN7android18BufferItemConsumerC1ERKNS_2spINS_22IGraphicBufferConsumerEEEjib( const sp& consumer, uint32_t consumerUsage, int bufferCount, bool controlledByApp) { _ZN7android18BufferItemConsumerC1ERKNS_2spINS_22IGraphicBufferConsumerEEEyib( consumer, static_cast(consumerUsage), bufferCount, controlledByApp); } extern "C" void _ZN7android11BufferQueue17createBufferQueueEPNS_2spINS_22IGraphicBufferProducerEEEPNS1_INS_22IGraphicBufferConsumerEEERKNS1_INS_19IGraphicBufferAllocEEE( sp* outProducer, sp* outConsumer, void*) { // createBufferQueue is a static method, call it directly android::BufferQueue::createBufferQueue(outProducer, outConsumer); } // GraphicBuffer(uint32_t inWidth, uint32_t inHeight, PixelFormat inFormat, // uint32_t inUsage, std::string requestorName = ""); extern "C" void _ZN7android13GraphicBufferC1EjjijNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE( uint32_t inWidth, uint32_t inHeight, PixelFormat inFormat, uint32_t inUsage, std::string requestorName = ""); extern "C" void _ZN7android13GraphicBufferC1Ejjij( uint32_t inWidth, uint32_t inHeight, PixelFormat inFormat, uint32_t inUsage) { _ZN7android13GraphicBufferC1EjjijNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE( inWidth, inHeight, inFormat, inUsage); } //sp SurfaceComposerClient::createSurface(const String8& name, uint32_t w, uint32_t h, // PixelFormat format, uint32_t flags, // SurfaceControl* parent, // LayerMetadata metadata); extern "C" void* _ZN7android21SurfaceComposerClient13createSurfaceERKNS_7String8EjjijPNS_14SurfaceControlENS_13LayerMetadataE( const android::String8& name,// name of the surface uint32_t w, // width in pixel uint32_t h, // height in pixel PixelFormat format, // pixel-format desired uint32_t flags, // usage flags SurfaceControl* parent, // parent android::LayerMetadata metadata ); extern "C" void* _ZN7android21SurfaceComposerClient13createSurfaceERKNS_7String8Ejjij( const android::String8& name, uint32_t w, uint32_t h, PixelFormat format, uint32_t flags) { android::LayerMetadata metadata; sc = _ZN7android21SurfaceComposerClient13createSurfaceERKNS_7String8EjjijPNS_14SurfaceControlENS_13LayerMetadataE(name, w, h, format, flags, nullptr, metadata); return sc; } // status_t setLayer(uint32_t layer); extern "C" status_t _ZN7android14SurfaceControl8setLayerEj(uint32_t layer) { t->setLayer((SurfaceControl*)sc, layer); return android::NO_ERROR; } // android::Fence::~Fence() extern "C" void _ZN7android5FenceD1Ev() { // no-op, the explicit destructor was replaced with = default; } extern "C" void _ZN7android21SurfaceComposerClient21openGlobalTransactionEv() { t = new(android::SurfaceComposerClient::Transaction); } extern "C" void _ZN7android21SurfaceComposerClient17setDisplaySurfaceERKNS_2spINS_7IBinderEEERKNS1_INS_22IGraphicBufferProducerEEE( const sp& token, const sp& bufferProducer) { t->setDisplaySurface(token, bufferProducer); } extern "C" void _ZN7android21SurfaceComposerClient20setDisplayProjectionERKNS_2spINS_7IBinderEEEjRKNS_4RectES8_( const sp& token, uint32_t orientation, const android::Rect& layerStackRect, const android::Rect& displayRect) { t->setDisplayProjection(token, orientation, layerStackRect, displayRect); } extern "C" void _ZN7android21SurfaceComposerClient20setDisplayLayerStackERKNS_2spINS_7IBinderEEEj( const sp& token, uint32_t layerStack){ t->setDisplayLayerStack(token, layerStack); } extern "C" status_t _ZN7android14SurfaceControl7setSizeEjj(uint32_t w, uint32_t h){ t->setSize((SurfaceControl*)sc, w, h); return android::NO_ERROR; } extern "C" status_t _ZN7android14SurfaceControl11setPositionEff(float x, float y){ t->setPosition((SurfaceControl*)sc, x, y); return android::NO_ERROR; } extern "C" void _ZN7android21SurfaceComposerClient22closeGlobalTransactionEb(){ t->apply(); delete t; t = nullptr; } // SurfaceComposerClient::getPhysicalDisplayToken(unsigned long long) extern "C" void *_ZN7android21SurfaceComposerClient23getPhysicalDisplayTokenEy(unsigned long long); //sp SurfaceComposerClient::getBuiltInDisplay(int32_t id); extern "C" void* _ZN7android21SurfaceComposerClient17getBuiltInDisplayEi(int32_t id){ return _ZN7android21SurfaceComposerClient23getPhysicalDisplayTokenEy(static_cast(id)); } extern "C" void _ZN7android14SurfaceControl7destroyEv(void); extern "C" void _ZN7android14SurfaceControl5clearEv(void){ _ZN7android14SurfaceControl7destroyEv(); } //android::GraphicBuffer::lock(uint32_t inUsage, void** vaddr, int32_t* outBytesPerPixel, // int32_t* outBytesPerStride); extern "C" status_t _ZN7android13GraphicBuffer4lockEjPPvPiS3_(uint32_t inUsage, void** vaddr, int32_t* outBytesPerPixel, int32_t* outBytesPerStride); //status_t GraphicBuffer::lock(uint32_t inUsage, void** vaddr) extern "C" status_t _ZN7android13GraphicBuffer4lockEjPPv(uint32_t inUsage, void** vaddr){ return _ZN7android13GraphicBuffer4lockEjPPvPiS3_(inUsage, vaddr, nullptr, nullptr); } extern "C" void _ZN7android10frameworks13sensorservice4V1_08toStringENS2_6ResultE() { } extern "C" void _ZN7android21SurfaceComposerClient13createSurfaceERKNS_7String8EjjijPNS_14SurfaceControlEjj() { } extern "C" void _ZN7android14SurfaceControl8setLayerEi() { }