summaryrefslogtreecommitdiff
path: root/libopie2
authordeller <deller>2005-04-05 21:10:11 (UTC)
committer deller <deller>2005-04-05 21:10:11 (UTC)
commitf0000ae8e62df9606160ab683ae163ddc40c32c4 (patch) (unidiff)
tree642a8b7927c7ff77d196399d4498559e585a2487 /libopie2
parente9f44f94ac905e49ea5def24532ac2d3bf4ed053 (diff)
downloadopie-f0000ae8e62df9606160ab683ae163ddc40c32c4.zip
opie-f0000ae8e62df9606160ab683ae163ddc40c32c4.tar.gz
opie-f0000ae8e62df9606160ab683ae163ddc40c32c4.tar.bz2
crash-fix in odevice.cpp while scanning the distribution table (#1565)
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/libopie2/opiecore/device/odevice.cpp b/libopie2/opiecore/device/odevice.cpp
index af77ed1..fcdbf45 100644
--- a/libopie2/opiecore/device/odevice.cpp
+++ b/libopie2/opiecore/device/odevice.cpp
@@ -98,193 +98,193 @@ struct default_button default_buttons [] = {
98 "datebook", "nextView()", 98 "datebook", "nextView()",
99 "today", "raise()" }, 99 "today", "raise()" },
100 { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"), 100 { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"),
101 "devicebuttons/z_contact", 101 "devicebuttons/z_contact",
102 "addressbook", "raise()", 102 "addressbook", "raise()",
103 "addressbook", "beamBusinessCard()" }, 103 "addressbook", "beamBusinessCard()" },
104 { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"), 104 { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"),
105 "devicebuttons/z_home", 105 "devicebuttons/z_home",
106 "QPE/Launcher", "home()", 106 "QPE/Launcher", "home()",
107 "buttonsettings", "raise()" }, 107 "buttonsettings", "raise()" },
108 { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), 108 { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"),
109 "devicebuttons/z_menu", 109 "devicebuttons/z_menu",
110 "QPE/TaskBar", "toggleMenu()", 110 "QPE/TaskBar", "toggleMenu()",
111 "QPE/TaskBar", "toggleStartMenu()" }, 111 "QPE/TaskBar", "toggleStartMenu()" },
112 { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), 112 { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"),
113 "devicebuttons/z_mail", 113 "devicebuttons/z_mail",
114 "opiemail", "raise()", 114 "opiemail", "raise()",
115 "opiemail", "newMail()" }, 115 "opiemail", "newMail()" },
116}; 116};
117 117
118ODevice *ODevice::inst() 118ODevice *ODevice::inst()
119{ 119{
120 static ODevice *dev = 0; 120 static ODevice *dev = 0;
121 QString cpu_info; 121 QString cpu_info;
122 122
123 if ( !dev ) 123 if ( !dev )
124 { 124 {
125 QFile f( PATH_PROC_CPUINFO ); 125 QFile f( PATH_PROC_CPUINFO );
126 if ( f.open( IO_ReadOnly ) ) 126 if ( f.open( IO_ReadOnly ) )
127 { 127 {
128 QTextStream s( &f ); 128 QTextStream s( &f );
129 while ( !s.atEnd() ) 129 while ( !s.atEnd() )
130 { 130 {
131 QString line; 131 QString line;
132 line = s.readLine(); 132 line = s.readLine();
133 if ( line.startsWith( "Hardware" ) ) 133 if ( line.startsWith( "Hardware" ) )
134 { 134 {
135 qDebug( "ODevice() - found '%s'", (const char*) line ); 135 qDebug( "ODevice() - found '%s'", (const char*) line );
136 cpu_info = line; 136 cpu_info = line;
137 if ( line.contains( "sharp", false ) ) dev = new Internal::Zaurus(); 137 if ( line.contains( "sharp", false ) ) dev = new Internal::Zaurus();
138 else if ( line.contains( "ipaq", false ) ) dev = new Internal::iPAQ(); 138 else if ( line.contains( "ipaq", false ) ) dev = new Internal::iPAQ();
139 else if ( line.contains( "simpad", false ) ) dev = new Internal::SIMpad(); 139 else if ( line.contains( "simpad", false ) ) dev = new Internal::SIMpad();
140 else if ( line.contains( "jornada", false ) ) dev = new Internal::Jornada(); 140 else if ( line.contains( "jornada", false ) ) dev = new Internal::Jornada();
141 else if ( line.contains( "ramses", false ) ) dev = new Internal::Ramses(); 141 else if ( line.contains( "ramses", false ) ) dev = new Internal::Ramses();
142 else if ( line.contains( "Tradesquare.NL", false ) ) dev = new Internal::Beagle(); 142 else if ( line.contains( "Tradesquare.NL", false ) ) dev = new Internal::Beagle();
143 else qWarning( "ODevice() - unknown hardware - using default." ); 143 else qWarning( "ODevice() - unknown hardware - using default." );
144 break; 144 break;
145 } else if ( line.startsWith( "vendor_id" ) ) { 145 } else if ( line.startsWith( "vendor_id" ) ) {
146 qDebug( "ODevice() - found '%s'", (const char*) line ); 146 qDebug( "ODevice() - found '%s'", (const char*) line );
147 cpu_info = line; 147 cpu_info = line;
148 if( line.contains( "genuineintel", false ) ) { 148 if( line.contains( "genuineintel", false ) ) {
149 dev = new Internal::GenuineIntel(); 149 dev = new Internal::GenuineIntel();
150 break; 150 break;
151 } 151 }
152 } 152 }
153 } 153 }
154 } 154 }
155 else 155 else
156 { 156 {
157 qWarning( "ODevice() - can't open '%s' - unknown hardware - using default.", PATH_PROC_CPUINFO ); 157 qWarning( "ODevice() - can't open '%s' - unknown hardware - using default.", PATH_PROC_CPUINFO );
158 } 158 }
159 if ( !dev ) dev = new ODevice(); 159 if ( !dev ) dev = new ODevice();
160 dev->init(cpu_info); 160 dev->init(cpu_info);
161 } 161 }
162 return dev; 162 return dev;
163} 163}
164 164
165ODevice::ODevice() 165ODevice::ODevice()
166{ 166{
167 d = new ODeviceData; 167 d = new ODeviceData;
168 168
169 d->m_modelstr = "Unknown"; 169 d->m_modelstr = "Unknown";
170 d->m_model = Model_Unknown; 170 d->m_model = Model_Unknown;
171 d->m_vendorstr = "Unknown"; 171 d->m_vendorstr = "Unknown";
172 d->m_vendor = Vendor_Unknown; 172 d->m_vendor = Vendor_Unknown;
173 d->m_systemstr = "Unknown"; 173 d->m_systemstr = "Unknown";
174 d->m_system = System_Unknown; 174 d->m_system = System_Unknown;
175 d->m_sysverstr = "0.0"; 175 d->m_sysverstr = "0.0";
176 d->m_rotation = Rot0; 176 d->m_rotation = Rot0;
177 d->m_direction = CW; 177 d->m_direction = CW;
178 178
179 d->m_holdtime = 1000; // 1000ms 179 d->m_holdtime = 1000; // 1000ms
180 d->m_buttons = 0; 180 d->m_buttons = 0;
181 d->m_cpu_frequencies = new QStrList; 181 d->m_cpu_frequencies = new QStrList;
182 182
183 183
184 /* mixer */ 184 /* mixer */
185 d->m_sound = d->m_vol = d->m_mixer = -1; 185 d->m_sound = d->m_vol = d->m_mixer = -1;
186 186
187 /* System QCopChannel created */ 187 /* System QCopChannel created */
188 d->m_initializedButtonQcop = false; 188 d->m_initializedButtonQcop = false;
189 189
190 // New distribution detection code first checks for legacy distributions, 190 // New distribution detection code first checks for legacy distributions,
191 // identified by /etc/familiar-version or /etc/oz_version. 191 // identified by /etc/familiar-version or /etc/oz_version.
192 // Then check for OpenEmbedded and lastly, read /etc/issue 192 // Then check for OpenEmbedded and lastly, read /etc/issue
193 193
194 for ( unsigned int i = 0; i < sizeof distributions; ++i ) 194 for ( unsigned int i = 0; i < sizeof(distributions)/sizeof(ODistribution); ++i )
195 { 195 {
196 if ( QFile::exists( distributions[i].sysvfile ) ) 196 if ( QFile::exists( distributions[i].sysvfile ) )
197 { 197 {
198 d->m_systemstr = distributions[i].sysstr; 198 d->m_systemstr = distributions[i].sysstr;
199 d->m_system = distributions[i].system; 199 d->m_system = distributions[i].system;
200 d->m_sysverstr = "<Unknown>"; 200 d->m_sysverstr = "<Unknown>";
201 QFile f( distributions[i].sysvfile ); 201 QFile f( distributions[i].sysvfile );
202 if ( f.open( IO_ReadOnly ) ) 202 if ( f.open( IO_ReadOnly ) )
203 { 203 {
204 QTextStream ts( &f ); 204 QTextStream ts( &f );
205 d->m_sysverstr = ts.readLine().replace( QRegExp( "\\\\." ), "" ); 205 d->m_sysverstr = ts.readLine().replace( QRegExp( "\\\\." ), "" );
206 } 206 }
207 break; 207 break;
208 } 208 }
209 } 209 }
210} 210}
211 211
212void ODevice::systemMessage( const QCString &msg, const QByteArray & ) 212void ODevice::systemMessage( const QCString &msg, const QByteArray & )
213{ 213{
214 if ( msg == "deviceButtonMappingChanged()" ) { 214 if ( msg == "deviceButtonMappingChanged()" ) {
215 reloadButtonMapping(); 215 reloadButtonMapping();
216 } 216 }
217} 217}
218 218
219void ODevice::init(const QString&) 219void ODevice::init(const QString&)
220{ 220{
221} 221}
222 222
223/** 223/**
224* This method initialises the button mapping 224* This method initialises the button mapping
225*/ 225*/
226void ODevice::initButtons() 226void ODevice::initButtons()
227{ 227{
228 if ( d->m_buttons ) 228 if ( d->m_buttons )
229 return; 229 return;
230 230
231 qDebug ( "init Buttons" ); 231 qDebug ( "init Buttons" );
232 d->m_buttons = new QValueList <ODeviceButton>; 232 d->m_buttons = new QValueList <ODeviceButton>;
233 for ( uint i = 0; i < ( sizeof( default_buttons ) / sizeof( default_button )); i++ ) { 233 for ( uint i = 0; i < ( sizeof( default_buttons ) / sizeof( default_button )); i++ ) {
234 default_button *db = default_buttons + i; 234 default_button *db = default_buttons + i;
235 ODeviceButton b; 235 ODeviceButton b;
236 b. setKeycode ( db->code ); 236 b. setKeycode ( db->code );
237 b. setUserText ( QObject::tr ( "Button", db->utext )); 237 b. setUserText ( QObject::tr ( "Button", db->utext ));
238 b. setPixmap ( Resource::loadPixmap ( db->pix )); 238 b. setPixmap ( Resource::loadPixmap ( db->pix ));
239 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( db->fpressedservice ), db->fpressedaction )); 239 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( db->fpressedservice ), db->fpressedaction ));
240 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( db->fheldservice ), db->fheldaction )); 240 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( db->fheldservice ), db->fheldaction ));
241 d->m_buttons->append ( b ); 241 d->m_buttons->append ( b );
242 } 242 }
243 243
244 reloadButtonMapping(); 244 reloadButtonMapping();
245} 245}
246 246
247ODevice::~ODevice() 247ODevice::~ODevice()
248{ 248{
249// we leak m_devicebuttons and m_cpu_frequency 249// we leak m_devicebuttons and m_cpu_frequency
250// but it's a singleton and it is not so importantant 250// but it's a singleton and it is not so importantant
251// -zecke 251// -zecke
252 delete d; 252 delete d;
253} 253}
254 254
255/** 255/**
256* This method will try to suspend the device 256* This method will try to suspend the device
257* It only works if the user is the QWS Server and the apm application 257* It only works if the user is the QWS Server and the apm application
258* is installed. 258* is installed.
259* It tries to suspend and then waits some time cause some distributions 259* It tries to suspend and then waits some time cause some distributions
260* do have asynchronus apm implementations. 260* do have asynchronus apm implementations.
261* This method will either fail and return false or it'll suspend the 261* This method will either fail and return false or it'll suspend the
262* device and return once the device got woken up 262* device and return once the device got woken up
263* 263*
264* @return if the device got suspended 264* @return if the device got suspended
265*/ 265*/
266bool ODevice::suspend() 266bool ODevice::suspend()
267{ 267{
268 return false; // default implementation == unknown device or qvfb 268 return false; // default implementation == unknown device or qvfb
269} 269}
270 270
271/** 271/**
272* This sets the display on or off 272* This sets the display on or off
273*/ 273*/
274bool ODevice::setDisplayStatus( bool on ) 274bool ODevice::setDisplayStatus( bool on )
275{ 275{
276 qDebug( "ODevice::setDisplayStatus( %d ) - please override me.", on ); 276 qDebug( "ODevice::setDisplayStatus( %d ) - please override me.", on );
277 return false; // don't do anything for unknown models 277 return false; // don't do anything for unknown models
278} 278}
279 279
280/** 280/**
281* This sets the display brightness 281* This sets the display brightness
282* 282*
283* @param b The brightness to be set on a scale from 0 to 255 283* @param b The brightness to be set on a scale from 0 to 255
284* @return success or failure 284* @return success or failure
285*/ 285*/
286bool ODevice::setDisplayBrightness( int b ) 286bool ODevice::setDisplayBrightness( int b )
287{ 287{
288 qDebug( "ODevice::setDisplayBrightness( %d ) - please override me.", b ); 288 qDebug( "ODevice::setDisplayBrightness( %d ) - please override me.", b );
289 return false; 289 return false;
290} 290}