LibCecSharp: implemented support for the new 'send inactive source' setting
[deb_libcec.git] / src / LibCecSharp / LibCecSharp.cpp
index 014dea00741571e7d6b9c2af440d5ab83551e2df..76dd00624e7948d3fcbf9eedfcf7d73f156f1b86 100644 (file)
@@ -45,13 +45,15 @@ namespace CecSharp
        public:
          LibCecSharp(LibCECConfiguration ^config)
                {
-                       CecCallbackMethods::EnableCallbacks(config->Callbacks);
+      m_callbacks = config->Callbacks;
+                       CecCallbackMethods::EnableCallbacks(m_callbacks);
                        if (!InitialiseLibCec(config))
                                throw gcnew Exception("Could not initialise LibCecSharp");
                }
 
                LibCecSharp(String ^ strDeviceName, CecDeviceTypeList ^ deviceTypes)
                {
+      m_callbacks = gcnew CecCallbackMethods();
                        LibCECConfiguration ^config = gcnew LibCECConfiguration();
                        config->SetCallbacks(this);
                        config->DeviceName  = strDeviceName;
@@ -80,8 +82,6 @@ namespace CecSharp
                        ConvertConfiguration(context, config, libCecConfig);
 
                        m_libCec = (ICECAdapter *) CECInitialise(&libCecConfig);
-                       config->Update(libCecConfig);
-
 
                        delete context;
                        return m_libCec != NULL;
@@ -117,6 +117,7 @@ namespace CecSharp
                        }
                        config.bPowerOffScreensaver = netConfig->PowerOffScreensaver ? 1 : 0;
                        config.bPowerOffOnStandby   = netConfig->PowerOffOnStandby ? 1 : 0;
+      config.bSendInactiveSource  = netConfig->SendInactiveSource ? 1 : 0;
                        config.callbacks            = &g_cecCallbacks;
                }
 
@@ -141,6 +142,8 @@ namespace CecSharp
 
                bool Open(String ^ strPort, int iTimeoutMs)
                {
+      CecCallbackMethods::EnableCallbacks(m_callbacks);
+      EnableCallbacks(m_callbacks);
                        marshal_context ^ context = gcnew marshal_context();
                        const char* strPortC = context->marshal_as<const char*>(strPort);
                        bool bReturn = m_libCec->Open(strPortC, iTimeoutMs);
@@ -552,5 +555,6 @@ namespace CecSharp
 
        private:
                ICECAdapter *        m_libCec;
+    CecCallbackMethods ^ m_callbacks;
        };
 }