xbus modifies library search path in order for QtDBus to find libdbus

refs #615
This commit is contained in:
Roland Winklmeier
2016-04-23 22:53:14 +02:00
parent d4248d2661
commit 21fe8d46ea
5 changed files with 75 additions and 20 deletions

View File

@@ -11,6 +11,8 @@
#include "service.h"
#include "traffic.h"
#include "weather.h"
#include "utils.h"
#include "blackmisc/librarypath.h"
namespace {
inline QString xbusServiceName() {
@@ -34,7 +36,15 @@ namespace XBus
Q_ASSERT(! m_server);
for (auto &item : m_startServerMenuItems) { item.setEnabled(false); }
auto previousLibraryPath = BlackMisc::getCustomLibraryPath();
auto libraryPath = g_xplanePath + "Resources" + g_sep + "plugins" + g_sep + "xbus";
#if !defined (Q_OS_MAC) && defined(WORD_SIZE_64)
libraryPath = libraryPath + g_sep + "64";
#endif
BlackMisc::setCustomLibraryPath(libraryPath);
m_server = new BlackMisc::CDBusServer(xbusServiceName(), address, this);
BlackMisc::setCustomLibraryPath(previousLibraryPath);
m_service = new CService(this);
m_traffic = new CTraffic(this);
m_weather = new CWeather(this);

View File

@@ -13,6 +13,7 @@
#define NOMINMAX
#endif
#include "traffic.h"
#include "utils.h"
#include "XPMPMultiplayer.h"
#include "XPMPMultiplayerCSL.h"
#include <XPLM/XPLMProcessing.h>
@@ -40,24 +41,6 @@ namespace XBus
surfaces.lights.timeOffset = static_cast<quint16>(qrand() % 0xffff);
}
QString g_xplanePath;
QString g_sep;
//! Init global xplane path
void initXPlanePath()
{
char xplanePath[512];
XPLMGetSystemPath(xplanePath);
#ifdef Q_OS_MAC
HFS2PosixPath(xplanePath, xplanePath, sizeof(xplanePath));
g_sep = "/";
#else
g_sep = XPLMGetDirectorySeparator();
#endif
g_xplanePath = xplanePath;
}
CTraffic::CTraffic(QObject *parent) : QObject(parent)
{
}

45
src/xbus/utils.cpp Normal file
View File

@@ -0,0 +1,45 @@
/* Copyright (C) 2016
* swift Project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
//! \cond PRIVATE
#ifndef NOMINMAX
#define NOMINMAX
#endif
#include "utils.h"
#include <XPMPMultiplayerCSL.h>
#include <QString>
#include <QtGlobal>
namespace XBus
{
QString g_xplanePath;
QString g_sep;
//! Init global xplane path
void initXPlanePath()
{
if (!g_xplanePath.isEmpty() && !g_sep.isEmpty()) {}
char xplanePath[512];
XPLMGetSystemPath(xplanePath);
#ifdef Q_OS_MAC
HFS2PosixPath(xplanePath, xplanePath, sizeof(xplanePath));
g_sep = "/";
#else
g_sep = XPLMGetDirectorySeparator();
#endif
g_xplanePath = xplanePath;
}
}
//! \endcond

View File

@@ -167,4 +167,16 @@ public:
}
};
namespace XBus
{
//! Absolute xplane path
extern QString g_xplanePath;
//! Platform specific dir separator
extern QString g_sep;
//! Init global xplane path
void initXPlanePath();
}
#endif // guard

View File

@@ -74,8 +74,13 @@ macx {
XBUS_DIR = xbus
XBUS_DESTDIR = $$DestRoot/$$XBUS_DIR
} else {
equals(WORD_SIZE,64): XBUS_DIR = xbus/64
equals(WORD_SIZE,32): XBUS_DIR = xbus
equals(WORD_SIZE,64) {
XBUS_DIR = xbus/64
DEFINES += WORD_SIZE_64
}
equals(WORD_SIZE,32) {
XBUS_DIR = xbus
}
XBUS_DESTDIR = $$DestRoot/$$XBUS_DIR
}