author | mickeyl <mickeyl> | 2005-01-23 20:30:10 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2005-01-23 20:30:10 (UTC) |
commit | ab0242ff1bbc40ec8bc38c3cb748a44797ffe3db (patch) (side-by-side diff) | |
tree | f9d2e15eb124bf3d39a90c25811c9609d9fd1db0 | |
parent | 8f2fbef1de1b3803a21d51752fee1014c951cc12 (diff) | |
download | opie-ab0242ff1bbc40ec8bc38c3cb748a44797ffe3db.zip opie-ab0242ff1bbc40ec8bc38c3cb748a44797ffe3db.tar.gz opie-ab0242ff1bbc40ec8bc38c3cb748a44797ffe3db.tar.bz2 |
New QWS_DISPLAY handling for gathering the default launcher rotation on startup:
1.) If QWS_DISPLAY is not set, then use ODevice::rotation()
2.) If QWS_DISPLAY is set, then just use whatever it is set to
-rw-r--r-- | core/launcher/main.cpp | 106 |
1 files changed, 47 insertions, 59 deletions
diff --git a/core/launcher/main.cpp b/core/launcher/main.cpp index aa0dfdf..734d072 100644 --- a/core/launcher/main.cpp +++ b/core/launcher/main.cpp @@ -1,6 +1,5 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. -** -** This file is part of the Qtopia Environment. +** Copyright (C) 2003-2005 The Opie Team <opie-devel@handhelds.org> ** ** This file may be distributed and/or modified under the terms of the @@ -11,10 +10,4 @@ ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** **********************************************************************/ @@ -54,9 +47,10 @@ using namespace Opie::Core; #include <stdio.h> #include <signal.h> -#ifndef Q_OS_WIN32 #include <unistd.h> -#else -#include <process.h> -#endif +#include <errno.h> +#include <string.h> + +void create_pidfile(); +void remove_pidfile(); static void cleanup() @@ -71,49 +65,40 @@ static void cleanup() } -static void refreshTimeZoneConfig() -{ - /* ### FIXME timezone handling for qtopia */ -} - void initEnvironment() { -#ifdef Q_OS_WIN32 - // Config file requires HOME dir which uses QDir which needs the winver - qt_init_winver(); -#endif Config config("locale"); config.setGroup( "Location" ); QString tz = config.readEntry( "Timezone", getenv("TZ") ).stripWhiteSpace(); - // if not timezone set, pick New York - if (tz.isNull() || tz.isEmpty()) - tz = "America/New_York"; - + // timezone + if (tz.isNull() || tz.isEmpty()) tz = "America/New_York"; setenv( "TZ", tz, 1 ); config.writeEntry( "Timezone", tz); + // language config.setGroup( "Language" ); QString lang = config.readEntry( "Language", getenv("LANG") ).stripWhiteSpace(); - if( lang.isNull() || lang.isEmpty()) - lang = "en_US"; - + if( lang.isNull() || lang.isEmpty()) lang = "en_US"; setenv( "LANG", lang, 1 ); config.writeEntry("Language", lang); config.write(); + // rotation + int t = ODevice::inst()->rotation(); + odebug << "ODevice reports transformation to be " << t << oendl; QString env(getenv("QWS_DISPLAY")); - if (env.contains("Transformed")) { - int rot; - // transformed driver default rotation is controlled by the hardware. - Config config("qpe"); - config.setGroup( "Rotation" ); - if ( ( rot = config.readNumEntry( "Rot", -1 ) ) == -1 ) - rot = ODevice::inst ( )-> rotation ( ) * 90; + if ( env.isEmpty() ) + { + int rot = ODevice::inst()->rotation() * 90; + QString qws_display = QString("Transformed:Rot%1:0").arg(rot); + odebug << "setting QWS_DISPLAY to '" << qws_display << "'" << oendl; + setenv("QWS_DISPLAY", (const char*) qws_display, 1); + } + else + odebug << "QWS_DISPLAY already set as '" << env << "' - overriding ODevice transformation" << oendl; - setenv("QWS_DISPLAY", QString("Transformed:Rot%1:0").arg(rot), 1); QPEApplication::defaultRotation ( ); /* to ensure deforient matches reality */ } -} static void initKeyboard() @@ -160,26 +145,21 @@ int initApplication( int argc, char ** argv ) { cleanup(); - - initEnvironment(); - //Don't flicker at startup: #ifdef QWS QWSServer::setDesktopBackground( QImage() ); #endif ServerApplication a( argc, argv, QApplication::GuiServer ); - - refreshTimeZoneConfig(); - initKeyboard(); - // Don't use first use under Windows - if ( firstUse() ) { + if ( firstUse() ) + { a.restart(); return 0; } +#ifndef Q_OS_MACX ODevice::inst ( )-> setSoftSuspend ( true ); - +#endif { QCopEnvelope e("QPE/System", "setBacklight(int)" ); @@ -188,27 +168,30 @@ int initApplication( int argc, char ** argv ) AlarmServer::initialize(); - - - Server *s = new Server(); - - (void)new SysFileMonitor(s); + new SysFileMonitor(s); #ifdef QWS Network::createServer(s); #endif - s->show(); - /* THE ARM rtc has problem holdings the time on reset */ - if ( QDate::currentDate ( ). year ( ) < 2000 ) { - if ( QMessageBox::information ( 0, ServerApplication::tr( "Information" ), ServerApplication::tr( "<p>The system date doesn't seem to be valid.\n(%1)</p><p>Do you want to correct the clock ?</p>" ). arg( TimeString::dateString ( QDate::currentDate ( ))), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) { +#if 0 + if ( QDate::currentDate().year() < 2005 ) + { + if ( QMessageBox::information ( 0, ServerApplication::tr( "Information" ), + ServerApplication::tr( "<p>The system date doesn't seem to be valid.\n(%1)</p><p>Do you want to correct the clock ?</p>" ) + .arg( TimeString::dateString( QDate::currentDate())), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) + { QCopEnvelope e ( "QPE/Application/systemtime", "setDocument(QString)" ); e << QString ( ); } } +#endif + create_pidfile(); + odebug << "--> mainloop in" << oendl; int rv = a.exec(); - - odebug << "exiting..." << oendl; + odebug << "<-- mainloop out" << oendl; + remove_pidfile(); + odebug << "removing server object..." << oendl; delete s; @@ -217,4 +200,5 @@ int initApplication( int argc, char ** argv ) #endif + odebug << "returning from qpe/initapplication..." << oendl; return rv; } @@ -230,4 +214,8 @@ void create_pidfile ( ) ::fclose ( f ); } + else + { + odebug << "couldn't create pidfile: " << strerror( errno ) << oendl; + } } @@ -237,6 +225,7 @@ void remove_pidfile ( ) } -void handle_sigterm ( int /* sig */ ) +void handle_sigterm( int sig ) { + qDebug( "D'oh! QPE Server process got SIGNAL %d. Trying to exit gracefully...", sig ); ::signal( SIGCHLD, SIG_IGN ); ::signal( SIGSEGV, SIG_IGN ); @@ -260,5 +249,4 @@ int main( int argc, char ** argv ) ::atexit( remove_pidfile ); - create_pidfile(); int retVal = initApplication( argc, argv ); |