[Title] exit exception bug fix
authorLee <jy.exe.lee@samsung.com>
Mon, 20 Aug 2012 06:26:24 +0000 (15:26 +0900)
committerLee <jy.exe.lee@samsung.com>
Mon, 20 Aug 2012 06:26:24 +0000 (15:26 +0900)
[Type] bug fix
[Module] Dynamic Analyzer
[Priority] major
[CQ#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase]

org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScale.java
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/timer/TimerClock.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/AnalyzerManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/DACommunicator.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/MessageProcess.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/ExitHandler.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/ProcessMemoryChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/LeakDetector.java

index 32be598..55c699f 100644 (file)
@@ -46,8 +46,6 @@ public class DAScale extends Canvas {
        private int areaWidth = 0;
        private int areaHeight = 0;
 
-       private int mouseX;
-
        private boolean mouseDown = false;
 
        private Rectangle thumbRect = null;
@@ -55,9 +53,6 @@ public class DAScale extends Canvas {
        private Rectangle leftRect= null;
        private Rectangle rightRect= null;
 
-       private Color bgColor;
-       private Color thumbColor;
-
        public DAScale(Composite parent, int style) {
                super(parent, style);
                increment = 1;
@@ -283,7 +278,7 @@ public class DAScale extends Canvas {
                                if (mouseDown) {
                                        setSelectionInternal(event.x);
                                        thumbRect = getThumbRect(event.x);
-                                       mouseX = event.x;
+//                                     mouseX = event.x;
                                        redraw();
                                }
                        }
index 4263526..7d739eb 100644 (file)
@@ -188,7 +188,9 @@ public class TimerClock extends Canvas {
                                        @Override
                                        public void run() {
                                                time = System.currentTimeMillis() - startTime;
-                                               redraw();
+                                               if (null != timer) {
+                                                       redraw();
+                                               }
                                        }
                                });
                        }
@@ -197,9 +199,9 @@ public class TimerClock extends Canvas {
 
        public void stop() {
                if (null != timer) {
-                       System.out.println("timer canceled!! ");
                        timer.cancel();
                        timer = null;
+                       System.out.println("timer canceled!! ");
                }
        }
 
index d5dc98c..735a5a9 100755 (executable)
@@ -85,12 +85,19 @@ public class AnalyzerManager {
        private static String autoStartApplicationName = null;
 
        private static List<String> projectList = null;
-       
+
        private static boolean bReTraceStartFormIDE = false;
        static boolean bIDEConnetedStatus = false;
-       
-       
-       
+
+       static boolean exit = false;
+
+       public static boolean isExit() {
+               return exit;
+       }
+
+       public static void setExit(boolean e) {
+               exit = e;
+       }
 
        public static List<String> getProjectList() {
                if (null == projectList) {
@@ -111,7 +118,7 @@ public class AnalyzerManager {
 
        public static DATheme getTheme() {
                if (null == theme) {
-//                      theme = DAThemeBlack.getInstance();
+                       // theme = DAThemeBlack.getInstance();
                        theme = DAThemeWhite.getInstance();
                }
                return theme;
@@ -310,7 +317,8 @@ public class AnalyzerManager {
                        }
                        List<BaseLogCenter> baseLogcs = AnalyzerManager.getBaseLogCenters();
                        if (null == baseLogcs || baseLogcs.isEmpty()) {
-                               System.out.println("DynamicAnalyzer folder or logc file is missing! ");//$NON-NLS-1$
+                               System.out
+                                               .println("DynamicAnalyzer folder or logc file is missing! ");//$NON-NLS-1$
                                return null;
                        }
                        int size = baseLogcs.size();
@@ -406,7 +414,7 @@ public class AnalyzerManager {
        }
 
        public static LeakDetector getLeakDectector() {
-               
+
                if (leakDetector == null) {
                        leakDetector = new LeakDetector();
                }
@@ -434,7 +442,7 @@ public class AnalyzerManager {
                return functionUserProfiler;
        }
 
-       public static void recordStart() {              
+       public static void recordStart() {
                Display.getDefault().syncExec(new Runnable() {
                        @Override
                        public void run() {
@@ -471,23 +479,22 @@ public class AnalyzerManager {
                /* Timeline */
                UpdateViewTimer.start();
        }
-       
-       
+
        public static void recordStartFormIde(String deviceName, String appName) {
 
                String state = AnalyzerUtil.getRecordState();
                if (state.equals(RecordStateSourceProvider.RECORD_RECORDING)) {
                        CoolbarArea.getInstance().StopTraceButton();
-                       SetTraceConfig( deviceName , appName );
+                       SetTraceConfig(deviceName, appName);
                        bReTraceStartFormIDE = true;
-                       
+
                } else {
-                       SetTraceConfig( deviceName , appName );
+                       SetTraceConfig(deviceName, appName);
                        CoolbarArea.getInstance().StartTraceButton();
                }
        }
-       
-       static void SetTraceConfig( String deviceName, String appName ){
+
+       static void SetTraceConfig(String deviceName, String appName) {
                setAutoStartDeviceName(deviceName);
                setAutoStartApplicationName(appName);
                CoolbarArea.getInstance().setDeviceComboText(deviceName);
@@ -495,13 +502,12 @@ public class AnalyzerManager {
        }
 
        public static void recordStartWaitEndDlg() {
-               if ( bReTraceStartFormIDE == true ){
+               if (bReTraceStartFormIDE == true) {
                        CoolbarArea.getInstance().StartTraceButton();
                        bReTraceStartFormIDE = false;
                }
        }
 
-
        public static void recordStop() {
                if (ResourceCommunicator.isRunning()) {
                        ResourceCommunicator.setCallStop(true);
@@ -579,9 +585,10 @@ public class AnalyzerManager {
        }
 
        public static void runStopLogProcessThread() {
-               
-               System.out.print("runStopLogProcessThread " +StopLogProcessThread.count+"\n" );
-               if (StopLogProcessThread.count <=  0) {
+
+               System.out.print("runStopLogProcessThread "
+                               + StopLogProcessThread.count + "\n");
+               if (StopLogProcessThread.count <= 0) {
                        StopLogProcessThread.count = 0;
                        StopLogProcessThread.count++;
                        stopLogProcessThread = new Thread(null, new StopLogProcessThread(),
@@ -593,7 +600,8 @@ public class AnalyzerManager {
        public static void runStartStopThread() {
                if (RecordStartStopThread.count == 0) {
                        RecordStartStopThread.count++;
-                       startStopThread = new Thread(null, new RecordStartStopThread(),AnalyzerConstants.START_STOP_THREAD);
+                       startStopThread = new Thread(null, new RecordStartStopThread(),
+                                       AnalyzerConstants.START_STOP_THREAD);
                        startStopThread.start();
                }
        }
@@ -607,7 +615,7 @@ public class AnalyzerManager {
                return false;
        }
 
-       public static void setAutoStartDeviceName(String device) {              
+       public static void setAutoStartDeviceName(String device) {
                autoStartDeviceName = device;
        }
 
index 9bab9ea..9e0bdb0 100644 (file)
@@ -255,11 +255,11 @@ public class DACommunicator {
                }
 
                // /*** dont delete for debug ***/
-               for (int i = 0; i < appDesktopList.size(); i++) {
-                       AppDesktopInfo info = appDesktopList.get(i);
-                       System.out.println("name " + info.getName() + "  path : "
-                                       + info.getExecPath());
-               }
+//             for (int i = 0; i < appDesktopList.size(); i++) {
+//                     AppDesktopInfo info = appDesktopList.get(i);
+//                     System.out.println("name " + info.getName() + "  path : "
+//                                     + info.getExecPath());
+//             }
 
                return appDesktopList;
        }
index 89d7475..fb7a4ab 100644 (file)
@@ -34,7 +34,6 @@ import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
 import org.tizen.dynamicanalyzer.timeline.TimelineMaster;
 import org.tizen.dynamicanalyzer.ui.views.CoolbarArea;
 import org.tizen.dynamicanalyzer.utils.FunctionUsageProfiler;
-
 import org.tizen.sdblib.SyncService;
 import org.tizen.sdblib.SyncService.SyncResult;
 
@@ -209,11 +208,14 @@ public class MessageProcess {
 
        private void processTerminate() {
                DACommunicator.setRunning(false);
+
                Display.getDefault().syncExec(new Runnable() {
                        @Override
                        public void run() {
-                               StateManager.getInstance().stopProcessStart(
-                                               AnalyzerLabels.STOP_PROCESS_DLG_SUMMARIZING_DATA);
+                               if (!AnalyzerManager.isExit()) {
+                                       StateManager.getInstance().stopProcessStart(
+                                                       AnalyzerLabels.STOP_PROCESS_DLG_SUMMARIZING_DATA);
+                               }
                        }
                });
 
@@ -303,9 +305,11 @@ public class MessageProcess {
                        Display.getDefault().syncExec(new Runnable() {
                                @Override
                                public void run() {
-                                       StateManager.getInstance().stopProcessStart(
-                                                       AnalyzerLabels.STOP_PROCESS_DLG_DEVICE_DISCONNECTED); // socket
-                                                                                                                                               // timeout
+                                       StateManager
+                                                       .getInstance()
+                                                       .stopProcessStart(
+                                                                       AnalyzerLabels.STOP_PROCESS_DLG_DEVICE_DISCONNECTED); // socket
+                                       // timeout
                                }
                        });
                        System.out
@@ -314,11 +318,16 @@ public class MessageProcess {
 
                } finally {
                        message = null;
+
                        Display.getDefault().syncExec(new Runnable() {
                                @Override
                                public void run() {
-                                       StateManager.getInstance().stopProcessStart(
-                                                       AnalyzerLabels.STOP_PROCESS_DLG_SUMMARIZING_DATA);
+                                       if (!AnalyzerManager.isExit()) {
+                                               StateManager
+                                                               .getInstance()
+                                                               .stopProcessStart(
+                                                                               AnalyzerLabels.STOP_PROCESS_DLG_SUMMARIZING_DATA);
+                                       }
                                }
                        });
                        addBufferToList();
index 26590f6..dd5e36e 100644 (file)
@@ -15,6 +15,7 @@ public class ExitHandler extends AbstractHandler {
 
        @Override
        public Object execute(ExecutionEvent event) throws ExecutionException {
+               AnalyzerManager.setExit(true);
                CoolbarArea.getInstance().stopTimer();
                UpdateViewTimer.stop();
                AnalyzerManager.stopLogQueueObservingThread();
index 3550f63..3629465 100644 (file)
@@ -48,7 +48,7 @@ import org.tizen.dynamicanalyzer.utils.TimelineUtils;
 
 public class ProcessMemoryChart extends TimelineChart {
        private static ProcessMemoryChart instance = null;
-       
+
        private double chartMaxVal = 0;
        private boolean needUpdateChartRange = false;
 
@@ -57,49 +57,55 @@ public class ProcessMemoryChart extends TimelineChart {
        private SeriesDataSet PSSMemorySeriesDataSet = null;
 
        public static ProcessMemoryChart getInstance() {
-               if(instance == null) {
+               if (instance == null) {
                        instance = new ProcessMemoryChart();
                }
-               
+
                return instance;
        }
-       
+
        private ProcessMemoryChart() {
                chartType = TimelineConstants.CHART_TYPE_PROCESS_MEMORY;
                chartName = TimelineChartLabels.PROCESS_MEMORY_CHART_TITLE;
                chartIcon = ImageResources.CHART_PROCESS_MEMORY;
                addIcon = ImageResources.ADD_CHART_PROCESS_MEMORY;
-               
+
                /* VSS */
                if (VSSMemorySeriesDataSet == null) {
                        VSSMemorySeriesDataSet = new SeriesDataSet();
-                       VSSMemorySeriesDataSet.baseSeries = new XYSeries(TimelineChartLabels.PROCESS_MEMORY_CHART_VSS);
+                       VSSMemorySeriesDataSet.baseSeries = new XYSeries(
+                                       TimelineChartLabels.PROCESS_MEMORY_CHART_VSS);
                        VSSMemorySeriesDataSet.newXYDataItems = new Vector<XYDataItem>();
                }
 
                /* RSS */
                if (RSSMemorySeriesDataSet == null) {
                        RSSMemorySeriesDataSet = new SeriesDataSet();
-                       RSSMemorySeriesDataSet.baseSeries = new XYSeries(TimelineChartLabels.PROCESS_MEMORY_CHART_RSS);
+                       RSSMemorySeriesDataSet.baseSeries = new XYSeries(
+                                       TimelineChartLabels.PROCESS_MEMORY_CHART_RSS);
                        RSSMemorySeriesDataSet.newXYDataItems = new Vector<XYDataItem>();
                }
-               
-               
+
                /* PSS */
                if (PSSMemorySeriesDataSet == null) {
                        PSSMemorySeriesDataSet = new SeriesDataSet();
-                       PSSMemorySeriesDataSet.baseSeries = new XYSeries(TimelineChartLabels.PROCESS_MEMORY_CHART_PSS);
+                       PSSMemorySeriesDataSet.baseSeries = new XYSeries(
+                                       TimelineChartLabels.PROCESS_MEMORY_CHART_PSS);
                        PSSMemorySeriesDataSet.newXYDataItems = new Vector<XYDataItem>();
                }
        }
-       
+
        @Override
        public JFreeChart createChart() {
-               XYSeriesCollection memorySeriesCollection = new XYSeriesCollection(PSSMemorySeriesDataSet.baseSeries);
+               XYSeriesCollection memorySeriesCollection = new XYSeriesCollection(
+                               PSSMemorySeriesDataSet.baseSeries);
                memorySeriesCollection.addSeries(RSSMemorySeriesDataSet.baseSeries);
                memorySeriesCollection.addSeries(VSSMemorySeriesDataSet.baseSeries);
 
-               chart = ChartFactory.createXYAreaChart(TimelineChartLabels.PROCESS_MEMORY_CHART_TITLE, "Time", "byte", memorySeriesCollection, PlotOrientation.VERTICAL, false, false, false); //$NON-NLS-2$ //$NON-NLS-1$
+               chart = ChartFactory
+                               .createXYAreaChart(
+                                               TimelineChartLabels.PROCESS_MEMORY_CHART_TITLE,
+                                               "Time", "byte", memorySeriesCollection, PlotOrientation.VERTICAL, false, false, false); //$NON-NLS-2$ //$NON-NLS-1$
 
                setChartStyle();
 
@@ -111,75 +117,90 @@ public class ProcessMemoryChart extends TimelineChart {
 
                return chart;
        }
-       
+
        private void setSeriesRendering(XYPlot xyplot) {
-               XYAreaRenderer renderer = (XYAreaRenderer)xyplot.getRenderer();
-               renderer.setSeriesPaint(0, SWTUtils.toAwtColor(ColorResources.SERIESE_COLOR_PROCESS_PSS));
-               renderer.setSeriesPaint(1, SWTUtils.toAwtColor(ColorResources.SERIESE_COLOR_PROCESS_RSS));
-               renderer.setSeriesPaint(2, SWTUtils.toAwtColor(ColorResources.SERIESE_COLOR_PROCESS_VSS));
+               XYAreaRenderer renderer = (XYAreaRenderer) xyplot.getRenderer();
+               renderer.setSeriesPaint(0,
+                               SWTUtils.toAwtColor(ColorResources.SERIESE_COLOR_PROCESS_PSS));
+               renderer.setSeriesPaint(1,
+                               SWTUtils.toAwtColor(ColorResources.SERIESE_COLOR_PROCESS_RSS));
+               renderer.setSeriesPaint(2,
+                               SWTUtils.toAwtColor(ColorResources.SERIESE_COLOR_PROCESS_VSS));
        }
-       
+
        @Override
        public List<XYSeries> getBaseSeriesList() {
                ArrayList<XYSeries> seriesList = new ArrayList<XYSeries>();
                seriesList.add(VSSMemorySeriesDataSet.baseSeries);
                seriesList.add(RSSMemorySeriesDataSet.baseSeries);
                seriesList.add(PSSMemorySeriesDataSet.baseSeries);
-               
+
                return seriesList;
        }
-       
+
        @Override
        public List<Color> getSeriesColorList() {
                ArrayList<Color> seriesColorList = new ArrayList<Color>();
-               seriesColorList.add(SWTUtils.toAwtColor(ColorResources.SERIESE_COLOR_PROCESS_VSS));
-               seriesColorList.add(SWTUtils.toAwtColor(ColorResources.SERIESE_COLOR_PROCESS_RSS));
-               seriesColorList.add(SWTUtils.toAwtColor(ColorResources.SERIESE_COLOR_PROCESS_PSS));
-               
+               seriesColorList.add(SWTUtils
+                               .toAwtColor(ColorResources.SERIESE_COLOR_PROCESS_VSS));
+               seriesColorList.add(SWTUtils
+                               .toAwtColor(ColorResources.SERIESE_COLOR_PROCESS_RSS));
+               seriesColorList.add(SWTUtils
+                               .toAwtColor(ColorResources.SERIESE_COLOR_PROCESS_PSS));
+
                return seriesColorList;
        }
-       
+
        @Override
        public String getTooltipContent(int index, double yValue) {
                StringBuilder returnString = new StringBuilder();
-               
-               return returnString.append(getSeriesNameList().get(index)).append(" : ").append(Formatter.toByteFormat((long)yValue)).toString(); //$NON-NLS-1$
+
+               return returnString
+                               .append(getSeriesNameList().get(index))
+                               .append(" : ").append(Formatter.toByteFormat((long) yValue)).toString(); //$NON-NLS-1$
        }
-       
+
        private List<String> getSeriesNameList() {
                ArrayList<String> seriesNameList = new ArrayList<String>();
                seriesNameList.add(TimelineChartLabels.PROCESS_MEMORY_CHART_VSS);
                seriesNameList.add(TimelineChartLabels.PROCESS_MEMORY_CHART_RSS);
                seriesNameList.add(TimelineChartLabels.PROCESS_MEMORY_CHART_PSS);
-               
+
                return seriesNameList;
        }
-       
+
        @SuppressWarnings("unchecked")
        @Override
        public void update() {
                Display.getDefault().asyncExec(new Runnable() {
                        public void run() {
-                               Vector<XYDataItem> tempXYDataItems = (Vector<XYDataItem>) VSSMemorySeriesDataSet.newXYDataItems.clone();
+                               Vector<XYDataItem> tempXYDataItems = (Vector<XYDataItem>) VSSMemorySeriesDataSet.newXYDataItems
+                                               .clone();
                                VSSMemorySeriesDataSet.newXYDataItems.clear();
                                for (XYDataItem xyDataItem : tempXYDataItems) {
                                        VSSMemorySeriesDataSet.baseSeries.add(xyDataItem);
                                }
 
-                               tempXYDataItems = (Vector<XYDataItem>) RSSMemorySeriesDataSet.newXYDataItems.clone();
+                               tempXYDataItems = (Vector<XYDataItem>) RSSMemorySeriesDataSet.newXYDataItems
+                                               .clone();
                                RSSMemorySeriesDataSet.newXYDataItems.clear();
                                for (XYDataItem xyDataItem : tempXYDataItems) {
                                        RSSMemorySeriesDataSet.baseSeries.add(xyDataItem);
                                }
-                               
-                               tempXYDataItems = (Vector<XYDataItem>) PSSMemorySeriesDataSet.newXYDataItems.clone();
+
+                               tempXYDataItems = (Vector<XYDataItem>) PSSMemorySeriesDataSet.newXYDataItems
+                                               .clone();
                                PSSMemorySeriesDataSet.newXYDataItems.clear();
                                for (XYDataItem xyDataItem : tempXYDataItems) {
                                        PSSMemorySeriesDataSet.baseSeries.add(xyDataItem);
                                }
-                               
-                               if(needUpdateChartRange) {
-                                       chart.getXYPlot().getRangeAxis().setRange(new Range(0, chartMaxVal / TempConstants.chartRangeRatio));
+
+                               if (needUpdateChartRange) {
+                                       chart.getXYPlot()
+                                                       .getRangeAxis()
+                                                       .setRange(
+                                                                       new Range(0, chartMaxVal
+                                                                                       / TempConstants.chartRangeRatio));
                                        needUpdateChartRange = false;
                                }
                        }
@@ -195,7 +216,7 @@ public class ProcessMemoryChart extends TimelineChart {
                chart.getXYPlot().getRangeAxis().setRange(new Range(0, 0));
                chartMaxVal = 0;
                needUpdateChartRange = false;
-               
+
                Display.getDefault().asyncExec(new Runnable() {
                        @Override
                        public void run() {
@@ -210,14 +231,26 @@ public class ProcessMemoryChart extends TimelineChart {
        @Override
        public void dispose() {
                try {
-                       VSSMemorySeriesDataSet.baseSeries = VSSMemorySeriesDataSet.baseSeries.createCopy(0, VSSMemorySeriesDataSet.baseSeries.getItemCount() - 1);
-                       VSSMemorySeriesDataSet.newXYDataItems = (Vector<XYDataItem>) VSSMemorySeriesDataSet.newXYDataItems.clone();
-                       
-                       RSSMemorySeriesDataSet.baseSeries = RSSMemorySeriesDataSet.baseSeries.createCopy(0, RSSMemorySeriesDataSet.baseSeries.getItemCount() - 1);
-                       RSSMemorySeriesDataSet.newXYDataItems = (Vector<XYDataItem>) RSSMemorySeriesDataSet.newXYDataItems.clone();
-                       
-                       PSSMemorySeriesDataSet.baseSeries = PSSMemorySeriesDataSet.baseSeries.createCopy(0, PSSMemorySeriesDataSet.baseSeries.getItemCount() - 1);
-                       PSSMemorySeriesDataSet.newXYDataItems = (Vector<XYDataItem>) PSSMemorySeriesDataSet.newXYDataItems.clone();
+                       VSSMemorySeriesDataSet.baseSeries = VSSMemorySeriesDataSet.baseSeries
+                                       .createCopy(
+                                                       0,
+                                                       VSSMemorySeriesDataSet.baseSeries.getItemCount() - 1);
+                       VSSMemorySeriesDataSet.newXYDataItems = (Vector<XYDataItem>) VSSMemorySeriesDataSet.newXYDataItems
+                                       .clone();
+
+                       RSSMemorySeriesDataSet.baseSeries = RSSMemorySeriesDataSet.baseSeries
+                                       .createCopy(
+                                                       0,
+                                                       RSSMemorySeriesDataSet.baseSeries.getItemCount() - 1);
+                       RSSMemorySeriesDataSet.newXYDataItems = (Vector<XYDataItem>) RSSMemorySeriesDataSet.newXYDataItems
+                                       .clone();
+
+                       PSSMemorySeriesDataSet.baseSeries = PSSMemorySeriesDataSet.baseSeries
+                                       .createCopy(
+                                                       0,
+                                                       PSSMemorySeriesDataSet.baseSeries.getItemCount() - 1);
+                       PSSMemorySeriesDataSet.newXYDataItems = (Vector<XYDataItem>) PSSMemorySeriesDataSet.newXYDataItems
+                                       .clone();
                } catch (CloneNotSupportedException e) {
                        e.printStackTrace();
                }
@@ -225,10 +258,10 @@ public class ProcessMemoryChart extends TimelineChart {
 
        @Override
        public void parsingLogPackage(LogPackage logPack, int probeType) {
-               if(!isAbleToParse(logPack, probeType)) {
+               if (!isAbleToParse(logPack, probeType)) {
                        return;
                }
-               
+
                Logs logs = logPack.getLogs(probeType);
                List<List<String>> logList = logs.getLogs();
                for (int i = 0; i < logList.size(); i++) {
@@ -247,8 +280,13 @@ public class ProcessMemoryChart extends TimelineChart {
                        double value = 0;
 
                        try {
-                               time = TimelineUtils.transformLogTimeIntoTimelineTime(Double.parseDouble(log.get(LogCenterConstants.DEVICE_TIME_INDEX))) / TimelineConstants.TIME_US_TO_MS / TimelineConstants.TIME_US_TO_MS;
-                               value = Double.parseDouble(log.get(LogCenterConstants.DEVICE_VSS_MEMORY_INDEX));
+                               time = TimelineUtils.transformLogTimeIntoTimelineTime(Double
+                                               .parseDouble(log
+                                                               .get(LogCenterConstants.DEVICE_TIME_INDEX)))
+                                               / TimelineConstants.TIME_US_TO_MS
+                                               / TimelineConstants.TIME_US_TO_MS;
+                               value = Double.parseDouble(log
+                                               .get(LogCenterConstants.DEVICE_VSS_MEMORY_INDEX));
                        } catch (NumberFormatException ne) {
                                ne.printStackTrace();
                        } catch (NullPointerException ne) {
@@ -257,8 +295,9 @@ public class ProcessMemoryChart extends TimelineChart {
                                e.printStackTrace();
                        }
 
-                       VSSMemorySeriesDataSet.newXYDataItems.add(new XYDataItem(time, value));
-                       if(chartMaxVal < value) {
+                       VSSMemorySeriesDataSet.newXYDataItems.add(new XYDataItem(time,
+                                       value));
+                       if (chartMaxVal < value) {
                                chartMaxVal = value;
                                needUpdateChartRange = true;
                        }
@@ -270,8 +309,12 @@ public class ProcessMemoryChart extends TimelineChart {
                        double value = 0;
 
                        try {
-                               time = Long.parseLong(log.get(LogCenterConstants.DEVICE_TIME_INDEX)) / TimelineConstants.TIME_US_TO_MS / TimelineConstants.TIME_US_TO_MS;
-                               value = Double.parseDouble(log.get(LogCenterConstants.DEVICE_RSS_MEMORY_INDEX));
+                               time = Long.parseLong(log
+                                               .get(LogCenterConstants.DEVICE_TIME_INDEX))
+                                               / TimelineConstants.TIME_US_TO_MS
+                                               / TimelineConstants.TIME_US_TO_MS;
+                               value = Double.parseDouble(log
+                                               .get(LogCenterConstants.DEVICE_RSS_MEMORY_INDEX));
                        } catch (NumberFormatException ne) {
                                ne.printStackTrace();
                        } catch (NullPointerException ne) {
@@ -280,17 +323,22 @@ public class ProcessMemoryChart extends TimelineChart {
                                e.printStackTrace();
                        }
 
-                       RSSMemorySeriesDataSet.newXYDataItems.add(new XYDataItem(time, value));
+                       RSSMemorySeriesDataSet.newXYDataItems.add(new XYDataItem(time,
+                                       value));
                }
-               
+
                /* PSS */
                if (!log.get(LogCenterConstants.DEVICE_PSS_MEMORY_INDEX).isEmpty()) {
                        long time = 0;
                        double value = 0;
 
                        try {
-                               time = Long.parseLong(log.get(LogCenterConstants.DEVICE_TIME_INDEX)) / TimelineConstants.TIME_US_TO_MS / TimelineConstants.TIME_US_TO_MS;
-                               value = Double.parseDouble(log.get(LogCenterConstants.DEVICE_PSS_MEMORY_INDEX));
+                               time = Long.parseLong(log
+                                               .get(LogCenterConstants.DEVICE_TIME_INDEX))
+                                               / TimelineConstants.TIME_US_TO_MS
+                                               / TimelineConstants.TIME_US_TO_MS;
+                               value = Double.parseDouble(log
+                                               .get(LogCenterConstants.DEVICE_PSS_MEMORY_INDEX));
                        } catch (NumberFormatException ne) {
                                ne.printStackTrace();
                        } catch (NullPointerException ne) {
@@ -299,7 +347,8 @@ public class ProcessMemoryChart extends TimelineChart {
                                e.printStackTrace();
                        }
 
-                       PSSMemorySeriesDataSet.newXYDataItems.add(new XYDataItem(time, value));
+                       PSSMemorySeriesDataSet.newXYDataItems.add(new XYDataItem(time,
+                                       value));
                }
        }
 }
index 73ad89c..7399da8 100644 (file)
@@ -158,6 +158,10 @@ public class LeakDetector {
                HashMap<Long, CallStackUnit> addrMap = CallStackManager.getInstance()
                                .getCallStackApiByAddrMap();
 
+               if (null == cdMap || null == addrMap) {
+                       return;
+               }
+
                int seqNum = Integer
                                .parseInt(input[LogCenterConstants.SEQUENCE_NUMBER_INDEX]);
                CallStackData csd = cdMap.get(seqNum);
@@ -165,10 +169,11 @@ public class LeakDetector {
                try {
                        addrs = csd.getAddrs();
                } catch (Exception e) {
-//                     for (int i = 0; i < input.length; i++)
-//                             System.out.print(input[i] + "  ");
-//                     System.out.println();
-//                     e.printStackTrace();
+                       System.out.println("no callstack : ");
+                       for (int i = 0; i < input.length; i++)
+                               System.out.print(input[i] + "  ");
+                       System.out.println();
+                       // e.printStackTrace();
                        return;
                }
                if (addrs.isEmpty() || addrs.size() < 3) {