summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2005-08-04 07:22:40 (UTC)
committer llornkcor <llornkcor>2005-08-04 07:22:40 (UTC)
commit77825e5455872ef0c6def793b38bc767a3838bc0 (patch) (unidiff)
treeadff22adfee3d6a17dd9e0a76ccc51f2a2a20a1f
parent32743ebb00d374ad18afbed69ab3e94b03699a57 (diff)
downloadopie-77825e5455872ef0c6def793b38bc767a3838bc0.zip
opie-77825e5455872ef0c6def793b38bc767a3838bc0.tar.gz
opie-77825e5455872ef0c6def793b38bc767a3838bc0.tar.bz2
apply patch in # 0001662, fixes build with uclibc
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/opie-login/main.cpp5
-rw-r--r--noncore/applets/keyhelper/keyhelperapplet/anylnk/ProcessInvoker.cpp4
-rw-r--r--noncore/settings/sysinfo/benchmarkinfo.cpp2
3 files changed, 9 insertions, 2 deletions
diff --git a/core/opie-login/main.cpp b/core/opie-login/main.cpp
index 554efd3..3f1077c 100644
--- a/core/opie-login/main.cpp
+++ b/core/opie-login/main.cpp
@@ -58,194 +58,197 @@
58 58
59using namespace Opie::Core; 59using namespace Opie::Core;
60 60
61int login_main ( int argc, char **argv, pid_t ppid ); 61int login_main ( int argc, char **argv, pid_t ppid );
62void sigterm ( int sig ); 62void sigterm ( int sig );
63void sigint ( int sig ); 63void sigint ( int sig );
64void exit_closelog ( ); 64void exit_closelog ( );
65 65
66int main ( int argc, char **argv ) 66int main ( int argc, char **argv )
67{ 67{
68 int userExited = 0; 68 int userExited = 0;
69 pid_t ppid = ::getpid ( ); 69 pid_t ppid = ::getpid ( );
70 70
71 if ( ::geteuid ( ) != 0 ) { 71 if ( ::geteuid ( ) != 0 ) {
72 ::fprintf ( stderr, "%s can only be executed by root. (or chmod +s)\n", argv [0] ); 72 ::fprintf ( stderr, "%s can only be executed by root. (or chmod +s)\n", argv [0] );
73 return 1; 73 return 1;
74 } 74 }
75 if ( ::getuid ( ) != 0 ) // qt doesn't really like SUID and 75 if ( ::getuid ( ) != 0 ) // qt doesn't really like SUID and
76 ::setuid ( 0 ); // messes up things like config files 76 ::setuid ( 0 ); // messes up things like config files
77 77
78 //struct rlimit rl; 78 //struct rlimit rl;
79 //::getrlimit ( RLIMIT_NOFILE, &rl ); 79 //::getrlimit ( RLIMIT_NOFILE, &rl );
80 80
81 //for ( unsigned int i = 0; i < rl. rlim_cur; i++ ) 81 //for ( unsigned int i = 0; i < rl. rlim_cur; i++ )
82 // ::close ( i ); 82 // ::close ( i );
83 83
84 ::setpgid ( 0, 0 ); 84 ::setpgid ( 0, 0 );
85 ::setsid ( ); 85 ::setsid ( );
86 86
87 ::signal ( SIGTERM, sigterm ); 87 ::signal ( SIGTERM, sigterm );
88 ::signal ( SIGINT, sigterm ); 88 ::signal ( SIGINT, sigterm );
89 89
90 ::openlog ( "opie-login", LOG_CONS, LOG_AUTHPRIV ); 90 ::openlog ( "opie-login", LOG_CONS, LOG_AUTHPRIV );
91 ::atexit ( exit_closelog ); 91 ::atexit ( exit_closelog );
92 92
93 const char* autolog = 0; 93 const char* autolog = 0;
94 Config c( "opie-login" ); 94 Config c( "opie-login" );
95 c.setGroup( "autologin" ); 95 c.setGroup( "autologin" );
96 QString entry = c.readEntry( "user", "" ); 96 QString entry = c.readEntry( "user", "" );
97 if ( !entry.isEmpty() ) autolog = ::strdup( (const char*) entry ); 97 if ( !entry.isEmpty() ) autolog = ::strdup( (const char*) entry );
98 98
99 while ( true ) { 99 while ( true ) {
100 pid_t child = ::fork ( ); 100 pid_t child = ::fork ( );
101 101
102 if ( child < 0 ) { 102 if ( child < 0 ) {
103 ::syslog ( LOG_ERR, "Could not fork GUI process\n" ); 103 ::syslog ( LOG_ERR, "Could not fork GUI process\n" );
104 break; 104 break;
105 } 105 }
106 else if ( child > 0 ) { 106 else if ( child > 0 ) {
107 int status = 0; 107 int status = 0;
108 time_t started = ::time ( 0 ); 108 time_t started = ::time ( 0 );
109 109
110 while ( ::waitpid ( child, &status, 0 ) < 0 ) { } 110 while ( ::waitpid ( child, &status, 0 ) < 0 ) { }
111 111
112 LoginApplication::logout ( ); 112 LoginApplication::logout ( );
113 113
114 if (( ::time ( 0 ) - started ) < 3 ) { 114 if (( ::time ( 0 ) - started ) < 3 ) {
115 if ( autolog ) { 115 if ( autolog ) {
116 ::syslog ( LOG_ERR, "Respawning too fast -- disabling auto-login\n" ); 116 ::syslog ( LOG_ERR, "Respawning too fast -- disabling auto-login\n" );
117 autolog = 0; 117 autolog = 0;
118 } 118 }
119 else { 119 else {
120 ::syslog ( LOG_ERR, "Respawning too fast -- going down\n" ); 120 ::syslog ( LOG_ERR, "Respawning too fast -- going down\n" );
121 break; 121 break;
122 } 122 }
123 } 123 }
124 int killedbysig = 0; 124 int killedbysig = 0;
125 userExited=0; 125 userExited=0;
126 if (WIFEXITED(status)!=0 ) { 126 if (WIFEXITED(status)!=0 ) {
127 if (WEXITSTATUS(status)==137) { 127 if (WEXITSTATUS(status)==137) {
128 userExited=1; 128 userExited=1;
129 } 129 }
130 } 130 }
131 131
132 if ( WIFSIGNALED( status )) { 132 if ( WIFSIGNALED( status )) {
133 switch ( WTERMSIG( status )) { 133 switch ( WTERMSIG( status )) {
134 case SIGTERM: 134 case SIGTERM:
135 case SIGINT : 135 case SIGINT :
136 case SIGKILL: 136 case SIGKILL:
137 break; 137 break;
138 138
139 default : 139 default :
140 killedbysig = WTERMSIG( status ); 140 killedbysig = WTERMSIG( status );
141 break; 141 break;
142 } 142 }
143 } 143 }
144 if ( killedbysig ) { // qpe was killed by an uncaught signal 144 if ( killedbysig ) { // qpe was killed by an uncaught signal
145 qApp = 0; 145 qApp = 0;
146 146
147 ::syslog ( LOG_ERR, "Opie was killed by a signal #%d", killedbysig ); 147 ::syslog ( LOG_ERR, "Opie was killed by a signal #%d", killedbysig );
148 148
149 QWSServer::setDesktopBackground ( QImage ( )); 149 QWSServer::setDesktopBackground ( QImage ( ));
150 QApplication *app = new QApplication ( argc, argv, QApplication::GuiServer ); 150 QApplication *app = new QApplication ( argc, argv, QApplication::GuiServer );
151 app-> setFont ( QFont ( "Helvetica", 10 )); 151 app-> setFont ( QFont ( "Helvetica", 10 ));
152 app-> setStyle ( new QPEStyle ( )); 152 app-> setStyle ( new QPEStyle ( ));
153 153
154 // const char *sig = ::strsignal ( killedbysig ); 154#ifndef __UCLIBC__
155 const char *sig = ::sys_siglist[killedbysig]; 155 const char *sig = ::sys_siglist[killedbysig];
156#else
157 const char *sig = ::strsignal ( killedbysig );
158#endif
156 QLabel *l = new QLabel ( 0, "sig", Qt::WStyle_Customize | Qt::WStyle_NoBorder | Qt::WStyle_Tool ); 159 QLabel *l = new QLabel ( 0, "sig", Qt::WStyle_Customize | Qt::WStyle_NoBorder | Qt::WStyle_Tool );
157 l-> setText ( LoginWindowImpl::tr( "Opie was terminated\nby an uncaught signal\n(%1)\n" ). arg ( sig )); 160 l-> setText ( LoginWindowImpl::tr( "Opie was terminated\nby an uncaught signal\n(%1)\n" ). arg ( sig ));
158 l-> setAlignment ( Qt::AlignCenter ); 161 l-> setAlignment ( Qt::AlignCenter );
159 l-> move ( 0, 0 ); 162 l-> move ( 0, 0 );
160 l-> resize ( app-> desktop ( )-> width ( ), app-> desktop ( )-> height ( )); 163 l-> resize ( app-> desktop ( )-> width ( ), app-> desktop ( )-> height ( ));
161 l-> show ( ); 164 l-> show ( );
162 QTimer::singleShot ( 3000, app, SLOT( quit())); 165 QTimer::singleShot ( 3000, app, SLOT( quit()));
163 app-> exec ( ); 166 app-> exec ( );
164 delete app; 167 delete app;
165 qApp = 0; 168 qApp = 0;
166 } 169 }
167 } 170 }
168 else { 171 else {
169 if ( !autolog ) { 172 if ( !autolog ) {
170 QString confFile=QPEApplication::qpeDir() + "etc/opie-login.conf"; 173 QString confFile=QPEApplication::qpeDir() + "etc/opie-login.conf";
171 Config cfg ( confFile, Config::File ); 174 Config cfg ( confFile, Config::File );
172 cfg. setGroup ( "General" ); 175 cfg. setGroup ( "General" );
173 QString user = cfg. readEntry ( "AutoLogin" ); 176 QString user = cfg. readEntry ( "AutoLogin" );
174 177
175 if ( !user. isEmpty ( )) 178 if ( !user. isEmpty ( ))
176 autolog = ::strdup ( user. latin1 ( )); 179 autolog = ::strdup ( user. latin1 ( ));
177 } 180 }
178 181
179 if ( autolog && !userExited ) { 182 if ( autolog && !userExited ) {
180 183
181 QWSServer::setDesktopBackground( QImage() ); 184 QWSServer::setDesktopBackground( QImage() );
182 ODevice::inst()->setDisplayStatus( true ); 185 ODevice::inst()->setDisplayStatus( true );
183 LoginApplication *app = new LoginApplication ( argc, argv, ppid ); 186 LoginApplication *app = new LoginApplication ( argc, argv, ppid );
184 LoginApplication::setLoginAs( autolog ); 187 LoginApplication::setLoginAs( autolog );
185 188
186 189
187 if ( LoginApplication::changeIdentity ( )) 190 if ( LoginApplication::changeIdentity ( ))
188 ::exit ( LoginApplication::login ( )); 191 ::exit ( LoginApplication::login ( ));
189 else 192 else
190 ::exit ( 0 ); 193 ::exit ( 0 );
191 } 194 }
192 else { 195 else {
193 ::exit ( login_main ( argc, argv, ppid )); 196 ::exit ( login_main ( argc, argv, ppid ));
194 } 197 }
195 } 198 }
196 } 199 }
197 return 0; 200 return 0;
198} 201}
199 202
200void sigterm ( int /*sig*/ ) 203void sigterm ( int /*sig*/ )
201{ 204{
202 ::exit ( 0 ); 205 ::exit ( 0 );
203} 206}
204 207
205 208
206void exit_closelog ( ) 209void exit_closelog ( )
207{ 210{
208 ::closelog ( ); 211 ::closelog ( );
209} 212}
210 213
211 214
212class LoginScreenSaver : public QWSScreenSaver 215class LoginScreenSaver : public QWSScreenSaver
213{ 216{
214public: 217public:
215 LoginScreenSaver ( ) 218 LoginScreenSaver ( )
216 { 219 {
217 m_lcd_status = true; 220 m_lcd_status = true;
218 221
219 m_backlight_bright = -1; 222 m_backlight_bright = -1;
220 m_backlight_forcedoff = false; 223 m_backlight_forcedoff = false;
221 224
222 // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off) 225 // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off)
223 ODevice::inst ( )-> setDisplayStatus ( true ); 226 ODevice::inst ( )-> setDisplayStatus ( true );
224 } 227 }
225 void restore() 228 void restore()
226 { 229 {
227 if ( !m_lcd_status ) // We must have turned it off 230 if ( !m_lcd_status ) // We must have turned it off
228 ODevice::inst ( ) -> setDisplayStatus ( true ); 231 ODevice::inst ( ) -> setDisplayStatus ( true );
229 232
230 setBacklight ( -3 ); 233 setBacklight ( -3 );
231 } 234 }
232 bool save( int level ) 235 bool save( int level )
233 { 236 {
234 switch ( level ) { 237 switch ( level ) {
235 case 0: 238 case 0:
236 if ( backlight() > 1 ) 239 if ( backlight() > 1 )
237 setBacklight( 1 ); // lowest non-off 240 setBacklight( 1 ); // lowest non-off
238 return true; 241 return true;
239 break; 242 break;
240 case 1: 243 case 1:
241 setBacklight( 0 ); // off 244 setBacklight( 0 ); // off
242 return true; 245 return true;
243 break; 246 break;
244 case 2: 247 case 2:
245 // We're going to suspend the whole machine 248 // We're going to suspend the whole machine
246 if ( PowerStatusManager::readStatus().acStatus() != PowerStatus::Online ) { 249 if ( PowerStatusManager::readStatus().acStatus() != PowerStatus::Online ) {
247 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); 250 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
248 return true; 251 return true;
249 } 252 }
250 break; 253 break;
251 } 254 }
diff --git a/noncore/applets/keyhelper/keyhelperapplet/anylnk/ProcessInvoker.cpp b/noncore/applets/keyhelper/keyhelperapplet/anylnk/ProcessInvoker.cpp
index 09605bd..ff06551 100644
--- a/noncore/applets/keyhelper/keyhelperapplet/anylnk/ProcessInvoker.cpp
+++ b/noncore/applets/keyhelper/keyhelperapplet/anylnk/ProcessInvoker.cpp
@@ -1,98 +1,102 @@
1#include "ProcessInvoker.h" 1#include "ProcessInvoker.h"
2 2
3#ifndef PIPE_BUF // uClibc or similar
4#include <linux/limits.h>
5#endif
6
3static ProcessInvoker* g_this; 7static ProcessInvoker* g_this;
4/* ------------------------------------------------------------------------ */ 8/* ------------------------------------------------------------------------ */
5 /* static functions */ 9 /* static functions */
6/* ------------------------------------------------------------------------ */ 10/* ------------------------------------------------------------------------ */
7 11
8static Sigfunc* setSignalHandler(int signo, Sigfunc* handler) 12static Sigfunc* setSignalHandler(int signo, Sigfunc* handler)
9{ 13{
10 struct sigaction act,oact; 14 struct sigaction act,oact;
11 15
12 act.sa_handler = handler; 16 act.sa_handler = handler;
13 ::sigemptyset(&act.sa_mask); 17 ::sigemptyset(&act.sa_mask);
14 act.sa_flags = 0; 18 act.sa_flags = 0;
15 #ifdefSA_RESTART 19 #ifdefSA_RESTART
16 act.sa_flags |= SA_RESTART; 20 act.sa_flags |= SA_RESTART;
17#endif 21#endif
18 if(::sigaction(signo, &act, &oact) < 0){ 22 if(::sigaction(signo, &act, &oact) < 0){
19 return(NULL); 23 return(NULL);
20 } 24 }
21 return(oact.sa_handler); 25 return(oact.sa_handler);
22} 26}
23 27
24static void childHandler(int /*signo*/) 28static void childHandler(int /*signo*/)
25{ 29{
26 pid_t pid; 30 pid_t pid;
27 int status; 31 int status;
28 while((pid = ::waitpid(-1, &status, WNOHANG)) > 0){ 32 while((pid = ::waitpid(-1, &status, WNOHANG)) > 0){
29 if(pid == g_this->m_child){ 33 if(pid == g_this->m_child){
30 g_this->notifyFinish(status); 34 g_this->notifyFinish(status);
31 } 35 }
32 } 36 }
33} 37}
34 38
35/* ------------------------------------------------------------------------ */ 39/* ------------------------------------------------------------------------ */
36 /* ProcessInvoker Class : parent process */ 40 /* ProcessInvoker Class : parent process */
37/* ------------------------------------------------------------------------ */ 41/* ------------------------------------------------------------------------ */
38ProcessInvoker::ProcessInvoker() 42ProcessInvoker::ProcessInvoker()
39{ 43{
40 g_this = this; 44 g_this = this;
41 m_isRunning = false; 45 m_isRunning = false;
42 m_child = 0; 46 m_child = 0;
43 m_defChildHandler = SIG_DFL; 47 m_defChildHandler = SIG_DFL;
44 m_pTimer = new QTimer(this); 48 m_pTimer = new QTimer(this);
45 m_stdfd[0] = m_stdfd[1] = -1; 49 m_stdfd[0] = m_stdfd[1] = -1;
46 m_errfd[0] = m_errfd[1] = -1; 50 m_errfd[0] = m_errfd[1] = -1;
47 connect(m_pTimer, SIGNAL(timeout()), 51 connect(m_pTimer, SIGNAL(timeout()),
48 this, SLOT(readOutputs())); 52 this, SLOT(readOutputs()));
49} 53}
50 54
51ProcessInvoker::~ProcessInvoker() 55ProcessInvoker::~ProcessInvoker()
52{ 56{
53 qDebug("ProcessInvoker::~ProcessInvoker()"); 57 qDebug("ProcessInvoker::~ProcessInvoker()");
54} 58}
55 59
56bool ProcessInvoker::openPipe() 60bool ProcessInvoker::openPipe()
57{ 61{
58 if(m_stdfd[0] >= 0) closePipe(m_stdfd, 0); 62 if(m_stdfd[0] >= 0) closePipe(m_stdfd, 0);
59 if(m_stdfd[1] >= 0) closePipe(m_stdfd, 1); 63 if(m_stdfd[1] >= 0) closePipe(m_stdfd, 1);
60 if(::pipe(m_stdfd) < 0){ 64 if(::pipe(m_stdfd) < 0){
61 return(false); 65 return(false);
62 } 66 }
63 if(m_errfd[0] >= 0) closePipe(m_errfd, 0); 67 if(m_errfd[0] >= 0) closePipe(m_errfd, 0);
64 if(m_errfd[1] >= 0) closePipe(m_errfd, 1); 68 if(m_errfd[1] >= 0) closePipe(m_errfd, 1);
65 if(::pipe(m_errfd) < 0){ 69 if(::pipe(m_errfd) < 0){
66 closePipe(m_stdfd); 70 closePipe(m_stdfd);
67 return(false); 71 return(false);
68 } 72 }
69 m_maxfdp1 = m_stdfd[0]; 73 m_maxfdp1 = m_stdfd[0];
70 if(m_errfd[0] > m_maxfdp1){ 74 if(m_errfd[0] > m_maxfdp1){
71 m_maxfdp1 = m_errfd[0]; 75 m_maxfdp1 = m_errfd[0];
72 } 76 }
73 m_maxfdp1++; 77 m_maxfdp1++;
74 return(true); 78 return(true);
75} 79}
76 80
77void ProcessInvoker::closePipe(int fd[], int n) 81void ProcessInvoker::closePipe(int fd[], int n)
78{ 82{
79 if(fd == NULL){ 83 if(fd == NULL){
80 closePipe(m_stdfd, n); 84 closePipe(m_stdfd, n);
81 closePipe(m_errfd, n); 85 closePipe(m_errfd, n);
82 } else { 86 } else {
83 if(n != 1 && fd[0] >= 0){ 87 if(n != 1 && fd[0] >= 0){
84 ::close(fd[0]); 88 ::close(fd[0]);
85 fd[0] = -1; 89 fd[0] = -1;
86 } 90 }
87 if(n != 0 && fd[1] >= 0){ 91 if(n != 0 && fd[1] >= 0){
88 ::close(fd[1]); 92 ::close(fd[1]);
89 fd[1] = -1; 93 fd[1] = -1;
90 } 94 }
91 } 95 }
92} 96}
93 97
94void ProcessInvoker::setRunning(int pid) 98void ProcessInvoker::setRunning(int pid)
95{ 99{
96 m_child = pid; 100 m_child = pid;
97 m_isRunning = true; 101 m_isRunning = true;
98} 102}
diff --git a/noncore/settings/sysinfo/benchmarkinfo.cpp b/noncore/settings/sysinfo/benchmarkinfo.cpp
index ac6e1fa..8de9aa1 100644
--- a/noncore/settings/sysinfo/benchmarkinfo.cpp
+++ b/noncore/settings/sysinfo/benchmarkinfo.cpp
@@ -1,149 +1,149 @@
1/********************************************************************** 1/**********************************************************************
2** BenchmarkInfo 2** BenchmarkInfo
3** 3**
4** A benchmark widget for Qt/Embedded 4** A benchmark widget for Qt/Embedded
5** 5**
6** Copyright (C) 2004 Michael Lauer <mickey@vanille.de> 6** Copyright (C) 2004 Michael Lauer <mickey@vanille.de>
7** Inspired by ZBench (C) 2002 Satoshi <af230533@im07.alpha-net.ne.jp> 7** Inspired by ZBench (C) 2002 Satoshi <af230533@im07.alpha-net.ne.jp>
8** 8**
9** This file may be distributed and/or modified under the terms of the 9** This file may be distributed and/or modified under the terms of the
10** GNU General Public License version 2 as published by the Free Software 10** GNU General Public License version 2 as published by the Free Software
11** Foundation and appearing in the file LICENSE.GPL included in the 11** Foundation and appearing in the file LICENSE.GPL included in the
12** packaging of this file. 12** packaging of this file.
13** 13**
14** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 14** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
15** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 15** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16** 16**
17**********************************************************************/ 17**********************************************************************/
18 18
19#include "benchmarkinfo.h" 19#include "benchmarkinfo.h"
20 20
21/* OPIE */ 21/* OPIE */
22#include <opie2/odebug.h> 22#include <opie2/odebug.h>
23#include <opie2/ostorageinfo.h> 23#include <opie2/ostorageinfo.h>
24#include <opie2/olistview.h> 24#include <opie2/olistview.h>
25#include <opie2/oresource.h> 25#include <opie2/oresource.h>
26#include <qpe/qpeapplication.h> 26#include <qpe/qpeapplication.h>
27#include <qpe/qcopenvelope_qws.h> 27#include <qpe/qcopenvelope_qws.h>
28#include <qpe/qpedecoration_qws.h> 28#include <qpe/qpedecoration_qws.h>
29#include <qpe/config.h> 29#include <qpe/config.h>
30using namespace Opie::Core; 30using namespace Opie::Core;
31using namespace Opie::Ui; 31using namespace Opie::Ui;
32 32
33/* QT */ 33/* QT */
34#include <qclipboard.h> 34#include <qclipboard.h>
35#include <qcolor.h> 35#include <qcolor.h>
36#include <qcombobox.h> 36#include <qcombobox.h>
37#include <qdirectpainter_qws.h> 37#include <qdirectpainter_qws.h>
38#include <qfile.h> 38#include <qfile.h>
39#include <qtextstream.h> 39#include <qtextstream.h>
40#include <qfiledialog.h> 40#include <qfiledialog.h>
41#include <qlabel.h> 41#include <qlabel.h>
42#include <qlayout.h> 42#include <qlayout.h>
43#include <qpainter.h> 43#include <qpainter.h>
44#include <qpushbutton.h> 44#include <qpushbutton.h>
45#include <qtimer.h> 45#include <qtimer.h>
46#include <qwhatsthis.h> 46#include <qwhatsthis.h>
47 47
48/* STD */ 48/* STD */
49#include <time.h> 49#include <time.h>
50#include <stdio.h> 50#include <stdio.h>
51#include <stdlib.h> 51#include <stdlib.h>
52#include <math.h> 52#include <math.h>
53#if defined (__GNUC__) && (__GNUC__ < 3) 53#if (defined (__GNUC__) && (__GNUC__ < 3)) || defined(__UCLIBC__)
54#define round qRound 54#define round qRound
55#endif 55#endif
56 56
57extern "C" 57extern "C"
58{ 58{
59 void BenchFFT( void ); 59 void BenchFFT( void );
60 double dhry_main( int ); 60 double dhry_main( int );
61} 61}
62 62
63#define DHRYSTONE_RUNS 20000000 63#define DHRYSTONE_RUNS 20000000
64#define TEST_DURATION 3 64#define TEST_DURATION 3
65 65
66//=========================================================================== 66//===========================================================================
67 67
68class BenchmarkPaintWidget : public QWidget 68class BenchmarkPaintWidget : public QWidget
69{ 69{
70 public: 70 public:
71 BenchmarkPaintWidget() : QWidget( 0, "Benchmark Paint Widget", WStyle_Customize|WStyle_StaysOnTop|WPaintUnclipped|WPaintClever ) 71 BenchmarkPaintWidget() : QWidget( 0, "Benchmark Paint Widget", WStyle_Customize|WStyle_StaysOnTop|WPaintUnclipped|WPaintClever )
72 { 72 {
73 resize( QApplication::desktop()->size() ); 73 resize( QApplication::desktop()->size() );
74 show(); 74 show();
75 p.begin( this ); 75 p.begin( this );
76 }; 76 };
77 77
78 ~BenchmarkPaintWidget() 78 ~BenchmarkPaintWidget()
79 { 79 {
80 p.end(); 80 p.end();
81 hide(); 81 hide();
82 }; 82 };
83 83
84 QPainter p; 84 QPainter p;
85}; 85};
86 86
87//=========================================================================== 87//===========================================================================
88 88
89BenchmarkInfo::BenchmarkInfo( QWidget *parent, const char *name, int wFlags ) 89BenchmarkInfo::BenchmarkInfo( QWidget *parent, const char *name, int wFlags )
90 : QWidget( parent, name, wFlags ) 90 : QWidget( parent, name, wFlags )
91{ 91{
92 92
93 setMinimumSize( 200, 150 ); 93 setMinimumSize( 200, 150 );
94 94
95 QVBoxLayout* vb = new QVBoxLayout( this ); 95 QVBoxLayout* vb = new QVBoxLayout( this );
96 vb->setSpacing( 4 ); 96 vb->setSpacing( 4 );
97 vb->setMargin( 4 ); 97 vb->setMargin( 4 );
98 98
99 tests = new OListView( this ); 99 tests = new OListView( this );
100 QWhatsThis::add( tests->viewport(), tr( "This area shows the available tests, the results for which the tests " 100 QWhatsThis::add( tests->viewport(), tr( "This area shows the available tests, the results for which the tests "
101 "have been performed, and comparison values for one selected device. " 101 "have been performed, and comparison values for one selected device. "
102 "Use the checkboxes to define which tests you want to perform." ) ); 102 "Use the checkboxes to define which tests you want to perform." ) );
103 tests->setMargin( 0 ); 103 tests->setMargin( 0 );
104 tests->addColumn( tr( "Tests" ) ); 104 tests->addColumn( tr( "Tests" ) );
105 tests->addColumn( tr( "Results" ) ); 105 tests->addColumn( tr( "Results" ) );
106 tests->addColumn( tr( "Comparison" ) ); 106 tests->addColumn( tr( "Comparison" ) );
107 tests->setShowSortIndicator( true ); 107 tests->setShowSortIndicator( true );
108 108
109 test_alu = new OCheckListItem( tests, tr( "1. Integer Arithmetic " ), OCheckListItem::CheckBox ); 109 test_alu = new OCheckListItem( tests, tr( "1. Integer Arithmetic " ), OCheckListItem::CheckBox );
110 test_fpu = new OCheckListItem( tests, tr( "2. Floating Point Unit " ), OCheckListItem::CheckBox ); 110 test_fpu = new OCheckListItem( tests, tr( "2. Floating Point Unit " ), OCheckListItem::CheckBox );
111 test_txt = new OCheckListItem( tests, tr( "3. Text Rendering " ), OCheckListItem::CheckBox ); 111 test_txt = new OCheckListItem( tests, tr( "3. Text Rendering " ), OCheckListItem::CheckBox );
112 test_gfx = new OCheckListItem( tests, tr( "4. Gfx Rendering " ), OCheckListItem::CheckBox ); 112 test_gfx = new OCheckListItem( tests, tr( "4. Gfx Rendering " ), OCheckListItem::CheckBox );
113 test_ram = new OCheckListItem( tests, tr( "5. RAM Performance " ), OCheckListItem::CheckBox ); 113 test_ram = new OCheckListItem( tests, tr( "5. RAM Performance " ), OCheckListItem::CheckBox );
114#ifndef QT_QWS_RAMSES 114#ifndef QT_QWS_RAMSES
115 test_sd = new OCheckListItem( tests, tr( "6. SD Card Performance " ), OCheckListItem::CheckBox ); 115 test_sd = new OCheckListItem( tests, tr( "6. SD Card Performance " ), OCheckListItem::CheckBox );
116 test_cf = new OCheckListItem( tests, tr( "7. CF Card Performance " ), OCheckListItem::CheckBox ); 116 test_cf = new OCheckListItem( tests, tr( "7. CF Card Performance " ), OCheckListItem::CheckBox );
117#endif 117#endif
118 test_alu->setText( 1, "n/a" ); 118 test_alu->setText( 1, "n/a" );
119 test_fpu->setText( 1, "n/a" ); 119 test_fpu->setText( 1, "n/a" );
120 test_txt->setText( 1, "n/a" ); 120 test_txt->setText( 1, "n/a" );
121 test_gfx->setText( 1, "n/a" ); 121 test_gfx->setText( 1, "n/a" );
122 test_ram->setText( 1, "n/a" ); 122 test_ram->setText( 1, "n/a" );
123#ifndef QT_QWS_RAMSES 123#ifndef QT_QWS_RAMSES
124 test_sd->setText( 1, "n/a" ); 124 test_sd->setText( 1, "n/a" );
125 test_cf->setText( 1, "n/a" ); 125 test_cf->setText( 1, "n/a" );
126#endif 126#endif
127 test_alu->setText( 2, "n/a" ); 127 test_alu->setText( 2, "n/a" );
128 test_fpu->setText( 2, "n/a" ); 128 test_fpu->setText( 2, "n/a" );
129 test_txt->setText( 2, "n/a" ); 129 test_txt->setText( 2, "n/a" );
130 test_gfx->setText( 2, "n/a" ); 130 test_gfx->setText( 2, "n/a" );
131 test_ram->setText( 2, "n/a" ); 131 test_ram->setText( 2, "n/a" );
132#ifndef QT_QWS_RAMSES 132#ifndef QT_QWS_RAMSES
133 test_sd->setText( 2, "n/a" ); 133 test_sd->setText( 2, "n/a" );
134 test_cf->setText( 2, "n/a" ); 134 test_cf->setText( 2, "n/a" );
135#endif 135#endif
136 136
137 startButton = new QPushButton( tr( "&Start Tests!" ), this ); 137 startButton = new QPushButton( tr( "&Start Tests!" ), this );
138 QWhatsThis::add( startButton, tr( "Click here to perform the selected tests." ) ); 138 QWhatsThis::add( startButton, tr( "Click here to perform the selected tests." ) );
139 connect( startButton, SIGNAL( clicked() ), this, SLOT( run() ) ); 139 connect( startButton, SIGNAL( clicked() ), this, SLOT( run() ) );
140 vb->addWidget( tests, 2 ); 140 vb->addWidget( tests, 2 );
141 141
142 QHBoxLayout* hb = new QHBoxLayout( vb ); 142 QHBoxLayout* hb = new QHBoxLayout( vb );
143 hb->addWidget( startButton, 2 ); 143 hb->addWidget( startButton, 2 );
144 144
145 QFile f( QPEApplication::qpeDir() + "share/sysinfo/results" ); 145 QFile f( QPEApplication::qpeDir() + "share/sysinfo/results" );
146 if ( f.open( IO_ReadOnly ) ) 146 if ( f.open( IO_ReadOnly ) )
147 { 147 {
148 machineCombo = new QComboBox( this ); 148 machineCombo = new QComboBox( this );
149 QWhatsThis::add( machineCombo, tr( "Choose a model to compare your results with." ) ); 149 QWhatsThis::add( machineCombo, tr( "Choose a model to compare your results with." ) );