29 IRQSettings* irqsettings = |
29 IRQSettings* irqsettings = |
30 reinterpret_cast<IRQSettings*>(Dll::Tls()); |
30 reinterpret_cast<IRQSettings*>(Dll::Tls()); |
31 |
31 |
32 if (NULL == irqsettings) |
32 if (NULL == irqsettings) |
33 { |
33 { |
34 TRAPD(error, irqsettings = createInstanceL()); |
34 irqsettings = createInstance(); |
35 if (KErrNone != error) |
|
36 { |
|
37 delete irqsettings; |
|
38 irqsettings = NULL; |
|
39 Dll::SetTls(NULL); |
|
40 } |
|
41 } |
35 } |
42 else |
36 else |
43 { |
37 { |
44 irqsettings->iSingletonInstances++; |
38 irqsettings->iSingletonInstances++; |
45 } |
39 } |
364 // IRQSettings::createInstanceL() |
358 // IRQSettings::createInstanceL() |
365 // Creates IRQSettings instance |
359 // Creates IRQSettings instance |
366 // @return IRQSettings* |
360 // @return IRQSettings* |
367 // --------------------------------------------------------------------------- |
361 // --------------------------------------------------------------------------- |
368 // |
362 // |
369 IRQSettings* IRQSettings::createInstanceL() |
363 IRQSettings* IRQSettings::createInstance() |
370 { |
364 { |
371 IRQSettings* irqsettings = new (ELeave) IRQSettings(); |
365 IRQSettings* irqsettings = new IRQSettings(); |
372 irqsettings->constructL(); |
366 |
373 User::LeaveIfError(Dll::SetTls(irqsettings)); |
367 TRAPD(leaveCode, doCreateInstanceL(irqsettings)); |
374 irqsettings->iSingletonInstances = 1; |
368 if (KErrNone != leaveCode) |
375 |
369 { |
376 return irqsettings; |
370 delete irqsettings; |
377 } |
371 irqsettings = NULL; |
378 |
372 return NULL; |
|
373 } |
|
374 else |
|
375 { |
|
376 irqsettings->iSingletonInstances = 1; |
|
377 return irqsettings; |
|
378 } |
|
379 } |
|
380 |
|
381 // --------------------------------------------------------------------------- |
|
382 // IRQSettings::doCreateInstanceL() |
|
383 // Creates IRQSettings instance |
|
384 // @return IRQSettings* |
|
385 // --------------------------------------------------------------------------- |
|
386 // |
|
387 void IRQSettings::doCreateInstanceL(IRQSettings * aQsettings) |
|
388 { |
|
389 aQsettings->constructL(); |
|
390 Dll::SetTls(aQsettings); |
|
391 |
|
392 } |
379 // --------------------------------------------------------------------------- |
393 // --------------------------------------------------------------------------- |
380 // IRQSettings::constructL() |
394 // IRQSettings::constructL() |
381 // Two-Phase Constructor. |
395 // Two-Phase Constructor. |
382 // --------------------------------------------------------------------------- |
396 // --------------------------------------------------------------------------- |
383 // |
397 // |