toolkit/source/awt/asynccallback.cxx | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-)
New commits: commit a88b21e3acfd8c5ea27a1138dcec8f6660cac1de Author: Noel Grandin <[email protected]> AuthorDate: Tue Jun 17 14:38:24 2025 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Tue Jun 17 20:58:44 2025 +0200 Revert "make AsyncCallback a little safer" This reverts commit 4c15b15a2018c3b8afc6d78fd7ff51beb3fc940e. Reason for revert: Various code apparently relies on letting the AsyncCallback object destruct before the callback is handled. Change-Id: I11b2ad872a7672199350d2333f8c9bbc7e78c9d9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186611 Tested-by: Jenkins Reviewed-by: Noel Grandin <[email protected]> diff --git a/toolkit/source/awt/asynccallback.cxx b/toolkit/source/awt/asynccallback.cxx index 80c1ea73d3da..4d5e07e47bc1 100644 --- a/toolkit/source/awt/asynccallback.cxx +++ b/toolkit/source/awt/asynccallback.cxx @@ -59,15 +59,9 @@ private: css::uno::Any aData; }; - DECL_LINK( Notify_Impl, void*, void ); + DECL_STATIC_LINK( AsyncCallback, Notify_Impl, void*, void ); - virtual ~AsyncCallback() override - { - if (mpCallbackId) - Application::RemoveUserEvent(mpCallbackId); - } - - ImplSVEvent* mpCallbackId { nullptr }; + virtual ~AsyncCallback() override {} }; // com.sun.star.uno.XServiceInfo: @@ -93,17 +87,13 @@ void SAL_CALL AsyncCallback::addCallback(const css::uno::Reference< css::awt::XC { // NOTE: We don't need SolarMutexGuard here as Application::PostUserEvent is thread-safe CallbackData* pCallbackData = new CallbackData( xCallback, aData ); - mpCallbackId = Application::PostUserEvent( LINK( this, AsyncCallback, Notify_Impl ), pCallbackData ); + Application::PostUserEvent( LINK( this, AsyncCallback, Notify_Impl ), pCallbackData ); } - else - assert(false && "addCallback will not succeed"); } // private asynchronous link to call reference to the callback object -IMPL_LINK( AsyncCallback, Notify_Impl, void*, p, void ) +IMPL_STATIC_LINK( AsyncCallback, Notify_Impl, void*, p, void ) { - mpCallbackId = nullptr; - CallbackData* pCallbackData = static_cast<CallbackData*>(p); try {
