summaryrefslogtreecommitdiff
authorsandman <sandman>2002-12-01 22:23:22 (UTC)
committer sandman <sandman>2002-12-01 22:23:22 (UTC)
commit184ab086906979cdb9c2cc8b601bcd0ecc095576 (patch) (side-by-side diff)
tree5e5ac0e6051529253bf28d5a58ae74680a47b776
parent5a550802680d32ccb0ea0d596f514de7e13c45dc (diff)
downloadopie-184ab086906979cdb9c2cc8b601bcd0ecc095576.zip
opie-184ab086906979cdb9c2cc8b601bcd0ecc095576.tar.gz
opie-184ab086906979cdb9c2cc8b601bcd0ecc095576.tar.bz2
The new preload library has to be used always, because of some binary
incompatibility between apps built with older tcs and shared libs built with newer tcs. (see cvs comment for core/launcher/libpreload/preload.cpp)
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--library/global.cpp4
1 files changed, 1 insertions, 3 deletions
diff --git a/library/global.cpp b/library/global.cpp
index 42c2729..2162e02 100644
--- a/library/global.cpp
+++ b/library/global.cpp
@@ -561,100 +561,98 @@ void Global::invoke(const QString &c)
// If the channel is already register, the app is already running, so show it.
{ QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); }
QCopEnvelope e("QPE/System", "notBusy(QString)" );
e << ap;
return;
}
// XXX should unlock file /tmp/qcop-msg-ap
//see if it is being started
if ( StartingAppList::isStarting( ap ) ) {
QCopEnvelope e("QPE/System", "notBusy(QString)" );
e << ap;
return;
}
#endif
#ifdef QT_NO_QWS_MULTIPROCESS
QMessageBox::warning( 0, "Error", "Could not find the application " + c, "Ok", 0, 0, 0, 1 );
#else
QStrList slist;
unsigned int j;
for ( j = 0; j < list.count(); j++ )
slist.append( list[j].utf8() );
const char **args = new (const char *)[slist.count() + 1];
for ( j = 0; j < slist.count(); j++ )
args[j] = slist.at(j);
args[j] = NULL;
#if !defined(QT_NO_COP)
// an attempt to show a wait...
// more logic should be used, but this will be fine for the moment...
QCopEnvelope ( "QPE/System", "busy()" );
#endif
#ifdef HAVE_QUICKEXEC
QString libexe = qpeDir()+"/binlib/lib"+args[0] + ".so";
qDebug("libfile = %s", libexe.latin1() );
if ( QFile::exists( libexe ) ) {
qDebug("calling quickexec %s", libexe.latin1() );
quickexecv( libexe.utf8().data(), (const char **)args );
} else
#endif
{
char *oldpre = ::getenv ( "LD_PRELOAD" );
- extern bool opie_block_style;
-
QString newpre = QPEApplication::qpeDir ( ) + "/lib/libpreload.so";
- if ( opie_block_style && QFile::exists ( newpre )) {
+ if ( QFile::exists ( newpre )) {
if ( oldpre && oldpre [0] )
newpre = newpre + ":" + oldpre;
::setenv ( "LD_PRELOAD", newpre. latin1( ), 1 );
qDebug ( "\nPRELOADING\n" );
}
if ( !::vfork() ) {
for ( int fd = 3; fd < 100; fd++ )
::close( fd );
::setpgid( ::getpid(), ::getppid() );
// Try bindir first, so that foo/bar works too
::execv( qpeDir()+"/bin/"+args[0], (char * const *)args );
::execvp( args[0], (char * const *)args );
_exit( -1 );
}
if ( oldpre )
::setenv ( "LD_PRELOAD", oldpre, 1 );
else
::unsetenv ( "LD_PRELOAD" );
}
StartingAppList::add( list[0] );
#endif //QT_NO_QWS_MULTIPROCESS
}
/*!
Executes the application identfied by \a c, passing \a
document if it isn't null.
Note that a better approach might be to send a QCop message to the
application's QPE/Application/\e{appname} channel.
*/
void Global::execute( const QString &c, const QString& document )
{
if ( qApp->type() != QApplication::GuiServer ) {
// ask the server to do the work
#if !defined(QT_NO_COP)
if ( document.isNull() ) {
QCopEnvelope e( "QPE/System", "execute(QString)" );
e << c;
} else {
QCopEnvelope e( "QPE/System", "execute(QString,QString)" );
e << c << document;
}
#endif
return;
}