1 /* |
|
2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: |
|
15 * |
|
16 */ |
|
17 |
|
18 #include "MemSpyEngineHelperSysMemTrackerEntryWindowServer.h" |
|
19 |
|
20 // User includes |
|
21 #include <memspy/engine/memspyengineoutputsink.h> |
|
22 #include <memspy/engine/memspyenginehelpersysmemtrackercycle.h> |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 CMemSpyEngineHelperSysMemTrackerEntryWindowServer::CMemSpyEngineHelperSysMemTrackerEntryWindowServer( CMemSpyEngineHelperSysMemTrackerImp& aTracker, const TMemSpyEngineWindowGroupDetails& aWindowGroupDetails ) |
|
28 : CMemSpyEngineHelperSysMemTrackerEntry( aTracker, EMemSpyEngineSysMemTrackerTypeFbserv ), |
|
29 iCurrentWindowGroupDetails( aWindowGroupDetails ), |
|
30 iLastWindowGroupDetails( aWindowGroupDetails ) |
|
31 { |
|
32 } |
|
33 |
|
34 |
|
35 CMemSpyEngineHelperSysMemTrackerEntryWindowServer::~CMemSpyEngineHelperSysMemTrackerEntryWindowServer() |
|
36 { |
|
37 } |
|
38 |
|
39 |
|
40 void CMemSpyEngineHelperSysMemTrackerEntryWindowServer::ConstructL() |
|
41 { |
|
42 } |
|
43 |
|
44 |
|
45 CMemSpyEngineHelperSysMemTrackerEntryWindowServer* CMemSpyEngineHelperSysMemTrackerEntryWindowServer::NewLC( CMemSpyEngineHelperSysMemTrackerImp& aTracker, const TMemSpyEngineWindowGroupDetails& aWindowGroupDetails ) |
|
46 { |
|
47 CMemSpyEngineHelperSysMemTrackerEntryWindowServer* self = new(ELeave) CMemSpyEngineHelperSysMemTrackerEntryWindowServer( aTracker, aWindowGroupDetails ); |
|
48 CleanupStack::PushL( self ); |
|
49 self->ConstructL(); |
|
50 return self; |
|
51 } |
|
52 |
|
53 |
|
54 TUint64 CMemSpyEngineHelperSysMemTrackerEntryWindowServer::Key() const |
|
55 { |
|
56 return TUint64( iCurrentWindowGroupDetails.iId ); |
|
57 } |
|
58 |
|
59 |
|
60 void CMemSpyEngineHelperSysMemTrackerEntryWindowServer::UpdateFromL( const CMemSpyEngineHelperSysMemTrackerEntry& aEntry ) |
|
61 { |
|
62 const CMemSpyEngineHelperSysMemTrackerEntryWindowServer& entry = static_cast< const CMemSpyEngineHelperSysMemTrackerEntryWindowServer& >( aEntry ); |
|
63 iLastWindowGroupDetails = iCurrentWindowGroupDetails; |
|
64 iCurrentWindowGroupDetails = entry.iCurrentWindowGroupDetails; |
|
65 } |
|
66 |
|
67 |
|
68 TBool CMemSpyEngineHelperSysMemTrackerEntryWindowServer::HasChangedL( const TMemSpyEngineHelperSysMemTrackerConfig& /*aConfig*/ ) const |
|
69 { |
|
70 const TBool hasChanged = ( iCurrentWindowGroupDetails.iIsFocused != iLastWindowGroupDetails.iIsFocused ) || |
|
71 ( iCurrentWindowGroupDetails.iCaption != iLastWindowGroupDetails.iCaption ) |
|
72 ; |
|
73 return hasChanged; |
|
74 } |
|
75 |
|
76 |
|
77 void CMemSpyEngineHelperSysMemTrackerEntryWindowServer::CreateChangeDescriptorL( CMemSpyEngineHelperSysMemTrackerCycle& aCycle ) |
|
78 { |
|
79 CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::TMemSpyWindowServerEvent event( CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::EMemSpyWindowServerEventNoEvent ); |
|
80 if ( iCurrentWindowGroupDetails.iCaption != iLastWindowGroupDetails.iCaption ) |
|
81 { |
|
82 event = CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::EMemSpyWindowServerEventNameChanged; |
|
83 CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup* changeDescriptor = CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::NewLC( Attributes(), iCurrentWindowGroupDetails, event ); |
|
84 aCycle.AddAndPopL( changeDescriptor ); |
|
85 } |
|
86 if ( iCurrentWindowGroupDetails.iIsFocused && !iLastWindowGroupDetails.iIsFocused ) |
|
87 { |
|
88 event = CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::EMemSpyWindowServerEventFocusGained; |
|
89 CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup* changeDescriptor = CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::NewLC( Attributes(), iCurrentWindowGroupDetails, event ); |
|
90 aCycle.AddAndPopL( changeDescriptor ); |
|
91 } |
|
92 if ( !iCurrentWindowGroupDetails.iIsFocused && iLastWindowGroupDetails.iIsFocused ) |
|
93 { |
|
94 event = CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::EMemSpyWindowServerEventFocusLost; |
|
95 CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup* changeDescriptor = CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::NewLC( Attributes(), iCurrentWindowGroupDetails, event ); |
|
96 aCycle.AddAndPopL( changeDescriptor ); |
|
97 } |
|
98 if ( event == CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::EMemSpyWindowServerEventNoEvent ) |
|
99 { |
|
100 // If there were no events detected, it was a creation or deletion of a window group: |
|
101 CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup* changeDescriptor = CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::NewLC( Attributes(), iCurrentWindowGroupDetails ); |
|
102 aCycle.AddAndPopL( changeDescriptor ); |
|
103 } |
|
104 } |
|
105 |
|
106 |
|
107 void CMemSpyEngineHelperSysMemTrackerEntryWindowServer::UpdateCycleStatistics( CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ ) |
|
108 { |
|
109 } |
|
110 |
|
111 |
|
112 |
|
113 |
|
114 |
|
115 |
|
116 |
|
117 |
|
118 |
|
119 |
|
120 |
|
121 |
|
122 |
|
123 |
|
124 |
|
125 |
|
126 |
|
127 |
|
128 |
|
129 |
|
130 |
|
131 |
|
132 |
|
133 |
|
134 |
|
135 |
|
136 |
|
137 |
|
138 |
|
139 |
|
140 |
|
141 |
|
142 |
|
143 |
|
144 |
|
145 |
|
146 |
|
147 |
|
148 |
|
149 |
|
150 |
|
151 |
|
152 |
|
153 |
|
154 |
|
155 |
|
156 |
|
157 |
|
158 |
|
159 |
|
160 |
|
161 |
|
162 |
|
163 |
|
164 |
|
165 CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup( TUint8 aAttribs, const TMemSpyEngineWindowGroupDetails aCurrent, TMemSpyWindowServerEvent aEvent ) |
|
166 : CMemSpyEngineHelperSysMemTrackerCycleChange( aAttribs ), |
|
167 iCurrentWindowGroupDetails( aCurrent ), |
|
168 iEvent( aEvent ) |
|
169 { |
|
170 } |
|
171 |
|
172 |
|
173 CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::~CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup() |
|
174 { |
|
175 } |
|
176 |
|
177 |
|
178 void CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::ConstructL() |
|
179 { |
|
180 BaseConstructL(); |
|
181 } |
|
182 |
|
183 |
|
184 CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup* CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::NewLC( TUint8 aAttribs, const TMemSpyEngineWindowGroupDetails aCurrent, TMemSpyWindowServerEvent aEvent ) |
|
185 { |
|
186 CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup* self = new(ELeave) CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup( aAttribs, aCurrent, aEvent ); |
|
187 CleanupStack::PushL( self ); |
|
188 self->ConstructL(); |
|
189 return self; |
|
190 } |
|
191 |
|
192 |
|
193 TMemSpyEngineSysMemTrackerType CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::Type() const |
|
194 { |
|
195 return EMemSpyEngineSysMemTrackerTypeWindowServer; |
|
196 } |
|
197 |
|
198 |
|
199 void CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::OutputHeaderL( CMemSpyEngineOutputSink& aSink, CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ ) |
|
200 { |
|
201 _LIT( KHeaderWindowServer, "Type, Id, Name, Order, Event, Attribs"); |
|
202 aSink.OutputLineL( KHeaderWindowServer ); |
|
203 } |
|
204 |
|
205 |
|
206 void CMemSpyEngineHelperSysMemTrackerCycleChangeWindowGroup::OutputContentL( CMemSpyEngineOutputSink& aSink, CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ ) |
|
207 { |
|
208 _LIT( KFormat, "%S,%d,%S,%d,%d,%S" ); |
|
209 // |
|
210 TMemSpySWMTTypeName type;; |
|
211 FormatType( type ); |
|
212 // |
|
213 TBuf<20> attribs; |
|
214 FormatAttributes( attribs ); |
|
215 // |
|
216 TFullName name; |
|
217 if ( iCurrentWindowGroupDetails.iCaption.Length() ) |
|
218 { |
|
219 name.Copy( iCurrentWindowGroupDetails.iCaption ); |
|
220 } |
|
221 else |
|
222 { |
|
223 name.Copy( iCurrentWindowGroupDetails.iFullName ); |
|
224 } |
|
225 |
|
226 HBufC* buf = HBufC::NewLC( 1024 ); |
|
227 TPtr pBuf(buf->Des()); |
|
228 |
|
229 // Now output line |
|
230 pBuf.Format( KFormat, |
|
231 &type, |
|
232 // |
|
233 iCurrentWindowGroupDetails.iId, |
|
234 &name, |
|
235 iCurrentWindowGroupDetails.iOrdinalPosition, |
|
236 iEvent, |
|
237 &attribs |
|
238 ); |
|
239 |
|
240 aSink.OutputLineL( pBuf ); |
|
241 CleanupStack::PopAndDestroy( buf ); |
|
242 } |
|