diff -r 7516d6d86cf5 -r ed14f46c0e55 src/hbcore/utils/hbdeviceprofile.cpp --- a/src/hbcore/utils/hbdeviceprofile.cpp Mon Oct 04 17:49:30 2010 +0300 +++ b/src/hbcore/utils/hbdeviceprofile.cpp Mon Oct 18 18:23:13 2010 +0300 @@ -29,10 +29,12 @@ #include "hbmemorymanager_p.h" #include "hbtheme_p.h" #include "hbthemeclient_p.h" -#include +#include "hbmainwindow.h" #include "hbmainwindow_p.h" -#include +#ifdef Q_OS_SYMBIAN +#include "hbthemecommon_symbian_p.h" +#endif // To store the pointer to the deviceProfiles at the client side. static HbDeviceProfileList *deviceProfilesList = 0; @@ -86,9 +88,8 @@ found = true; } } - if (!found) { - qWarning() << "Device profile" << name << "not found!"; - } + // The !found case is actually normal, just have the default constructed + // profile in that case, no need to raise errors. } } @@ -299,19 +300,28 @@ HbDeviceProfileList *HbDeviceProfilePrivate::deviceProfiles() { - if (!deviceProfilesList) { + // HbOrientationStatus may call this from the Theme Server process + // too and this needs special support. + bool isThemeServer = false; +#ifdef Q_OS_SYMBIAN + RProcess process; + isThemeServer = process.SecureId().iId == KServerUid3.iUid; + process.Close(); +#endif + if (!deviceProfilesList && !isThemeServer) { // Will result in IPC call. gets the shared memory offset from themeserver. deviceProfilesList = HbThemeClient::global()->deviceProfiles(); } if (!deviceProfilesList) { + HbMemoryManager::MemoryType memType = isThemeServer + ? HbMemoryManager::SharedMemory : HbMemoryManager::HeapMemory; // This is fall back.Create/Get the HbDeviceProfileDatabase Instance at // the client side and read the deviceProfilesList. HbDeviceProfileDatabase *deviceProfileDataBase = - HbDeviceProfileDatabase::instance(HbMemoryManager::HeapMemory); - deviceProfilesList = HbMemoryUtils::getAddress(HbMemoryManager::HeapMemory, + HbDeviceProfileDatabase::instance(memType); + deviceProfilesList = HbMemoryUtils::getAddress(memType, deviceProfileDataBase->deviceProfilesOffset()); } return deviceProfilesList; } -// end of file