SVN commit 1031397 by craig: Create QCoreApplication in ioslave's main(), and use QEventLoop exec()/quit() to wait for replies from dbus service. M +5 -19 FontInstInterface.cpp M +2 -2 FontInstInterface.h M +4 -2 KioFonts.cpp --- trunk/KDE/kdebase/workspace/kcontrol/kfontinst/kio/FontInstInterface.cpp #1031396:1031397 @@ -24,8 +24,6 @@ #include "FontInstInterface.h" #include "FontinstIface.h" #include "FontInst.h" -#include -#include #include #include #include "config-fontinst.h" @@ -35,8 +33,6 @@ namespace KFI { -QCoreApplication * FontInstInterface::theApp=0L; - FontInstInterface::FontInstInterface() : itsInterface(new OrgKdeFontinstInterface(OrgKdeFontinstInterface::staticInterfaceName(), FONTINST_PATH, @@ -44,7 +40,6 @@ ? QDBusConnection::systemBus() : QDBusConnection::sessionBus(), 0L)) , itsActive(false) - { KFI_DBUG; FontInst::registerTypes(); @@ -61,8 +56,6 @@ FontInstInterface::~FontInstInterface() { KFI_DBUG; - delete theApp; - theApp=0L; } int FontInstInterface::install(const QString &file, bool toSystem) @@ -118,15 +111,8 @@ itsStatus=FontInst::STATUS_OK; itsFamilies=Families(); itsActive=true; - // Need a QApplication to be able to use event loop! - if(!QCoreApplication::instance()) - { - int dummyArgc=1; - char *dummyArgv[]={(char *)"kio_fonts_thread"}; - theApp=new QCoreApplication(dummyArgc, dummyArgv); - } - QCoreApplication::exec(); + itsEventLoop.exec(); KFI_DBUG << "Loop finished"; return itsStatus; } @@ -137,7 +123,7 @@ { KFI_DBUG << "Service died :-("; itsStatus=FontInst::STATUS_SERVICE_DIED; - QCoreApplication::exit(0); + itsEventLoop.quit(); } } @@ -147,7 +133,7 @@ { KFI_DBUG << "Status:" << value; itsStatus=value; - QCoreApplication::exit(0); + itsEventLoop.quit(); } } @@ -158,7 +144,7 @@ KFI_DBUG; itsFamilies=1==families.count() ? *families.begin() : Families(); itsStatus=1==families.count() ? (int)FontInst::STATUS_OK : (int)KIO::ERR_DOES_NOT_EXIST; - QCoreApplication::exit(0); + itsEventLoop.quit(); } } @@ -169,7 +155,7 @@ KFI_DBUG; itsFamilies=Families(font, false); itsStatus=font.styles().count()>0 ? (int)FontInst::STATUS_OK : (int)KIO::ERR_DOES_NOT_EXIST; - QCoreApplication::exit(0); + itsEventLoop.quit(); } } --- trunk/KDE/kdebase/workspace/kcontrol/kfontinst/kio/FontInstInterface.h #1031396:1031397 @@ -25,10 +25,10 @@ */ #include +#include #include "Family.h" class QTimer; -class QCoreApplication; class OrgKdeFontinstInterface; namespace KFI @@ -66,7 +66,7 @@ bool itsActive; int itsStatus; Families itsFamilies; - static QCoreApplication *theApp; + QEventLoop itsEventLoop; }; } --- trunk/KDE/kdebase/workspace/kcontrol/kfontinst/kio/KioFonts.cpp #1031396:1031397 @@ -22,6 +22,7 @@ */ #include +#include #include #include #include @@ -66,8 +67,9 @@ KLocale::setMainCatalog(KFI_CATALOGUE); - KComponentData componentData("kio_"KFI_KIO_FONTS_PROTOCOL); - KFI::CKioFonts slave(argv[2], argv[3]); + KComponentData componentData("kio_"KFI_KIO_FONTS_PROTOCOL); + KFI::CKioFonts slave(argv[2], argv[3]); + QCoreApplication app(argc, argv); slave.dispatchLoop();