author | zecke <zecke> | 2003-08-28 14:32:22 (UTC) |
---|---|---|
committer | zecke <zecke> | 2003-08-28 14:32:22 (UTC) |
commit | f3c6caca7e96488ad9e1873e9c853f11b17a944e (patch) (unidiff) | |
tree | 4a83c306c573d5185f20c0f96f89aeffa24e2e1d /core/launcher | |
parent | a069f32d9339fad02af60ac8aa991c3dee011039 (diff) | |
download | opie-f3c6caca7e96488ad9e1873e9c853f11b17a944e.zip opie-f3c6caca7e96488ad9e1873e9c853f11b17a944e.tar.gz opie-f3c6caca7e96488ad9e1873e9c853f11b17a944e.tar.bz2 |
Make conpile with Opie
If QuickApps exec fails don't try to start it anytime soon
If application fails to start and /tmp/qcop-msg- is present don't try to restart
-rw-r--r-- | core/launcher/applauncher.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/core/launcher/applauncher.cpp b/core/launcher/applauncher.cpp index 50c1b71..d6f93da 100644 --- a/core/launcher/applauncher.cpp +++ b/core/launcher/applauncher.cpp | |||
@@ -24,13 +24,13 @@ | |||
24 | #ifndef QTOPIA_INTERNAL_FILEOPERATIONS | 24 | #ifndef QTOPIA_INTERNAL_FILEOPERATIONS |
25 | #define QTOPIA_INTERNAL_FILEOPERATIONS | 25 | #define QTOPIA_INTERNAL_FILEOPERATIONS |
26 | #endif | 26 | #endif |
27 | #ifndef QTOPIA_PROGRAM_MONITOR | 27 | #ifndef QTOPIA_PROGRAM_MONITOR |
28 | #define QTOPIA_PROGRAM_MONITOR | 28 | #define QTOPIA_PROGRAM_MONITOR |
29 | #endif | 29 | #endif |
30 | #include <qtopia/qpeglobal.h> | 30 | #include <qtopia/global.h> |
31 | 31 | ||
32 | #ifndef Q_OS_WIN32 | 32 | #ifndef Q_OS_WIN32 |
33 | #include <sys/stat.h> | 33 | #include <sys/stat.h> |
34 | #include <sys/wait.h> | 34 | #include <sys/wait.h> |
35 | #include <sys/file.h> | 35 | #include <sys/file.h> |
36 | #include <unistd.h> | 36 | #include <unistd.h> |
@@ -58,12 +58,13 @@ | |||
58 | #include <qtopia/qpeapplication.h> | 58 | #include <qtopia/qpeapplication.h> |
59 | #include <qtopia/config.h> | 59 | #include <qtopia/config.h> |
60 | #include <qtopia/global.h> | 60 | #include <qtopia/global.h> |
61 | 61 | ||
62 | #include "applauncher.h" | 62 | #include "applauncher.h" |
63 | #include "documentlist.h" | 63 | #include "documentlist.h" |
64 | #include "launcherglobal.h" | ||
64 | 65 | ||
65 | const int AppLauncher::RAISE_TIMEOUT_MS = 5000; | 66 | const int AppLauncher::RAISE_TIMEOUT_MS = 5000; |
66 | 67 | ||
67 | //--------------------------------------------------------------------------- | 68 | //--------------------------------------------------------------------------- |
68 | 69 | ||
69 | static AppLauncher* appLauncherPtr; | 70 | static AppLauncher* appLauncherPtr; |
@@ -400,16 +401,17 @@ void AppLauncher::sigStopped(int sigPid, int sigStatus) | |||
400 | QString str = tr("<qt><b>%1</b> was terminated due to signal code %2</qt>").arg( app->name() ).arg( sig ); | 401 | QString str = tr("<qt><b>%1</b> was terminated due to signal code %2</qt>").arg( app->name() ).arg( sig ); |
401 | QMessageBox::information(0, tr("Application terminated"), str ); | 402 | QMessageBox::information(0, tr("Application terminated"), str ); |
402 | } else { | 403 | } else { |
403 | if ( exitStatus == 255 ) { //could not find app (because global returns -1) | 404 | if ( exitStatus == 255 ) { //could not find app (because global returns -1) |
404 | QMessageBox::information(0, tr("Application not found"), tr("<qt>Could not locate application <b>%1</b></qt>").arg( app->exec() ) ); | 405 | QMessageBox::information(0, tr("Application not found"), tr("<qt>Could not locate application <b>%1</b></qt>").arg( app->exec() ) ); |
405 | } else { | 406 | } else { |
406 | QFileInfo fi(Global::tempDir() + "qcop-msg-" + appName); | 407 | QFileInfo fi(Opie::Global::tempDir() + "qcop-msg-" + appName); |
407 | if ( fi.exists() && fi.size() ) { | 408 | if ( fi.exists() && fi.size() ) { |
408 | emit terminated(sigPid, appName); | 409 | emit terminated(sigPid, appName); |
409 | execute( appName, QString::null ); | 410 | qWarning("Re executing obmitted for %s", appName.latin1() ); |
411 | // execute( appName, QString::null ); | ||
410 | return; | 412 | return; |
411 | } | 413 | } |
412 | } | 414 | } |
413 | } | 415 | } |
414 | 416 | ||
415 | #endif | 417 | #endif |
@@ -441,14 +443,14 @@ bool AppLauncher::isRunning(const QString &app) | |||
441 | 443 | ||
442 | return FALSE; | 444 | return FALSE; |
443 | } | 445 | } |
444 | 446 | ||
445 | bool AppLauncher::executeBuiltin(const QString &c, const QString &document) | 447 | bool AppLauncher::executeBuiltin(const QString &c, const QString &document) |
446 | { | 448 | { |
447 | Global::Command* builtin = Global::builtinCommands(); | 449 | Global::Command* builtin = Opie::Global::builtinCommands(); |
448 | QGuardedPtr<QWidget> *running = Global::builtinRunning(); | 450 | QGuardedPtr<QWidget> *running = Opie::Global::builtinRunning(); |
449 | 451 | ||
450 | // Attempt to execute the app using a builtin class for the app | 452 | // Attempt to execute the app using a builtin class for the app |
451 | if (builtin) { | 453 | if (builtin) { |
452 | for (int i = 0; builtin[i].file; i++) { | 454 | for (int i = 0; builtin[i].file; i++) { |
453 | if ( builtin[i].file == c ) { | 455 | if ( builtin[i].file == c ) { |
454 | if ( running[i] ) { | 456 | if ( running[i] ) { |
@@ -480,24 +482,25 @@ bool AppLauncher::executeBuiltin(const QString &c, const QString &document) | |||
480 | 482 | ||
481 | return FALSE; | 483 | return FALSE; |
482 | } | 484 | } |
483 | 485 | ||
484 | bool AppLauncher::execute(const QString &c, const QString &docParam, bool noRaise) | 486 | bool AppLauncher::execute(const QString &c, const QString &docParam, bool noRaise) |
485 | { | 487 | { |
488 | qWarning("AppLauncher::execute"); | ||
486 | // Convert the command line in to a list of arguments | 489 | // Convert the command line in to a list of arguments |
487 | QStringList list = QStringList::split(QRegExp(" *"),c); | 490 | QStringList list = QStringList::split(QRegExp(" *"),c); |
488 | if ( !docParam.isEmpty() ) | 491 | if ( !docParam.isEmpty() ) |
489 | list.append( docParam ); | 492 | list.append( docParam ); |
490 | 493 | ||
491 | QString appName = list[0]; | 494 | QString appName = list[0]; |
492 | if ( isRunning(appName) ) { | 495 | if ( isRunning(appName) ) { |
493 | QCString channel = "QPE/Application/"; | 496 | QCString channel = "QPE/Application/"; |
494 | channel += appName.latin1(); | 497 | channel += appName.latin1(); |
495 | 498 | ||
496 | // Need to lock it to avoid race conditions with QPEApplication::processQCopFile | 499 | // Need to lock it to avoid race conditions with QPEApplication::processQCopFile |
497 | QFile f(Global::tempDir() + "qcop-msg-" + appName); | 500 | QFile f(Opie::Global::tempDir() + "qcop-msg-" + appName); |
498 | if ( !noRaise && f.open(IO_WriteOnly | IO_Append) ) { | 501 | if ( !noRaise && f.open(IO_WriteOnly | IO_Append) ) { |
499 | #ifndef Q_OS_WIN32 | 502 | #ifndef Q_OS_WIN32 |
500 | flock(f.handle(), LOCK_EX); | 503 | flock(f.handle(), LOCK_EX); |
501 | #endif | 504 | #endif |
502 | 505 | ||
503 | QDataStream ds(&f); | 506 | QDataStream ds(&f); |
@@ -525,13 +528,13 @@ bool AppLauncher::execute(const QString &c, const QString &docParam, bool noRais | |||
525 | QCopChannel::send(channel,"QPEProcessQCop()"); | 528 | QCopChannel::send(channel,"QPEProcessQCop()"); |
526 | 529 | ||
527 | return TRUE; | 530 | return TRUE; |
528 | } | 531 | } |
529 | 532 | ||
530 | #ifdef QT_NO_QWS_MULTIPROCESS | 533 | #ifdef QT_NO_QWS_MULTIPROCESS |
531 | QMessageBox::warning( 0, tr("Error"), tr("Could not find the application %1").arg(c), | 534 | QMessageBox::warning( 0, tr("Error"), tr("<qt>Could not find the application %1</qt>").arg(c), |
532 | tr("OK"), 0, 0, 0, 1 ); | 535 | tr("OK"), 0, 0, 0, 1 ); |
533 | #else | 536 | #else |
534 | 537 | ||
535 | QStrList slist; | 538 | QStrList slist; |
536 | unsigned j; | 539 | unsigned j; |
537 | for ( j = 0; j < list.count(); j++ ) | 540 | for ( j = 0; j < list.count(); j++ ) |
@@ -632,12 +635,16 @@ int AppLauncher::pidForName( const QString &appName ) | |||
632 | 635 | ||
633 | return pid; | 636 | return pid; |
634 | } | 637 | } |
635 | 638 | ||
636 | void AppLauncher::createQuickLauncher() | 639 | void AppLauncher::createQuickLauncher() |
637 | { | 640 | { |
641 | static bool disabled = FALSE; | ||
642 | if (disabled) | ||
643 | return; | ||
644 | |||
638 | qlReady = FALSE; | 645 | qlReady = FALSE; |
639 | qlPid = ::vfork(); | 646 | qlPid = ::vfork(); |
640 | if ( !qlPid ) { | 647 | if ( !qlPid ) { |
641 | char **args = new char *[2]; | 648 | char **args = new char *[2]; |
642 | args[0] = "quicklauncher"; | 649 | args[0] = "quicklauncher"; |
643 | args[1] = 0; | 650 | args[1] = 0; |
@@ -645,12 +652,14 @@ void AppLauncher::createQuickLauncher() | |||
645 | ::close( fd ); | 652 | ::close( fd ); |
646 | ::setpgid( ::getpid(), ::getppid() ); | 653 | ::setpgid( ::getpid(), ::getppid() ); |
647 | // Try bindir first, so that foo/bar works too | 654 | // Try bindir first, so that foo/bar works too |
648 | setenv( "LD_BIND_NOW", "1", 1 ); | 655 | setenv( "LD_BIND_NOW", "1", 1 ); |
649 | ::execv( QPEApplication::qpeDir()+"bin/quicklauncher", args ); | 656 | ::execv( QPEApplication::qpeDir()+"bin/quicklauncher", args ); |
650 | ::execvp( "quicklauncher", args ); | 657 | ::execvp( "quicklauncher", args ); |
658 | delete []args; | ||
659 | disabled = TRUE; | ||
651 | _exit( -1 ); | 660 | _exit( -1 ); |
652 | } else if ( qlPid == -1 ) { | 661 | } else if ( qlPid == -1 ) { |
653 | qlPid = 0; | 662 | qlPid = 0; |
654 | } else { | 663 | } else { |
655 | if ( getuid() == 0 ) | 664 | if ( getuid() == 0 ) |
656 | setpriority( PRIO_PROCESS, qlPid, 19 ); | 665 | setpriority( PRIO_PROCESS, qlPid, 19 ); |