windowing/windowserver/nga/SERVER/openwfc/WSTOP.CPP
branchRCL_3
changeset 164 25ffed67c7ef
parent 163 bbf46f59e123
--- a/windowing/windowserver/nga/SERVER/openwfc/WSTOP.CPP	Tue Aug 31 16:31:06 2010 +0300
+++ b/windowing/windowserver/nga/SERVER/openwfc/WSTOP.CPP	Wed Sep 01 12:39:21 2010 +0100
@@ -32,7 +32,7 @@
 #include "pointer.h"
 #include "WSGRAPHICDRAWERFACTORY.H"
 #include "redrawmsgwindow.h"
-#include <graphics/WSGRAPHICDRAWERINTERFACE.H>
+#include <Graphics/WSGRAPHICDRAWERINTERFACE.H>
 #include "WsMemMgr.h"
 #include "backedupwindow.h"
 #include "wsfont.h"
@@ -46,7 +46,6 @@
 #include "registeredsurfacemap.h"
 #include "windowelementset.h"
 #include "wspluginmanager.h"
-#include "renderorientationtracker.h"
 
 // IDs of p&s properties that optionally contain callbacks that may be used
 // to release singletons owned by libraries at shutdown in order to make 
@@ -210,7 +209,6 @@
 TInt CWsTop::iCheckHeapResult=KErrNotReady;
 TBool CWsTop::iDoHeapCheckAndRestart=EFalse;
 #define RFbsSession_SendCommand_ShutDownMessage 1	// A FBS message that is not published yet and probably never will be.
-CWsRenderOrienationTracker* CWsTop::iRenderOrientationTracker=NULL;
 
 static void DefineSingletonKey(const TUid& aSingletonKey)
 /**
@@ -283,8 +281,6 @@
 void CWsTop::DeleteStaticsL()
 	{
 	iShuttingDown=ETrue;
-	delete iRenderOrientationTracker;	
-	
 	CClick::DeleteStatics();
 	TWsPointer::Stop();
 	CWsClient::DeleteStatics();
@@ -557,8 +553,6 @@
 		StartShell();
 		}
 	UserSvr::WsRegisterSwitchOnScreenHandling(ETrue);
-	
-	iRenderOrientationTracker = CWsRenderOrienationTracker::NewL();	
 	}
 
 
@@ -903,6 +897,31 @@
 	iHeapCheckMode=aCheckHeapOnDisconnectMode;
 	}
 
+static void ReportAllCurrentLevelLeaks()
+    {
+    class RHeapWalk: public RHeap
+        {
+    public:
+         static void WalkCheckCell(TAny* aPtr, TCellType aType, TAny* aCell, TInt aLen)
+             {
+             RHeapWalk* heap=(RHeapWalk*)aPtr;
+             (void)aCell;
+             switch(aType)
+                 {
+                 case EGoodAllocatedCell:
+                     if ( ((SDebugCell*)aCell)->nestingLevel == heap->iNestingLevel )
+                         {
+                         RDebug::Printf("Leaked heap cell: level %i, serial %i @ %08x : len=%d", 
+                                            heap->iNestingLevel, ((SDebugCell*)aCell)->allocCount, aCell, aLen);
+                         }
+                    break;
+                 }
+             }
+        };
+    
+    User::Heap().DebugFunction(RHeap::EWalk, (TAny*)RHeapWalk::WalkCheckCell, &User::Heap());
+    }
+
 TBool CWsTop::NeedsHeapCheckAndRestart(TInt aStartHeapCount)
 	{
 	if (!iDoHeapCheckAndRestart)
@@ -913,6 +932,7 @@
 	    {
 	    const TUint32 orphanedCell = User::Heap().__DbgMarkEnd(aStartHeapCount);
 	    RDebug::Printf("Memory leak detected in wserv. First orphaned cell: 0x%8x", orphanedCell);
+	    ReportAllCurrentLevelLeaks();
 	    }
 	return(ETrue);
 	}
@@ -964,18 +984,6 @@
 	return EFalse;
 	}
 
-/**
-Checks to see if the render orientation has changed, and publishes any new orientaion
-via publish and subscribe
-
-@see KRenderOrientationCategory
-@see KRenderOrientationKey 
-*/
-void CWsTop::CheckRenderOrientation()
-    {
-    iRenderOrientationTracker->CheckRenderOrientation();
-    }
-
 typedef TInt (*ShellEntryPoint)(TAny *);
 
 #if defined(__WINS__)