[Title] fix kernel page chart for multi-process selection
authorgreatim <jaewon81.lim@samsung.com>
Wed, 22 Jan 2014 08:52:22 +0000 (17:52 +0900)
committergreatim <jaewon81.lim@samsung.com>
Wed, 22 Jan 2014 08:52:22 +0000 (17:52 +0900)
[Desc.]
[Issue]

org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChartView.java

index 484fbbd..965e43f 100644 (file)
@@ -49,6 +49,7 @@ import org.tizen.dynamicanalyzer.ui.kernel.data.KernelDataPerThread;
 import org.tizen.dynamicanalyzer.ui.kernel.data.KernelDataPerThreadComparator;
 import org.tizen.dynamicanalyzer.ui.kernel.data.KernelSelectionData;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
+import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;
 import org.tizen.dynamicanalyzer.widgets.chart.DAChart;
 import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot;
 import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotTooltip;
@@ -66,6 +67,8 @@ public class ContextSwitchingChart extends DAChartBoard {
 
        private final KernelDataMaker dataMaker = KernelDataMaker.getInstance();
 
+       private int savedSelectedPid = 0;
+
        public ContextSwitchingChart(Composite parent, String title) {
                super(parent, title);
        }
@@ -81,26 +84,27 @@ public class ContextSwitchingChart extends DAChartBoard {
 
        @Override
        protected void callBackScaleChanged() {
-               updateChart(false);
+               updateChart();
                super.callBackScaleChanged();
        }
 
        @Override
        protected void callBackScrollChanged() {
-               updateChart(false);
+               updateChart();
                super.callBackScrollChanged();
        }
 
        @Override
        protected void callBackSizeChanged() {
                layout(true, true);
-               updateChart(false);
+               updateChart();
                super.callBackSizeChanged();
        }
 
-       public void updateChart(boolean rearrange) {
+       public void updateChart() {
                List<KernelDataPerThread> threads = dataMaker.getThreadData();
                int thread_size = threads.size();
+               boolean isDirty = false;
 
                for (int i = 0; i < thread_size; i++) {
                        KernelDataPerThread kdata = threads.get(i);
@@ -120,6 +124,7 @@ public class ContextSwitchingChart extends DAChartBoard {
                                coreItem.setData(new KernelSelectionData(kdata,
                                                KernelSelectionData.KERNEL_DATA_TYPE_CONTEXTSWITCH));
                                kdata.setContextChart(coreItem);
+                               isDirty = true;
                        } else {
                                // delete previous drawing items
                                bitem.getChart().getSeries(0).clear();
@@ -149,10 +154,32 @@ public class ContextSwitchingChart extends DAChartBoard {
                }
 
                // rearrange items
-               if (rearrange) {
+               if (isDirty) {
                        rearrangeChart();
                }
 
+               // filtering by pid
+               int selectedPid = ToolbarArea.getInstance().getSelectedPid();
+               if (isDirty || savedSelectedPid != selectedPid) {
+                       DAChartBoardItemList itemlist = getItemList();
+                       thread_size = itemlist.getItemSize();
+                       for (int i = 0; i < thread_size; i++) {
+                               if (selectedPid != 0) {
+                                       DAChartBoardItem item = itemlist.get(i);
+                                       KernelSelectionData seldata = (KernelSelectionData) item
+                                                       .getData();
+                                       if (seldata.getData().getPid() == selectedPid) {
+                                               showItem(i);
+                                       } else {
+                                               hideItem(i);
+                                       }
+                               } else {
+                                       showItem(i);
+                               }
+                       }
+                       savedSelectedPid = selectedPid;
+               }
+
                // get data from database and add new item to series
                long starttime = (long) (getVisibleStartTime() * TimelineConstants.MEGA_DOUBLE);
                long endtime = (long) (getVisibleEndTime() * TimelineConstants.MEGA_DOUBLE);
index 8e756d2..f800efd 100755 (executable)
@@ -159,7 +159,7 @@ public class ContextSwitchingChartView extends DAView {
 
        @Override
        public void updateView() {
-               contextChart.updateChart(true);
+               contextChart.updateChart();
 
                // set chart end time
                contextChart.setTotalEndTime(ToolbarArea.getInstance().getTime());