import java.util.Collections;
import java.util.HashMap;
import java.util.List;
+import java.util.Timer;
import org.tizen.dynamicanalyzer.communicator.DACommunicator;
import org.tizen.dynamicanalyzer.handlers.ClearHandler;
import org.tizen.dynamicanalyzer.handlers.StartHandler;
import org.tizen.dynamicanalyzer.model.ImageInfo;
+import org.tizen.dynamicanalyzer.nl.ConfigureLabels;
import org.tizen.dynamicanalyzer.project.Project;
import org.tizen.dynamicanalyzer.swap.callstack.BaseCallstackManager;
import org.tizen.dynamicanalyzer.swap.callstack.SWAPCallStackManager;
import org.tizen.dynamicanalyzer.theme.DATheme;
import org.tizen.dynamicanalyzer.theme.DAThemeWhite;
import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackManager;
+import org.tizen.dynamicanalyzer.ui.info.snapshot.ScreenshotTimerTask;
import org.tizen.dynamicanalyzer.ui.page.BaseView;
import org.tizen.dynamicanalyzer.ui.page.DAPageComposite;
import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakDetector;
import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;
import org.tizen.dynamicanalyzer.ui.summary.warning.WarningChecker;
+import org.tizen.dynamicanalyzer.ui.toolbar.ConfigureManager;
import org.tizen.dynamicanalyzer.ui.toolbar.StopProcessManager;
+import org.tizen.dynamicanalyzer.ui.toolbar.configuration.ConfigurationDialogDataManager;
import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
import org.tizen.dynamicanalyzer.utils.ImageListSortComparator;
private static CallStackManager callstackManager = new CallStackManager();
private static SWAPCallStackManager swapCallstackManager = new SWAPCallStackManager();
+ private static Timer screenshotTimer = null;
+
private static boolean appInfoArrived = false;
private static boolean isHaveSampleThread = false;
private static boolean exit = false;
return theme;
}
- //theme deplicated
-// public static void setTheme(DATheme t) {
-// theme = t;
-// ColorResources.initColors();
-//
-// // redraw all widgets!
-// }
+ // theme deplicated
+ // public static void setTheme(DATheme t) {
+ // theme = t;
+ // ColorResources.initColors();
+ //
+ // // redraw all widgets!
+ // }
public static boolean hasSampleThread() {
return isHaveSampleThread;
public static synchronized void decreaseProcessCount() {
processCount--;
}
+
+ public static synchronized void startScreenshotTimer() {
+ stopScreenshotTimer();
+ ConfigureManager configureManager = ConfigurationDialogDataManager
+ .getInstance().getConfigureManager();
+ String state = configureManager
+ .getValue(ConfigureLabels.FEATURE_SCREENSHOT);
+ long screenshot = AnalyzerUtil.addrToLong(state);
+ if (screenshot != 0) {
+ String screenshotAuto = configureManager
+ .getValue(ConfigureLabels.SNAPSHOT_PERIODIC_AUTO);
+ long period = 10000;
+ long auto = AnalyzerUtil.addrToLong(screenshotAuto);
+ if (auto == 0) {
+ String screenshotPeriod = configureManager
+ .getValue(ConfigureLabels.SNAPSHOT_PERIODIC);
+ try {
+ period = Long.parseLong(screenshotPeriod) * 1000;
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ }
+ }
+ screenshotTimer = new Timer();
+ screenshotTimer.scheduleAtFixedRate(new ScreenshotTimerTask(),
+ 1000, period);
+ }
+ }
+
+ public static synchronized void stopScreenshotTimer() {
+ if (null != screenshotTimer) {
+ screenshotTimer.cancel();
+ screenshotTimer = null;
+ }
+ }
}
import java.util.HashMap;
import java.util.List;
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
+import org.tizen.dynamicanalyzer.nl.ConfigureLabels;
+import org.tizen.dynamicanalyzer.swap.channel.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.model.data.LogData;
import org.tizen.dynamicanalyzer.swap.model.data.ProbeCommonData;
+import org.tizen.dynamicanalyzer.ui.toolbar.ConfigureManager;
+import org.tizen.dynamicanalyzer.ui.toolbar.configuration.ConfigurationDialogDataManager;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
public class LeakDetector {
public final static int API_TYPE_OPEN = 0;
// return leakCheckHash;
// }
+ private boolean isDropLog(LogData logData) {
+ ConfigureManager configureManager = ConfigurationDialogDataManager
+ .getInstance().getConfigureManager();
+ int id = logData.getId();
+ String statStr = null;
+ switch (id) {
+ case DataChannelConstants.MSG_PROBE_FILE:
+ statStr = configureManager
+ .getValue(ConfigureLabels.INCLUDE_INSIDE_CALL_FILE);
+ break;
+ case DataChannelConstants.MSG_PROBE_MEMORY:
+ statStr = configureManager
+ .getValue(ConfigureLabels.INCLUDE_INSIDE_CALL_MEMORY);
+ break;
+ case DataChannelConstants.MSG_PROBE_THREAD:
+ statStr = configureManager
+ .getValue(ConfigureLabels.INCLUDE_INSIDE_CALL_THREAD);
+ break;
+ default:
+ break;
+ }
+
+ long state = AnalyzerUtil.addrToLong(statStr);
+ if (state != AnalyzerConstants.FEATURE_OFF) {
+ // feature on
+ return false;
+ }
+ return true;
+ // feature on : false
+ // feature off : true
+ }
+
public void runLeakDectect(LogData logData) {
ProbeCommonData log = (ProbeCommonData) logData;
String apiName = log.getApiName();
return;
}
- if (log.isInternal()) {
+ if (isDropLog(logData) && log.isInternal()) {
+ System.out.println("drop log " + log.getApiName() + " check "
+ + log.getInternalCall());
return;
}
- // step 1 : check "open" or "close"
- // Check chk; // 0: open , 1: close
- // if (null == getLeakCheckHash().get(apiName)) {
- // return;
- // } else {
- // chk = getLeakCheckHash().get(apiName);
- // }
LeakInfo chk = null;
if (null == LeakCheckList.getLeakCheckList().get(apiName)) {