From dae4328cd6aa5289525ada3810135b7beb3fa29a Mon Sep 17 00:00:00 2001 From: Lars Op den Kamp Date: Wed, 15 Feb 2012 17:29:36 +0100 Subject: [PATCH] LibCecSharp: delete the internal callback struct when closing the connection --- src/LibCecSharp/CecSharpTypes.h | 7 +++++++ src/LibCecSharp/LibCecSharp.cpp | 1 + 2 files changed, 8 insertions(+) diff --git a/src/LibCecSharp/CecSharpTypes.h b/src/LibCecSharp/CecSharpTypes.h index 39ef0cb..4995574 100644 --- a/src/LibCecSharp/CecSharpTypes.h +++ b/src/LibCecSharp/CecSharpTypes.h @@ -663,8 +663,15 @@ namespace CecSharp } public: + virtual void DisableCallbacks(void) + { + if (m_bHasCallbacks) + delete m_callbacks; + m_bHasCallbacks = false; + } virtual bool EnableCallbacks(CecCallbackMethods ^ callbacks) { + DisableCallbacks(); if (!m_bHasCallbacks) { m_bHasCallbacks = true; diff --git a/src/LibCecSharp/LibCecSharp.cpp b/src/LibCecSharp/LibCecSharp.cpp index 9c1c44a..971dc4d 100644 --- a/src/LibCecSharp/LibCecSharp.cpp +++ b/src/LibCecSharp/LibCecSharp.cpp @@ -148,6 +148,7 @@ namespace CecSharp void Close(void) { // delete the callbacks, since these might already have been destroyed in .NET + CecCallbackMethods::DisableCallbacks(); m_libCec->EnableCallbacks(NULL, NULL); m_libCec->StandbyDevices(); m_libCec->Close(); -- 2.34.1