[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/kdepim/enterprise4/kdelibs-4.0.83/kdeui/kernel
From:       Jaroslaw Staniek <js () iidea ! pl>
Date:       2008-07-02 15:50:52
Message-ID: 1215013852.241740.4077.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 827315 by staniek:

Windows:
depend on dbus_kde_patch smbol in libdbus; if present, use extended semantics with \
.unique-{PID} suffix



 M  +25 -2     kapplication_win.cpp  
 M  +10 -5     kuniqueapplication.cpp  


--- branches/kdepim/enterprise4/kdelibs-4.0.83/kdeui/kernel/kapplication_win.cpp \
#827314:827315 @@ -24,6 +24,7 @@
 #include <QTranslator>
 #include <QLocale>
 #include <QLibraryInfo>
+#include <QLibrary>
 
 /**
  * MS Windows-related actions for KApplication startup.
@@ -108,6 +109,12 @@
 #define GETPID_PROCESS_OBJECT_INDEX 230
 #define GETPID_PROC_ID_COUNTER 784
 
+QString fromWChar(const wchar_t *string, int size = -1)
+{
+  return (sizeof(wchar_t) == sizeof(QChar)) ? QString::fromUtf16((ushort *)string, \
size) +    : QString::fromUcs4((uint *)string, size);
+}
+
 void KApplication_getProcessesIdForName( const QString& processName, QList<int>& \
pids )  {
   qDebug() << "KApplication_getProcessesIdForName" << processName;
@@ -152,8 +159,8 @@
       curCounter = perfCounter;
 
       bstrProcessName = (wchar_t *)((PBYTE)perfInstance + perfInstance->NameOffset);
-      qDebug() << "bstrProcessName: " << \
                QString::fromWCharArray((LPCWSTR)bstrProcessName);
-      if (QString::fromWCharArray((LPCWSTR)bstrProcessName) == processName) {
+      qDebug() << "bstrProcessName: " << fromWChar((LPCWSTR)bstrProcessName);
+      if (fromWChar((LPCWSTR)bstrProcessName) == processName) {
         // retrieve the counters
         for( uint counter = 0; counter < perfObject->NumCounters; counter++ ) {
           if (curCounter->CounterNameTitleIndex == GETPID_PROC_ID_COUNTER) {
@@ -251,3 +258,19 @@
 
 // </copy>
 
+// returns true if dbus patched for KDE is used
+bool KApplication_dbusIsPatched()
+{
+# ifdef __GNUC__
+#  define DBUSLIB_PREFIX "lib"
+# else
+#  define DBUSLIB_PREFIX ""
+# endif
+# ifdef _DEBUG
+#  define DBUSLIB_SUFFIX "d"
+# else
+#  define DBUSLIB_SUFFIX ""
+# endif
+   QLibrary myLib(DBUSLIB_PREFIX "dbus-1" DBUSLIB_SUFFIX);
+   return myLib.resolve("dbus_kde_patch");
+}
--- branches/kdepim/enterprise4/kdelibs-4.0.83/kdeui/kernel/kuniqueapplication.cpp \
#827314:827315 @@ -74,7 +74,9 @@
 bool KUniqueApplication::Private::s_handleAutoStarted = false;
 #ifdef Q_WS_WIN
 QString KUniqueApplication::Private::s_dbusServiceName;
-void KApplication_activateWindowForProcess( const QString& executableName ); /* \
private helper from kapplication_win.cpp */ +/* private helpers from \
kapplication_win.cpp */ +void KApplication_activateWindowForProcess( const QString& \
executableName ); +bool KApplication_dbusIsPatched();
 #endif
 
 void
@@ -154,13 +156,16 @@
 
      // Check to make sure that we're actually able to register with the D-Bus \
session  // server.
-     if (
+     bool registered;
 #ifdef Q_WS_WIN
-       dbusService->registerService(appName + ".unique-" + pid) != \
QDBusConnectionInterface::ServiceRegistered +     if (KApplication_dbusIsPatched())
+       registered = dbusService->registerService(appName + ".unique-" + pid) == \
QDBusConnectionInterface::ServiceRegistered; +     else
+       registered = dbusService->registerService(appName) == \
QDBusConnectionInterface::ServiceRegistered;  #else
-       dbusService->registerService(appName) != \
QDBusConnectionInterface::ServiceRegistered +     registered = \
dbusService->registerService(appName) == QDBusConnectionInterface::ServiceRegistered; \
                #endif
-       )
+     if (!registered)
      {
         kError() << "KUniqueApplication: Can't setup D-Bus service. Probably already \
running."  << endl;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic