From fb543b61ba8cbe74aa3dbf8e5ac933161405c456 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Fri, 27 Feb 2026 09:15:48 -0500 Subject: [PATCH] AppServerLink: Use a mutex. X512 pointed out that ServerLink is inherited by PortLink which is used by all windows, so the original change had the unintended effect of allocating another semaphore for every window, which isn't wanted. So, just use a static mutex here also. --- src/kits/app/AppServerLink.cpp | 10 ++++++++-- src/kits/app/ServerLink.cpp | 2 -- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/kits/app/AppServerLink.cpp b/src/kits/app/AppServerLink.cpp index 47099d20cc..18d68f8c06 100644 --- a/src/kits/app/AppServerLink.cpp +++ b/src/kits/app/AppServerLink.cpp @@ -13,6 +13,8 @@ #include #include +#include + /** AppServerLink provides proxied access to the application's * connection with the app_server. @@ -22,13 +24,17 @@ */ +static mutex sLock = MUTEX_INITIALIZER("AppServerLink_sLock"); + + namespace BPrivate { AppServerLink::AppServerLink() { + mutex_lock(&sLock); + // if there is no be_app, we can't do a whole lot, anyway if (be_app != NULL) { - BApplication::Private::ServerLink()->Lock(); fReceiver = &BApplication::Private::ServerLink()->Receiver(); fSender = &BApplication::Private::ServerLink()->Sender(); } else { @@ -39,7 +45,7 @@ AppServerLink::AppServerLink() AppServerLink::~AppServerLink() { - BApplication::Private::ServerLink()->Unlock(); + mutex_unlock(&sLock); } } // namespace BPrivate diff --git a/src/kits/app/ServerLink.cpp b/src/kits/app/ServerLink.cpp index a50d1eca98..42601bde87 100644 --- a/src/kits/app/ServerLink.cpp +++ b/src/kits/app/ServerLink.cpp @@ -24,8 +24,6 @@ namespace BPrivate { ServerLink::ServerLink() - : - BLocker() { }