X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=include%2Fcecloader.h;h=d20ca2ff22e22007f0a41fd2e3886e10f9e219e6;hb=14877577eed5e128e0efb7d5eafc9c244f5de23b;hp=242d4fe52d9fb0cbe12cbfeeca6fa8af828d7e7b;hpb=722869e27e6f6ef9db09fa9114994e167b7e8894;p=deb_libcec.git diff --git a/include/cecloader.h b/include/cecloader.h index 242d4fe..d20ca2f 100644 --- a/include/cecloader.h +++ b/include/cecloader.h @@ -96,13 +96,44 @@ CEC::ICECAdapter *LoadLibCec(const char *strName, CEC::cec_logical_address iLogi _CreateLibCec* CreateLibCec = (_CreateLibCec*) dlsym(g_libCEC, "CECCreate"); if (!CreateLibCec) { - cout << "cannot find CreateLibCec" << endl; + cout << "cannot find CECCreate" << endl; return NULL; } return (CEC::ICECAdapter*) CreateLibCec(strName, iLogicalAddress, iPhysicalAddress); } +CEC::ICECAdapter *LibCecInit(const char *strDeviceName, CEC::cec_device_type_list types, const char *strLib = NULL) +{ + if (!g_libCEC) + { +#if defined(__APPLE__) + g_libCEC = dlopen(strLib ? strLib : "libcec.dylib", RTLD_LAZY); +#else + g_libCEC = dlopen(strLib ? strLib : "libcec.so", RTLD_LAZY); +#endif + if (!g_libCEC) + { +#if defined(__APPLE__) + cout << "cannot find " << (strLib ? strLib : "libcec.dylib") << dlerror() << endl; +#else + cout << "cannot find " << (strLib ? strLib : "libcec.so") << dlerror() << endl; +#endif + return NULL; + } + } + + typedef void* _LibCecInit(const char *, CEC::cec_device_type_list); + _LibCecInit* LibCecInit = (_LibCecInit*) dlsym(g_libCEC, "CECInit"); + if (!LibCecInit) + { + cout << "cannot find CECInit" << endl; + return NULL; + } + + return (CEC::ICECAdapter*) LibCecInit(strDeviceName, types); +} + void UnloadLibCec(CEC::ICECAdapter *device) { typedef void* _DestroyLibCec(CEC::ICECAdapter *);