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;
private final KernelDataMaker dataMaker = KernelDataMaker.getInstance();
+ private int savedSelectedPid = 0;
+
public ContextSwitchingChart(Composite parent, String title) {
super(parent, title);
}
@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);
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();
}
// 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);