From d2d52d31abb67ab338a4fbf102a880c55fda0fe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 1 Aug 2008 14:02:02 +0000 Subject: [PATCH] * Made _LaunchInputServer() more robust: when launching by signature fails, we try its well-known location directly. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26716 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/Desktop.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/servers/app/Desktop.cpp b/src/servers/app/Desktop.cpp index ea26e0ac35..828da77a61 100644 --- a/src/servers/app/Desktop.cpp +++ b/src/servers/app/Desktop.cpp @@ -412,8 +412,24 @@ Desktop::_LaunchInputServer() { BRoster roster; status_t status = roster.Launch("application/x-vnd.Be-input_server"); - if (status != B_OK && status != B_ALREADY_RUNNING) - syslog(LOG_ERR, "Failed to launch the input server: %s!\n", strerror(status)); + if (status == B_OK || status == B_ALREADY_RUNNING) + return; + + // Could not load input_server by signature, try well-known location + + BEntry entry("/system/servers/input_server"); + entry_ref ref; + status_t entryStatus = entry.GetRef(&ref); + if (entryStatus == B_OK) + entryStatus = roster.Launch(&ref); + if (entryStatus == B_OK || entryStatus == B_ALREADY_RUNNING) { + syslog(LOG_ERR, "Failed to launch the input server by signature: %s!\n", + strerror(status)); + return; + } + + syslog(LOG_ERR, "Failed to launch the input server: %s!\n", + strerror(entryStatus)); }