From c4fe978385bd2bde1020770594803d389c6fcb0d Mon Sep 17 00:00:00 2001 From: greatim Date: Wed, 22 Jan 2014 17:52:22 +0900 Subject: [PATCH] [Title] fix kernel page chart for multi-process selection [Desc.] [Issue] --- .../ui/kernel/ContextSwitchingChart.java | 37 +++++++++++++++++++--- .../ui/kernel/ContextSwitchingChartView.java | 2 +- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChart.java index 484fbbd..965e43f 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChart.java @@ -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 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); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChartView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChartView.java index 8e756d2..f800efd 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChartView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChartView.java @@ -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()); -- 2.7.4