Revision: 201023
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 23 Jun 2010 19:20:17 +0300
changeset 79 a1b3ef187795
parent 64 ecb300a325e8
child 80 3bd7be4c9278
Revision: 201023 Kit: 2010125
fontsupport/fontutils/group/typefaces_s60_Japanese.xml
fontsupport/fontutils/group/typefaces_s60_Korean.xml
fontsupport/fontutils/group/typefaces_s60_Simplified_Chinese.xml
fontsupport/fontutils/group/typefaces_s60_Simplified_Traditional.xml
fontsupport/fontutils/group/typefaces_s60_Traditional_Chinese.xml
locales/loce32/region/src/region_gb.cpp
locales/loce32/region/src/region_sk.cpp
skins/AknSkins/src/AknsAppSkinInstance.cpp
skins/AknSkins/srvsrc/AknsSrv.cpp
skins/AknSkins/srvsrc/AknsSrvChunkMaintainer.cpp
skins/AknSkins/srvsrc/tfxconfigparser.cpp
uigraphics/AknIcon/SvgtFbsRasterizer/group/SvgtFbsRasterizer.mmp
uigraphics/AknIcon/SvgtFbsRasterizer/inc/SvgtFbsRasterizer.h
uigraphics/AknIcon/SvgtFbsRasterizer/inc/SvgtRasterizerCacheLimitHandler.h
uigraphics/AknIcon/SvgtFbsRasterizer/inc/SvgtRasterizerOOMPropertyMonitor.h
uigraphics/AknIcon/SvgtFbsRasterizer/src/SvgtFbsRasterizer.cpp
uigraphics/AknIcon/SvgtFbsRasterizer/src/SvgtRasterizerOOMPropertyMonitor.cpp
uigraphics/AknIcon/srvsrc/AknIconSrv.cpp
uiresources_pub/scalable_icons_api/group/bld.inf
uiresources_pub/scalable_icons_api/inc/SvgtRasterizerKeyDefs.hrh
--- a/fontsupport/fontutils/group/typefaces_s60_Japanese.xml	Fri Jun 11 14:37:39 2010 +0300
+++ b/fontsupport/fontutils/group/typefaces_s60_Japanese.xml	Wed Jun 23 19:20:17 2010 +0300
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <typeface_information >
     <typeface_set>
-        <typeface_mapping role="Primary" family="S60JAPSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60JAPSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60JAPSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60JAPSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60JAPSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60JAPSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
 </typeface_information>
\ No newline at end of file
--- a/fontsupport/fontutils/group/typefaces_s60_Korean.xml	Fri Jun 11 14:37:39 2010 +0300
+++ b/fontsupport/fontutils/group/typefaces_s60_Korean.xml	Wed Jun 23 19:20:17 2010 +0300
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <typeface_information >
     <typeface_set>
-        <typeface_mapping role="Primary" family="S60KORSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60KORSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60KORSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60KORSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60KORSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60KORSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
 </typeface_information>
\ No newline at end of file
--- a/fontsupport/fontutils/group/typefaces_s60_Simplified_Chinese.xml	Fri Jun 11 14:37:39 2010 +0300
+++ b/fontsupport/fontutils/group/typefaces_s60_Simplified_Chinese.xml	Wed Jun 23 19:20:17 2010 +0300
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <typeface_information >
     <typeface_set>
-        <typeface_mapping role="Primary" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60SCHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60SCHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
 </typeface_information>
\ No newline at end of file
--- a/fontsupport/fontutils/group/typefaces_s60_Simplified_Traditional.xml	Fri Jun 11 14:37:39 2010 +0300
+++ b/fontsupport/fontutils/group/typefaces_s60_Simplified_Traditional.xml	Wed Jun 23 19:20:17 2010 +0300
@@ -1,52 +1,52 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <typeface_information>
     <typeface_set language="zh" country="TW">
-        <typeface_mapping role="Primary" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60TCHKHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60TCHKHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
     <typeface_set language="zh" country="HK">
-        <typeface_mapping role="Primary" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60TCHKHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60TCHKHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
     <typeface_set language="zh" country="CN">
-        <typeface_mapping role="Primary" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60SCHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60SCHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
     <typeface_set language="en" country="CN">
