Add debian package patches.
[deb_libcec.git] / include / cecloader.h
index 1b0be87cad7e9995538c83f1c984bfca2e97f6f1..6c7c97a04d417167eeceed71d18d3e0f1c5c3374 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * This file is part of the libCEC(R) library.
  *
- * libCEC(R) is Copyright (C) 2011-2012 Pulse-Eight Limited.  All rights reserved.
+ * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited.  All rights reserved.
  * libCEC(R) is an original work, containing original code.
  *
  * libCEC(R) is a trademark of Pulse-Eight Limited.
 
 HINSTANCE g_libCEC = NULL;
 
-/*!
- * @brief Create a new libCEC instance.
- * @param strDeviceName The name of the primary device to pass to other CEC devices.
- * @param types The list of device types to register on the bus.
- * @param strLib The name of and/or path to libCEC
- * @return An instance of libCEC or NULL when it failed to load.
- */
-CEC::ICECAdapter *LibCecInit(const char *strDeviceName, CEC::cec_device_type_list types, const char *strLib = NULL)
-{
-  if (!g_libCEC)
-#if defined(_WIN64)
-    g_libCEC = LoadLibrary(strLib ? strLib : "libcec.x64.dll");
-#else
-    g_libCEC = LoadLibrary(strLib ? strLib : "libcec.dll");
-#endif
-  if (!g_libCEC)
-    return NULL;
-
-  typedef void* (__cdecl*_LibCecInit)(const char *, CEC::cec_device_type_list);
-  _LibCecInit LibCecInit;
-  LibCecInit = (_LibCecInit) (GetProcAddress(g_libCEC, "CECInit"));
-  if (!LibCecInit)
-    return NULL;
-  return static_cast< CEC::ICECAdapter* > (LibCecInit(strDeviceName, types));
-}
-
 /*!
  * @brief Create a new libCEC instance.
  * @param configuration The configuration to pass to libCEC
@@ -134,7 +108,8 @@ bool LibCecBootloader(const char *strLib = NULL)
     return false;
 
   bool bReturn = LibCecBootloader();
-  UnloadLibCec(static_cast< CEC::ICECAdapter* > g_libCEC);
+  FreeLibrary(g_libCEC);
+  g_libCEC = NULL;
   return bReturn;
 }
 
@@ -144,44 +119,6 @@ bool LibCecBootloader(const char *strLib = NULL)
 
 void *g_libCEC = NULL;
 
-/*!
- * @brief Create a new libCEC instance.
- * @param strDeviceName The name of the primary device to pass to other CEC devices.
- * @param types The list of device types to register on the bus.
- * @param strLib The name of and/or path to libCEC
- * @return An instance of libCEC or NULL when it failed to load.
- */
-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);
-}
-
 /*!
  * @brief Create a new libCEC instance.
  * @param configuration The configuration to pass to libCEC
@@ -193,17 +130,13 @@ CEC::ICECAdapter *LibCecInitialise(CEC::libcec_configuration *configuration, con
   if (!g_libCEC)
   {
 #if defined(__APPLE__)
-    g_libCEC = dlopen(strLib ? strLib : "libcec.dylib", RTLD_LAZY);
+    g_libCEC = dlopen(strLib ? strLib : "libcec." CEC_LIB_VERSION_MAJOR_STR ".dylib", RTLD_LAZY);
 #else
-    g_libCEC = dlopen(strLib ? strLib : "libcec.so", RTLD_LAZY);
+    g_libCEC = dlopen(strLib ? strLib : "libcec.so." CEC_LIB_VERSION_MAJOR_STR, 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
+      cout << dlerror() << endl;
       return NULL;
     }
   }
@@ -245,15 +178,11 @@ bool LibCecBootloader(const char *strLib = NULL)
 #if defined(__APPLE__)
     g_libCEC = dlopen(strLib ? strLib : "libcec.dylib", RTLD_LAZY);
 #else
-    g_libCEC = dlopen(strLib ? strLib : "libcec.so", RTLD_LAZY);
+    g_libCEC = dlopen(strLib ? strLib : "libcec.so." CEC_LIB_VERSION_MAJOR_STR, 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
+      cout << dlerror() << endl;
       return NULL;
     }
   }
@@ -267,7 +196,7 @@ bool LibCecBootloader(const char *strLib = NULL)
   }
 
   bool bReturn = LibCecBootloader();
-  UnloadLibCec((CEC::ICECAdapter*)g_libCEC);
+  dlclose(g_libCEC);
   return bReturn;
 }