diff options
-rw-r--r-- | amarok/src/loader/loader.cpp | 40 | ||||
-rw-r--r-- | amarok/src/main.cpp | 2 |
2 files changed, 32 insertions, 10 deletions
diff --git a/amarok/src/loader/loader.cpp b/amarok/src/loader/loader.cpp index e615ed9d..0410b2af 100644 --- a/amarok/src/loader/loader.cpp +++ b/amarok/src/loader/loader.cpp @@ -38,8 +38,9 @@ main( int argc, char *argv[] ) { //NOTE this list doesn't include argv[0] ("amarok") TQStringList args; - for( int i = 1; i < argc; i++ ) + for( int i = 1; i < argc; i++ ) { args += TQString::fromLocal8Bit(argv[i]); + } const bool isRunning = amarokIsRunning(); @@ -56,8 +57,9 @@ main( int argc, char *argv[] ) // both --arg and -arg are valid { TQStringList longlongs; - foreach( longs ) + foreach( longs ) { longlongs += TQChar('-') + *it; + } longs += longlongs; } @@ -101,9 +103,21 @@ main( int argc, char *argv[] ) dcop_args += "]"; TQProcess proc( dcop_args ); - proc.start(); - while( proc.isRunning() ) + if ( !proc.start() ) { + printf("[ERROR] Unable to launch DCOP for communication with running Amarok instance!\n\r"); + } + while( proc.isRunning() ) { ::usleep( 100 ); + } + if ( !proc.normalExit() || proc.exitStatus() ) { + printf("[ERROR] DCOP communication failure with running Amarok instance!\n\r"); + while ( proc.canReadLineStdout() ) { + printf("%s\n\r", proc.readLineStdout().ascii()); + } + while ( proc.canReadLineStderr() ) { + printf("%s\n\r", proc.readLineStderr().ascii()); + } + } return 0; } @@ -123,9 +137,11 @@ amarokIsRunning() while( proc.isRunning() ) ::usleep( 100 ); - while( proc.canReadLineStdout() ) - if ( proc.readLineStdout() == "amarok" ) + while( proc.canReadLineStdout() ) { + if ( proc.readLineStdout() == "amarok" ) { return true; + } + } return false; } @@ -189,13 +205,16 @@ Loader::timerEvent( TQTimerEvent* ) { if( m_proc->isRunning() ) { - if( ++m_counter == (30000 / INTERVAL) ) + if( ++m_counter == (30000 / INTERVAL) ) { // 30 seconds have passed std::cerr << "Amarok: [Loader] Amarok is taking a long time to load! Perhaps something has gone wrong?\n"; + } - while( m_proc->canReadLineStdout() ) - if( m_proc->readLineStdout() == "STARTUP" ) + while( m_proc->canReadLineStdout() ) { + if( m_proc->readLineStdout() == "STARTUP" ) { TQApplication::exit( 0 ); + } + } } else if( !m_proc->normalExit() ) { // no reason to show messagebox, as amarokapp should start drkonqi @@ -203,11 +222,12 @@ Loader::timerEvent( TQTimerEvent* ) TQApplication::exit( 3 ); } - else + else { // if we get here, then either we didn't receive STARTUP through // the pipe, or amarokapp exited normally before the STARTUP was // written to stdout (possibly possible) TQApplication::exit( 0 ); + } } bool diff --git a/amarok/src/main.cpp b/amarok/src/main.cpp index 27482a93..66748e29 100644 --- a/amarok/src/main.cpp +++ b/amarok/src/main.cpp @@ -58,6 +58,8 @@ int main( int argc, char *argv[] ) I18N_NOOP( "Developer (sebr)" ), "ruiz@kde.org", "http://www.sebruiz.net" ); aboutData.addAuthor( "Stanislav '" I18N_NOOP("All you need is DCOP") "' Karchebny", I18N_NOOP( "DCOP, improvements, cleanups, i18n (berkus)" ), "berkus@madfire.net" ); + aboutData.addAuthor( "Timothy '"I18N_NOOP("HCI nut") "' Pearson", + I18N_NOOP( "Developer (kb9vqf)" ), "kb9vqf@pearsoncomputing.net" ); aboutData.addCredit( "Adam Pigg", I18N_NOOP( "Analyzers, patches, shoutcast" ), "adam@piggz.co.uk" ); |