From 9b5a7d7612706179bb589aa377fbfa035815a8b9 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Fri, 27 Feb 2026 09:22:03 -0500 Subject: [PATCH] AppServerLink: Switch to a recursive lock. It seems in some applications (though not most of the ones I initially tested) this can get used recursively, so we need a recursive_lock in order to not deadlock. Also commit a missed change from the previous commit. --- headers/private/app/ServerLink.h | 3 +-- src/kits/app/AppServerLink.cpp | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/headers/private/app/ServerLink.h b/headers/private/app/ServerLink.h index effbef4637..4ebb7d3c24 100644 --- a/headers/private/app/ServerLink.h +++ b/headers/private/app/ServerLink.h @@ -12,7 +12,6 @@ #include -#include #include #include @@ -34,7 +33,7 @@ class BGradient; namespace BPrivate { -class ServerLink : public BLocker { +class ServerLink { public: ServerLink(); virtual ~ServerLink(); diff --git a/src/kits/app/AppServerLink.cpp b/src/kits/app/AppServerLink.cpp index 18d68f8c06..807fd33ff9 100644 --- a/src/kits/app/AppServerLink.cpp +++ b/src/kits/app/AppServerLink.cpp @@ -24,14 +24,14 @@ */ -static mutex sLock = MUTEX_INITIALIZER("AppServerLink_sLock"); +static recursive_lock sLock = MUTEX_INITIALIZER("AppServerLink_sLock"); namespace BPrivate { AppServerLink::AppServerLink() { - mutex_lock(&sLock); + recursive_lock_lock(&sLock); // if there is no be_app, we can't do a whole lot, anyway if (be_app != NULL) { @@ -45,7 +45,7 @@ AppServerLink::AppServerLink() AppServerLink::~AppServerLink() { - mutex_unlock(&sLock); + recursive_lock_unlock(&sLock); } } // namespace BPrivate