-        <typeface_mapping role="Primary" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60SCHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60SCHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
     <typeface_set language="en" country="HK">
-        <typeface_mapping role="Primary" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60TCHKHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60TCHKHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
     <typeface_set language="en" country="TW">
-        <typeface_mapping role="Primary" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60TCHKHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60TCHKHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
     <typeface_set>
-        <typeface_mapping role="Primary" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60SCHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60SCHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
 </typeface_information>
\ No newline at end of file
--- a/fontsupport/fontutils/group/typefaces_s60_Traditional_Chinese.xml	Fri Jun 11 14:37:39 2010 +0300
+++ b/fontsupport/fontutils/group/typefaces_s60_Traditional_Chinese.xml	Wed Jun 23 19:20:17 2010 +0300
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <typeface_information >
     <typeface_set>
-        <typeface_mapping role="Primary" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60TCHKHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60TCHKHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
 </typeface_information>
\ No newline at end of file
--- a/locales/loce32/region/src/region_gb.cpp	Fri Jun 11 14:37:39 2010 +0300
+++ b/locales/loce32/region/src/region_gb.cpp	Wed Jun 23 19:20:17 2010 +0300
@@ -28,11 +28,11 @@
 const TDateFormat RegionAspect::DateFormat = EDateEuropean;
 const TTimeFormat RegionAspect::TimeFormat = ETime12;
 const TLocalePos RegionAspect::CurrencySymbolPosition = ELocaleBefore;
-const TBool RegionAspect::CurrencySpaceBetween = ETrue;
+const TBool RegionAspect::CurrencySpaceBetween = EFalse;
 const TInt RegionAspect::CurrencyDecimalPlaces = 2; 
 const TLocale::TNegativeCurrencyFormat RegionAspect::NegativeCurrencyFormat=TLocale::TNegativeCurrencyFormat(TLocale::ELeadingMinusSign); // replacing CurrencyNegativeInBrackets
 const TBool RegionAspect::CurrencyTriadsAllowed = ETrue;
-const TText * const RegionAspect::ThousandsSeparator = _S(" ");
+const TText * const RegionAspect::ThousandsSeparator = _S(",");
 const TText * const RegionAspect::DecimalSeparator = _S(".");
 const TText * const RegionAspect::DateSeparator[KMaxDateSeparators] = {_S(""),_S("/"),_S("/"),_S("")};
 const TText * const RegionAspect::TimeSeparator[KMaxTimeSeparators] = {_S(""),_S(":"),_S(":"),_S("")};
--- a/locales/loce32/region/src/region_sk.cpp	Fri Jun 11 14:37:39 2010 +0300
+++ b/locales/loce32/region/src/region_sk.cpp	Wed Jun 23 19:20:17 2010 +0300
@@ -35,7 +35,7 @@
 const TText * const RegionAspect::ThousandsSeparator = _S(" ");
 const TText * const RegionAspect::DecimalSeparator = _S(",");
 const TText * const RegionAspect::DateSeparator[KMaxDateSeparators] = {_S(""),_S(". "),_S(". "),_S("")};
-const TText * const RegionAspect::TimeSeparator[KMaxTimeSeparators] = {_S(""),_S("."),_S("."),_S("")}; 
+const TText * const RegionAspect::TimeSeparator[KMaxTimeSeparators] = {_S(""),_S(":"),_S(":"),_S("")}; 
 const TLocalePos RegionAspect::AmPmSymbolPosition = ELocaleAfter;
 const TBool RegionAspect::AmPmSpaceBetween = ETrue;
 const TDaylightSavingZone RegionAspect::HomeDaylightSavingZone = EDstEuropean;
--- a/skins/AknSkins/src/AknsAppSkinInstance.cpp	Fri Jun 11 14:37:39 2010 +0300
+++ b/skins/AknSkins/src/AknsAppSkinInstance.cpp	Wed Jun 23 19:20:17 2010 +0300
@@ -758,7 +758,6 @@
             {
             // Do not create an entry for typed miss, otherwise we might hide
             // a real item
-            delete itemData;
             return NULL;
             }
         }
