diff -r f93c875b566e -r 3a60ebea00d0 uiacceltk/hitchcock/goommonitor/src/goomwindowgrouplist.cpp --- a/uiacceltk/hitchcock/goommonitor/src/goomwindowgrouplist.cpp Tue May 25 13:39:57 2010 +0300 +++ b/uiacceltk/hitchcock/goommonitor/src/goomwindowgrouplist.cpp Wed Jun 09 10:41:25 2010 +0300 @@ -43,18 +43,18 @@ } // Update the list of window groups -void CGOomWindowGroupList::Refresh() +void CGOomWindowGroupList::Refresh(TBool aOptionalOnly) { FUNC_LOG; #ifdef _DEBUG - TRAPD(err, RefreshL()); + TRAPD(err, RefreshL(aOptionalOnly)); if (err) { TRACES1("CGOomWindowGroupList::Refresh(): RefreshL leave %d", err); } #else - TRAP_IGNORE(RefreshL()); + TRAP_IGNORE(RefreshL(aOptionalOnly)); // Ignore any error // Errors are very unlikely, the only possibility is OOM errors (which should be very unlikely due to pre-created, re-reserved lists) // The outcome of any error is that the most foreground operations will be missing from the list @@ -64,7 +64,7 @@ // Update the list of window groups // Should be called whenever the -void CGOomWindowGroupList::RefreshL() +void CGOomWindowGroupList::RefreshL(TBool aOptionalOnly) { FUNC_LOG; @@ -76,9 +76,27 @@ RArray inactiveSurfaces; // ignore possible errors, we have information from profiling extension anyway - iAlfClient.GetListOfInactiveWindowGroupsWSurfaces(&inactiveSurfaces); - iAlfClient.GetListOfWindowGroupsWSurfaces(&iLowOnMemWgs); + if (!aOptionalOnly) + { + iAlfClient.GetListOfInactiveWindowGroupsWSurfaces(&inactiveSurfaces); + iAlfClient.GetListOfWindowGroupsWSurfaces(&iLowOnMemWgs); + } + else + { // first iteration: try to cope with window group ID's only + // Most likely that needs to be revisited because apps fail to name their window + // groups properly on external screens... + iAlfClient.GetOptionalGraphicsMemUsers(&inactiveSurfaces); + iOptionalUids.Reset(); + TInt count = inactiveSurfaces.Count(); + for (TInt i = 0; i privMemUsed; RArray sparedProcessIds; - //if (inactiveSurfaces.Count() == 1) // ALF only - // { - NOK_resource_profiling eglQueryProfilingData = (NOK_resource_profiling)eglGetProcAddress("eglQueryProfilingDataNOK"); + if (!aOptionalOnly) + { + NOK_resource_profiling eglQueryProfilingData = (NOK_resource_profiling)eglGetProcAddress("eglQueryProfilingDataNOK"); - if (!eglQueryProfilingData && inactiveSurfaces.Count() == 0) + if (!eglQueryProfilingData && inactiveSurfaces.Count() == 0) { TRACES("RefreshL EGL_NOK_resource_profiling not available"); return; } - if (eglQueryProfilingData) + if (eglQueryProfilingData) { EGLint data_count; EGLint* prof_data; @@ -206,7 +224,7 @@ } } } - + } // Refresh window group list // get all window groups, with info about parents TInt numGroups = iWs.NumWindowGroups();