X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=include%2Flibcec%2FCECExports.h;fp=include%2FCECExportsCpp.h;h=0da18cffb5a594d09d1bcaac830731a043703c2e;hb=acec5f4851b1930cafb6ddc044131204a017401e;hp=7d70e7fe24c830cf74a36512bf7f316d6a5e0bff;hpb=ddb76c470aa282f59064c8e2ffe20a0785463167;p=deb_libcec.git diff --git a/include/CECExportsCpp.h b/include/libcec/CECExports.h similarity index 60% rename from include/CECExportsCpp.h rename to include/libcec/CECExports.h index 7d70e7f..0da18cf 100644 --- a/include/CECExportsCpp.h +++ b/include/libcec/CECExports.h @@ -31,6 +31,11 @@ * http://www.pulse-eight.net/ */ +#ifndef CECEXPORTS_H_ +#define CECEXPORTS_H_ + +#include + namespace CEC { class ICECAdapter @@ -119,80 +124,10 @@ namespace CEC * @see cec_set_inactive_view */ virtual bool SetInactiveView(void) = 0; - }; }; -extern DECLSPEC void * CECCreate(const char *strDeviceName, CEC::cec_logical_address iLogicalAddress = CEC::CECDEVICE_PLAYBACKDEVICE1, uint16_t iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS); - -extern DECLSPEC void CECDestroy(CEC::ICECAdapter *instance); - -#if !defined(DLL_EXPORT) -#if defined(_WIN32) || defined(_WIN64) -#include -#include - -static HINSTANCE g_libCEC = NULL; -static int g_iLibCECInstanceCount = 0; - -/*! - * @see cec_init - */ -inline CEC::ICECAdapter *LoadLibCec(const char *strName, CEC::cec_logical_address iLogicalAddress = CEC::CECDEVICE_PLAYBACKDEVICE1, uint16_t iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS) -{ - typedef void* (__cdecl*_CreateLibCec)(const char *, uint8_t, uint16_t); - _CreateLibCec CreateLibCec; - - if (!g_libCEC) - g_libCEC = LoadLibrary("libcec.dll"); - if (!g_libCEC) - return NULL; - - ++g_iLibCECInstanceCount; - CreateLibCec = (_CreateLibCec) (GetProcAddress(g_libCEC, "CECCreate")); - if (!CreateLibCec) - return NULL; - return static_cast< CEC::ICECAdapter* > (CreateLibCec(strName, (uint8_t) iLogicalAddress, iPhysicalAddress)); -} - -/*! - * @brief Unload the given libcec instance. - * @param device The instance to unload. - */ -inline void UnloadLibCec(CEC::ICECAdapter *device) -{ - typedef void (__cdecl*_DestroyLibCec)(void * device); - _DestroyLibCec DestroyLibCec; - DestroyLibCec = (_DestroyLibCec) (GetProcAddress(g_libCEC, "CECDestroy")); - if (DestroyLibCec) - DestroyLibCec(device); - - if (--g_iLibCECInstanceCount == 0) - { - FreeLibrary(g_libCEC); - g_libCEC = NULL; - } -}; - -#else - -/*! - * @see cec_init - */ -inline CEC::ICECAdapter *LoadLibCec(const char *strName, CEC::cec_logical_address iLogicalAddress = CEC::CECDEVICE_PLAYBACKDEVICE1, uint16_t iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS) -{ - return (CEC::ICECAdapter*) CECCreate(strName, iLogicalAddress, iPhysicalAddress); -}; - -/*! - * @brief Unload the given libcec instance. - * @param device The instance to unload. - */ -inline void UnloadLibCec(CEC::ICECAdapter *device) -{ - device->Close(); - CECDestroy(device); -}; -#endif +extern "C" DECLSPEC void * CECCreate(const char *strDeviceName, CEC::cec_logical_address iLogicalAddress = CEC::CECDEVICE_PLAYBACKDEVICE1, uint16_t iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS); +extern "C" DECLSPEC void CECDestroy(CEC::ICECAdapter *instance); -#endif +#endif /* CECEXPORTS_H_ */