--- a/skins/AknSkins/srvsrc/AknsSrv.cpp	Fri Jun 11 14:37:39 2010 +0300
+++ b/skins/AknSkins/srvsrc/AknsSrv.cpp	Wed Jun 23 19:20:17 2010 +0300
@@ -100,25 +100,24 @@
 	aStartFailed = EFalse;
 	
     CAknsSrv* server = new CAknsSrv();
-    server->iMergeType = (TAknsSkinSrvMergeType)(
-        EAknsSkinSrvSkin | EAknsSkinSrvIdleWp );
-    server->iBootFinished = EFalse;
-    if ( server )
-        {
-        if ( server->Start( KAknSkinSrvName ) != KErrNone )
-            {
-            AKNS_TRACE_ERROR("CAknsSrv::New START FAILED!");
-
-           	aStartFailed = ETrue;
-            delete server;
-            return NULL;
-            }
-        }
-    else
+    if ( !server )
         {
         AKNS_TRACE_ERROR("CAknsSrv::New SERVER ALLOCATION FAILED!");
         return NULL;
         }
+
+    server->iMergeType = (TAknsSkinSrvMergeType)(
+        EAknsSkinSrvSkin | EAknsSkinSrvIdleWp );
+    server->iBootFinished = EFalse;
+    if (server->Start(KAknSkinSrvName) != KErrNone)
+        {
+        AKNS_TRACE_ERROR("CAknsSrv::New START FAILED!");
+
+        aStartFailed = ETrue;
+        delete server;
+        return NULL;
+        }
+
     server->iBitmapStore = new CAknsSrvBitmapStore;
     if( !server->iBitmapStore )
         {
--- a/skins/AknSkins/srvsrc/AknsSrvChunkMaintainer.cpp	Fri Jun 11 14:37:39 2010 +0300
+++ b/skins/AknSkins/srvsrc/AknsSrvChunkMaintainer.cpp	Wed Jun 23 19:20:17 2010 +0300
@@ -279,7 +279,7 @@
     TAknsSrvEffectQueueDef applyGfxEffectQueue;
     applyGfxEffectQueue.iEffectQueueSize = sizeof(TAknsSrvEffectQueueDef)
         + 2*sizeof(TAknsSrvEffectDef) + 3*sizeof(TAknsSrvEffectParameterDef)
-        + 11*sizeof(TInt32);
+        + 8*sizeof(TInt32);
     applyGfxEffectQueue.iInputLayerIndex =0;
     applyGfxEffectQueue.iInputLayerMode = 2; //RGB
     applyGfxEffectQueue.iOutputLayerIndex = 2;
--- a/skins/AknSkins/srvsrc/tfxconfigparser.cpp	Fri Jun 11 14:37:39 2010 +0300
+++ b/skins/AknSkins/srvsrc/tfxconfigparser.cpp	Wed Jun 23 19:20:17 2010 +0300
@@ -989,7 +989,7 @@
             {
             CTFxTransition* transition = transitionarray->operator[](count);
             CTFxEffect* effect = transition->Effect();
-            if (transition && effect && effect->PathIndex() >=0)
+            if ( effect && effect->PathIndex() >=0 )
                 {
                 err = aTransSrv->RegisterFullscreenKml(transition->ContextId(),
                     transition->Uid(),
@@ -1014,7 +1014,7 @@
             {
             CTFxCtrlTransition* ctrltransition = ctrltransitionarray->operator[](count);
             CTFxEffect* effect = ctrltransition->Effect();
-            if (ctrltransition && effect && effect->PathIndex() >=0)
+            if ( effect && effect->PathIndex() >=0)
                 {
                 if (!ctrltransition->KmlRegistrationStatus())
                     {
--- a/uigraphics/AknIcon/SvgtFbsRasterizer/group/SvgtFbsRasterizer.mmp	Fri Jun 11 14:37:39 2010 +0300
+++ b/uigraphics/AknIcon/SvgtFbsRasterizer/group/SvgtFbsRasterizer.mmp	Wed Jun 23 19:20:17 2010 +0300
@@ -40,6 +40,7 @@
 SOURCE SvgtFbsRasterizer.cpp
 SOURCE svgtregisteredbitmap.cpp 
 SOURCE svgtgraphicsinterface.cpp
+SOURCE SvgtRasterizerOOMPropertyMonitor.cpp
 
 #ifdef _EGL_SUPPORT_ENABLED_
 SOURCE eglgraphicsinterface.cpp
--- a/uigraphics/AknIcon/SvgtFbsRasterizer/inc/SvgtFbsRasterizer.h	Fri Jun 11 14:37:39 2010 +0300
+++ b/uigraphics/AknIcon/SvgtFbsRasterizer/inc/SvgtFbsRasterizer.h	Wed Jun 23 19:20:17 2010 +0300
@@ -21,6 +21,9 @@
 #include "SvgtRegisteredBitmap.h"
 #include "svgtgraphicsinterface.h"
 #include <graphics/fbsrasterizer.h>
+#include <graphics/fbsrasterizerclearcache.h>
+#include "SvgtRasterizerCacheLimitHandler.h"
+
 #include <e32base.h>
 #include <VG/openvg.h>
 
@@ -36,11 +39,14 @@
 
 TBool operator==(const CFbsRasterizer::TBitmapDesc& aBitmapDesc1, const CFbsRasterizer::TBitmapDesc& aBitmapDesc2);
 
+class CSvgtRasterizerOOMPropertyMonitor;
 
 /** Example implementation of a rasterizer that is used to generate pixel
 data for extended bitmaps of example type KUidExtendedBitmapExample. 
  */
-NONSHARABLE_CLASS (CSvgtFbsRasterizer) : public CFbsRasterizer
+NONSHARABLE_CLASS (CSvgtFbsRasterizer) : public CFbsRasterizer, 
+                                            public MFbsRasterizerClearCache,
+                                            public MSvgtRasterizerCacheLimitHandler
     {
 public:
     IMPORT_C static CFbsRasterizer* New();
@@ -100,6 +106,13 @@
      * Returns cache limit (if) specific to process
      */
     TInt GetCacheLimit(TUid aProcessUID) const;
+
+    //From MFbsRasterizerClearCache
+    virtual void ClearCache();
+    
+    //from MSvgtRasterizerCacheLimitHandler
+    virtual void ChangeCacheLimit( TBool aChangeCacheLimit );
+
 private: //Data members
     /** List of currently registered extended bitmaps, the key is the bitmap id.
      */
@@ -114,6 +127,7 @@
      */
     
     CSvgtGraphicsInterface * iGraphicsInterface;
+    CSvgtRasterizerOOMPropertyMonitor* iMonitor;
          
     TBool iIsRasterizerValidState;
     TBool iMatricesUpdated;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uigraphics/AknIcon/SvgtFbsRasterizer/inc/SvgtRasterizerCacheLimitHandler.h	Wed Jun 23 19:20:17 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   MSvgtRasterizerCacheLimitHandler class.
+*
+*/
+
+#if !defined(_ENABLESVGTRASTERIZER_H_)
+#define _ENABLESVGTRASTERIZER_H_
+#include <e32def.h>
+
+const TUint32 KUidEnableSvgtRasterizer = 0x10286586;
+
+class MSvgtRasterizerCacheLimitHandler
+    {
+public:
+    virtual void ChangeCacheLimit( TBool aChangeCacheLimit ) = 0;
+    };
+
+#endif //_ENABLESVGTRASTERIZER_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uigraphics/AknIcon/SvgtFbsRasterizer/inc/SvgtRasterizerOOMPropertyMonitor.h	Wed Jun 23 19:20:17 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   CSvgtRasterizerOOMPropertyMonitor class for OOM implementation.
+*
+*/
+#if !defined(_SVGTRASTERIZEROOMPROPERTYMONITOR_H_)
+#define _SVGTRASTERIZEROOMPROPERTYMONITOR_H_
+
+#include <e32base.h>
+#include <e32property.h>
+#include "SvgtRasterizerKeyDefs.hrh"
+class CFbsRasterizer;
+
+class CSvgtRasterizerOOMPropertyMonitor : public CActive
+    {
+public:
+    static CSvgtRasterizerOOMPropertyMonitor* NewL();
+    ~CSvgtRasterizerOOMPropertyMonitor();
+    
+private: //Class methods
+    CSvgtRasterizerOOMPropertyMonitor();
+    void ConstructL();
+    void Queue();
+
+private: //From CActive
+    void RunL();
+    void DoCancel();
+
+private:
+    RProperty iOomWatcher;
+    CFbsRasterizer* iRasterizer;
+    };
+    
+#endif //_SVGTRASTERIZEROOMPROPERTYMONITOR_H_
+
+    
--- a/uigraphics/AknIcon/SvgtFbsRasterizer/src/SvgtFbsRasterizer.cpp	Fri Jun 11 14:37:39 2010 +0300
+++ b/uigraphics/AknIcon/SvgtFbsRasterizer/src/SvgtFbsRasterizer.cpp	Wed Jun 23 19:20:17 2010 +0300
@@ -28,6 +28,8 @@
 #include <bitstd.h>
 #include <bitdev.h>
 
+#include "SvgtRasterizerOOMPropertyMonitor.h"
+
 TBool operator==(const CFbsRasterizer::TBitmapDesc& aBitmapDesc1, 
 				 const CFbsRasterizer::TBitmapDesc& aBitmapDesc2)
 	{
@@ -64,11 +66,10 @@
 
 /** Constructor */
 CSvgtFbsRasterizer::CSvgtFbsRasterizer()
-    :iRegisteredBmps(_FOFF(CSvgtRegisteredBitmap, iLink)), iRecentBmps(_FOFF(CSvgtRegisteredBitmap, iLink))
-	{
-	    RProcess currentProcess;
-	    iCacheLimit = GetCacheLimit(currentProcess.SecureId());
-	    }
+:iRegisteredBmps(_FOFF(CSvgtRegisteredBitmap, iLink)), iRecentBmps(_FOFF(CSvgtRegisteredBitmap, iLink))
+	            {
+
+	            }
 
 CSvgtFbsRasterizer::~CSvgtFbsRasterizer()
     {
@@ -87,6 +88,18 @@
         {
         RestoreMatrices();
         }
+    delete iMonitor;//OOM
+    }
+
+void CSvgtFbsRasterizer::ChangeCacheLimit( TBool aChangeCacheLimit )//OOM
+    {
+    iCacheLimit = KMaxRecentBmpCacheSize;
+
+    if(aChangeCacheLimit)
+        {
+        RProcess currentProcess;
+        iCacheLimit = GetCacheLimit(currentProcess.SecureId());
+        }
     }
 
 /** Register a bitmap with this rasterizer for rendering. In this example the extended 
@@ -206,11 +219,28 @@
 /**  No extension interaces are available, KErrNotSupported for all aInterfaceId passed.
 @see CFbsRasterizer::GetInterface()
  */
-TInt CSvgtFbsRasterizer::GetInterface(TUid /*aInterfaceId*/, TAny*& aInterface)
-	{
-	aInterface = NULL;
-	return KErrExtensionNotSupported;
-	}
+TInt CSvgtFbsRasterizer::GetInterface(TUid aInterfaceId, TAny*& aInterface)
+    {
+    aInterface = NULL;
+    TInt err = KErrNone;
+
+    switch (aInterfaceId.iUid)
+        {
+        case KUidFbsRasterizerClearCache:
+            aInterface = static_cast<MFbsRasterizerClearCache*>(this);
+            break;
+        case KUidEnableSvgtRasterizer:
+            aInterface = static_cast<MSvgtRasterizerCacheLimitHandler*>(this);
+            break;
+        default:
+            err = KErrExtensionNotSupported;                        
+            break;
+        }
+
+    return err;
+
+
+    }
 
 
 /** Gets a bitmap that has been registered with this rasterizer.
@@ -253,6 +283,16 @@
 
 void CSvgtFbsRasterizer::InitializeRasterizer()
     {
+    TBool cacheEnabled=TRUE;
+    RProperty::Get(KSvgtPropertyCategory, ESvgtPropertyBool, cacheEnabled);
+    iCacheLimit = KMaxRecentBmpCacheSize;
+    if(cacheEnabled)
+        {
+        RProcess currentProcess;
+        iCacheLimit = GetCacheLimit(currentProcess.SecureId());
+        }
+    TRAPD(err, iMonitor = CSvgtRasterizerOOMPropertyMonitor::NewL());
+    iIsRasterizerValidState = ( err == KErrNone);
     }
 
 void CSvgtFbsRasterizer::RenderBitmapL(CSvgtRegisteredBitmap& aPixMap, CFbsBitmap * aMask, 
@@ -639,11 +679,11 @@
     }
 
 TInt CSvgtFbsRasterizer::GetCacheLimit(TUid aProcessUID) const
-    {
+{
     TInt cacheLimit = KMaxRecentBmpCacheSize;
-
+    
     RProcess currentProcess;
-   
+    
     if(aProcessUID == TUid::Uid(0x10003B20)) // Alf 
         {
         cacheLimit = 0x600000; 
@@ -654,4 +694,17 @@
         }
     
     return cacheLimit;
+}
+void CSvgtFbsRasterizer::ClearCache()//OOM 
+    {
+    CSvgtRegisteredBitmap* regBmp=NULL;
+    if(iCacheLimit>KMaxRecentBmpCacheSize)
+        { 
+        while (!iRecentBmps.IsEmpty()&&(iTotalRecentBmpSize > KMaxRecentBmpCacheSize))
+            {
+            regBmp = iRecentBmps.Last();
+            iTotalRecentBmpSize -= regBmp->DataSize();
+            delete regBmp;
+            }
+        }
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uigraphics/AknIcon/SvgtFbsRasterizer/src/SvgtRasterizerOOMPropertyMonitor.cpp	Wed Jun 23 19:20:17 2010 +0300
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:    CSvgtRasterizerOOMPropertyMonitor class for OOM implementation.
+ *
+ */
+
+#include "SvgtRasterizerOOMPropertyMonitor.h"
+#include <graphics/fbsrasterizer.h>
+#include <graphics/fbsrasterizerclearcache.h>
+#include "SvgtRasterizerCacheLimitHandler.h"
+#include <fbs.h>
+//#include <e32debug.h>
+
+CSvgtRasterizerOOMPropertyMonitor* CSvgtRasterizerOOMPropertyMonitor::NewL()
+    {
+    CSvgtRasterizerOOMPropertyMonitor* self = new (ELeave) CSvgtRasterizerOOMPropertyMonitor();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+CSvgtRasterizerOOMPropertyMonitor::CSvgtRasterizerOOMPropertyMonitor()
+: CActive(CActive::EPriorityStandard)
+            {
+            if (CActiveScheduler::Current())
+                {
+                CActiveScheduler::Add(this);
+                }
+
+            }
+
+CSvgtRasterizerOOMPropertyMonitor::~CSvgtRasterizerOOMPropertyMonitor()
+    {
+    if (CActiveScheduler::Current())
+        {    
+        Cancel();
+        }
+    iOomWatcher.Close();
+    } 
+
+void CSvgtRasterizerOOMPropertyMonitor::ConstructL()
+    {
+    
+    if (CActiveScheduler::Current())    
+        {
+        User::LeaveIfError(iOomWatcher.Attach(KSvgtPropertyCategory, ESvgtPropertyBool));
+        Queue();
+        }
+    }
+
+void CSvgtRasterizerOOMPropertyMonitor::RunL()
+    {
+    TBool changeCacheLimit=ETrue;
+    iOomWatcher.Get(changeCacheLimit);
+    iRasterizer = CFbsBitmap::Rasterizer();
+    if(!changeCacheLimit)
+        {
+        MFbsRasterizerClearCache* cacheInterfacePtr = NULL;
+        iRasterizer->GetInterface(TUid::Uid(KUidFbsRasterizerClearCache), (TAny*&)cacheInterfacePtr);
+        if(cacheInterfacePtr)
+            cacheInterfacePtr->ClearCache();
+        }
+    MSvgtRasterizerCacheLimitHandler* interfacePtr = NULL;
+    iRasterizer->GetInterface(TUid::Uid(KUidEnableSvgtRasterizer), (TAny*&)interfacePtr);
+    if(interfacePtr)
+        interfacePtr->ChangeCacheLimit(changeCacheLimit);
+    Queue();
+    }
+
+void CSvgtRasterizerOOMPropertyMonitor::DoCancel()
+    {
+    iOomWatcher.Cancel();
+    }
+
+void CSvgtRasterizerOOMPropertyMonitor::Queue()
+    {
+    if (!IsActive())
+        {
+        iOomWatcher.Subscribe(iStatus);
+        SetActive();
+        }
+    }
+
--- a/uigraphics/AknIcon/srvsrc/AknIconSrv.cpp	Fri Jun 11 14:37:39 2010 +0300
+++ b/uigraphics/AknIcon/srvsrc/AknIconSrv.cpp	Wed Jun 23 19:20:17 2010 +0300
@@ -53,6 +53,8 @@
 #include <AvkonInternalCRKeys.h>    // KAknQwertyInputModeActive
 #include <avkondomainpskeys.h>      // KAknPowerMenuStatus
 #include <bitdev.h>
+
+#include "SvgtRasterizerKeyDefs.hrh"
 // CONSTANTS
 
 const TUid KZiUdbProterty = {0x101F8614};
@@ -114,6 +116,10 @@
     TInt err10 = RProperty::Define(KPSUidAvkonDomain, KAknPowerMenuStatus,       RProperty::EInt, KPassReadPolicy, KWriteDDPolicy);
     TInt err11 = RProperty::Define(KPSUidAvkonDomain, KAknEndKeyEvent,           RProperty::EInt, KPassReadPolicy, KWriteDDPolicy);         
 
+    TInt err12 = RProperty::Define(KSvgtPropertyCategory, ESvgtPropertyBool,     RProperty::EInt);         
+    
+    RProperty::Set( KSvgtPropertyCategory, ESvgtPropertyBool, ETrue );
+    
 #ifdef _DEBUG
     RDebug::Print(_L("xxxx KAknQwertyInputModeActive err=%d"), err1);
     RDebug::Print(_L("xxxx KUikLayoutState           err=%d"), err2);
@@ -126,6 +132,8 @@
     RDebug::Print(_L("xxxx KT9UdbProterty            err=%d"), err9);
     RDebug::Print(_L("xxxx KAknPowerMenuStatus       err=%d"), err10);
     RDebug::Print(_L("xxxx KAknEndKeyEvent           err=%d"), err11);
+
+    RDebug::Print(_L("xxxx ESvgtPropertyBool         err=%d"), err12);
 #endif
     
     CRepository* repository = NULL;
@@ -1163,6 +1171,9 @@
 	
     iCurrentIndex = -1;
 	iCache->EnableCache(aEnable);
+	
+    RProperty::Set(KSvgtPropertyCategory, ESvgtPropertyBool, aEnable );
+
 	}
 
 // -----------------------------------------------------------------------------
--- a/uiresources_pub/scalable_icons_api/group/bld.inf	Fri Jun 11 14:37:39 2010 +0300
+++ b/uiresources_pub/scalable_icons_api/group/bld.inf	Wed Jun 23 19:20:17 2010 +0300
@@ -32,3 +32,4 @@
 ../inc/AknInternalIconUtils.h     MW_LAYER_PUBLIC_EXPORT_PATH(AknInternalIconUtils.h)
 ../inc/AknIconHeader.h         MW_LAYER_PUBLIC_EXPORT_PATH(AknIconHeader.h)
 ../inc/AknIconHeader.inl         MW_LAYER_PUBLIC_EXPORT_PATH(AknIconHeader.inl)
+../inc/SvgtRasterizerKeyDefs.hrh MW_LAYER_PUBLIC_EXPORT_PATH(SvgtRasterizerKeyDefs.hrh)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiresources_pub/scalable_icons_api/inc/SvgtRasterizerKeyDefs.hrh	Wed Jun 23 19:20:17 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   OOM related Publish n Subscribe UIDs for SvgtFbsrasterizer
+*
+*/
+
+#ifndef SVGTRASTERIZERKEYDEFS_HRH_
+#define SVGTRASTERIZERKEYDEFS_HRH_
+
+const TUid KSvgtPropertyCategory = {0x10012345};
+enum TSvgtPropertyKeys 
+    {
+    ESvgtPropertyBool
+    };
+
+#endif /* SVGTRASTERIZERKEYDEFS_HRH_ */