Files
device_xiaomi_sdm710-common/libshims/lib-imsvtshim.cpp
Ivan Vecera b2ffa9bc9d sdm710-common: Add shim for missing symbol in lib-imsvideocodec.so
Commit 992496bd2e ("Allow creating child surfaces from
BlastBufferQueue") added 3rd parameter to Surface::Surface
constructor that causes an unresolved symbol in existing blobs.

Provide a shim library with implementation of older Surface
constructor for lib-imsvidcodec.so that references the mentioned
symbol. Class constructor is a function with thiscall calling
convention so to preserve ABI we have to provide a C-function with
pointer as first parameter (that is hidden in C++) and return that
pointer from the function.

Resolves:
E ims_media_jni: Error loading library lib-imsvt.so: dlopen failed: cannot locate symbol "_ZN7android7SurfaceC1ERKNS_2spINS_22IGraphicBufferProducerEEEb" referenced by "/system/system_ext/lib64/lib-imsvideocodec.so"

Signed-off-by: Ivan Vecera <ivan@cera.cz>
Change-Id: I91abeabb07cac8553ee548e507a949e929590995
2022-08-19 15:24:16 +02:00

21 lines
712 B
C++

#include <gui/IGraphicBufferProducer.h>
using namespace android;
extern "C" {
// Surface::Surface(sp<const IGraphicBufferProducer>&, bool, const sp<IBinder>&)
void* _ZN7android7SurfaceC1ERKNS_2spINS_22IGraphicBufferProducerEEEbRKNS1_INS_7IBinderEEE(
void*, const sp<IGraphicBufferProducer>&, bool, const sp<IBinder>&);
// Surface::Surface(const sp<IGraphicBufferProducer>&, bool)
void* _ZN7android7SurfaceC1ERKNS_2spINS_22IGraphicBufferProducerEEEb(
void* _this, const sp<IGraphicBufferProducer>& bufferProducer,
bool controlledByApp)
{
return _ZN7android7SurfaceC1ERKNS_2spINS_22IGraphicBufferProducerEEEbRKNS1_INS_7IBinderEEE(
_this, bufferProducer, controlledByApp, nullptr);
}
}