From patchwork Fri Dec 14 12:52:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10760171 Return-Path: Received: from mail-eopbgr750048.outbound.protection.outlook.com ([40.107.75.48]:44920 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729816AbeLNMwj (ORCPT ); Fri, 14 Dec 2018 07:52:39 -0500 From: Yordan Karadzhov To: "rostedt@goodmis.org" CC: "linux-trace-devel@vger.kernel.org" Subject: [PATCH v2 1/8] kernel-shark-qt: Lock completely the searching panel when searching Date: Fri, 14 Dec 2018 12:52:34 +0000 Message-ID: <20181214125212.9637-2-ykaradzhov@vmware.com> References: <20181214125212.9637-1-ykaradzhov@vmware.com> In-Reply-To: <20181214125212.9637-1-ykaradzhov@vmware.com> Content-Language: en-US MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org List-ID: Content-Length: 2734 So far, when searching we lock only the text field of the searching panel. This may create a deadlock (as reported by Steven) in the case when the user presses "Next" or "Prev." button in the same time when a parallelized search is in progress. This patch aims to protect against such a deadlock by locking all components of the panel, except the "Stop search" button. The text panel gets locked only during the actual searching. Signed-off-by: Yordan Karadzhov --- kernel-shark-qt/src/KsTraceViewer.cpp | 27 +++++++++++++++++++-------- kernel-shark-qt/src/KsTraceViewer.hpp | 2 ++ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/kernel-shark-qt/src/KsTraceViewer.cpp b/kernel-shark-qt/src/KsTraceViewer.cpp index a308ea0..afb9892 100644 --- a/kernel-shark-qt/src/KsTraceViewer.cpp +++ b/kernel-shark-qt/src/KsTraceViewer.cpp @@ -306,18 +306,29 @@ static bool matchCond(const QString &searchText, const QString &itemText) return (itemText.compare(searchText, Qt::CaseInsensitive) == 0); } +void KsTraceViewer::_lockSearchPanel(bool lock) +{ + _columnComboBox.setEnabled(!lock); + _selectComboBox.setEnabled(!lock); + _searchLineEdit.setReadOnly(lock); + _prevButton.setEnabled(!lock); + _nextButton.setEnabled(!lock); + _graphFollowsCheckBox.setEnabled(!lock); +} + void KsTraceViewer::_search() { - /* Disable the user input until the search is done. */ - _searchLineEdit.setReadOnly(true); if (!_searchDone) { - int xColumn, xSelect; - QString xText; - /* * The search is not done. This means that the search settings * have been modified since the last time we searched. */ + int xColumn, xSelect; + QString xText; + + /* Disable the user input until the search is done. */ + _lockSearchPanel(true); + _matchList.clear(); xText = _searchLineEdit.text(); xColumn = _columnComboBox.currentIndex(); @@ -346,6 +357,9 @@ void KsTraceViewer::_search() if (_graphFollows) emit select(*_it); // Send a signal to the Graph widget. } + + /* Enable the user input. */ + _lockSearchPanel(false); } else { /* * If the search is done, pressing "Enter" is equivalent @@ -353,9 +367,6 @@ void KsTraceViewer::_search() */ this->_next(); } - - /* Enable the user input. */ - _searchLineEdit.setReadOnly(false); } void KsTraceViewer::_next() diff --git a/kernel-shark-qt/src/KsTraceViewer.hpp b/kernel-shark-qt/src/KsTraceViewer.hpp index 4e35c17..a89fce1 100644 --- a/kernel-shark-qt/src/KsTraceViewer.hpp +++ b/kernel-shark-qt/src/KsTraceViewer.hpp @@ -147,6 +147,8 @@ private: void _graphFollowsChanged(int); + void _lockSearchPanel(bool lock); + void _search(); void _next(); From patchwork Fri Dec 14 12:52:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10760183 Return-Path: Received: from mail-eopbgr750048.outbound.protection.outlook.com ([40.107.75.48]:44920 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729831AbeLNMwm (ORCPT ); Fri, 14 Dec 2018 07:52:42 -0500 From: Yordan Karadzhov To: "rostedt@goodmis.org" CC: "linux-trace-devel@vger.kernel.org" Subject: [PATCH v2 2/8] kernel-shark-qt: Fix a simple bug in KsTraceViewer::_searchReset() Date: Fri, 14 Dec 2018 12:52:35 +0000 Message-ID: <20181214125212.9637-3-ykaradzhov@vmware.com> References: <20181214125212.9637-1-ykaradzhov@vmware.com> In-Reply-To: <20181214125212.9637-1-ykaradzhov@vmware.com> Content-Language: en-US MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org List-ID: Most probably this is a copy-and-paste bug. Signed-off-by: Yordan Karadzhov --- kernel-shark-qt/src/KsTraceViewer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel-shark-qt/src/KsTraceViewer.cpp b/kernel-shark-qt/src/KsTraceViewer.cpp index afb9892..7f0f1e2 100644 --- a/kernel-shark-qt/src/KsTraceViewer.cpp +++ b/kernel-shark-qt/src/KsTraceViewer.cpp @@ -223,7 +223,7 @@ void KsTraceViewer::_searchReset() { _searchProgBar.setValue(0); _searchCountLabel.setText(""); - _proxyModel.searchProgress(); + _proxyModel.searchReset(); _searchDone = false; } From patchwork Fri Dec 14 12:52:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10760173 Return-Path: Received: from mail-eopbgr750048.outbound.protection.outlook.com ([40.107.75.48]:44920 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729832AbeLNMwo (ORCPT ); Fri, 14 Dec 2018 07:52:44 -0500 From: Yordan Karadzhov To: "rostedt@goodmis.org" CC: "linux-trace-devel@vger.kernel.org" Subject: [PATCH v2 3/8] kernel-shark-qt: Make the parallelized search stoppable Date: Fri, 14 Dec 2018 12:52:37 +0000 Message-ID: <20181214125212.9637-4-ykaradzhov@vmware.com> References: <20181214125212.9637-1-ykaradzhov@vmware.com> In-Reply-To: <20181214125212.9637-1-ykaradzhov@vmware.com> Content-Language: en-US MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org List-ID: Content-Length: 3261 So far only the single-threaded search inside the "Latency" and "Info" columns can be stopped by the "stop search" button. This patch makes it possible to stop also the parallelized search. Note that after stopping the parallelized search, the list of matches will contain entries which may not be consecutive, because each thread was searching in its own subset of the data and was stoped at an arbitrary position in this subset. Signed-off-by: Yordan Karadzhov --- kernel-shark-qt/src/KsModels.cpp | 6 +++++- kernel-shark-qt/src/KsModels.hpp | 5 ++++- kernel-shark-qt/src/KsTraceViewer.cpp | 19 ++++++++++++------- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/kernel-shark-qt/src/KsModels.cpp b/kernel-shark-qt/src/KsModels.cpp index d67ee62..c8cc410 100644 --- a/kernel-shark-qt/src/KsModels.cpp +++ b/kernel-shark-qt/src/KsModels.cpp @@ -80,7 +80,11 @@ void KsFilterProxyModel::_search(int column, matchList->append(row); if (_searchStop) { - _searchStop = false; + if (notify) { + _searchProgress = KS_PROGRESS_BAR_MAX; + _pbCond.notify_one(); + } + break; } diff --git a/kernel-shark-qt/src/KsModels.hpp b/kernel-shark-qt/src/KsModels.hpp index b66c259..08019e7 100644 --- a/kernel-shark-qt/src/KsModels.hpp +++ b/kernel-shark-qt/src/KsModels.hpp @@ -178,7 +178,10 @@ public: int searchProgress() const {return _searchProgress;} /** Reset the progress value of the search. */ - void searchReset() {_searchProgress = 0;} + void searchReset() { + _searchProgress = 0; + _searchStop = false; + } /** Stop the serch for all threads. */ void searchStop() {_searchStop = true;} diff --git a/kernel-shark-qt/src/KsTraceViewer.cpp b/kernel-shark-qt/src/KsTraceViewer.cpp index 7f0f1e2..aeed5f7 100644 --- a/kernel-shark-qt/src/KsTraceViewer.cpp +++ b/kernel-shark-qt/src/KsTraceViewer.cpp @@ -446,6 +446,7 @@ void KsTraceViewer::_searchStop() { _searchStopAction->setVisible(false); _proxyModel.searchStop(); + _lockSearchPanel(false); } void KsTraceViewer::_clicked(const QModelIndex& i) @@ -625,7 +626,6 @@ size_t KsTraceViewer::_searchItems(int column, { int count, dataRow; - _searchProgBar.show(); _pbAction->setVisible(true); if (_proxyModel.rowCount({}) < KS_SEARCH_SHOW_PROGRESS_MIN) { @@ -635,15 +635,20 @@ size_t KsTraceViewer::_searchItems(int column, */ _proxyModel.search(column, searchText, cond, &_matchList, nullptr, nullptr); - } else if (column == KsViewModel::TRACE_VIEW_COL_INFO || - column == KsViewModel::TRACE_VIEW_COL_LAT) { + } else { _searchStopAction->setVisible(true); - _proxyModel.search(column, searchText, cond, &_matchList, - &_searchProgBar, &_searchCountLabel); + + if (column == KsViewModel::TRACE_VIEW_COL_INFO || + column == KsViewModel::TRACE_VIEW_COL_LAT) { + _proxyModel.search(column, searchText, + cond, &_matchList, + &_searchProgBar, + &_searchCountLabel); + } else { + _searchItemsMapReduce(column, searchText, cond); + } _searchStopAction->setVisible(false); - } else { - _searchItemsMapReduce(column, searchText, cond); } count = _matchList.count(); From patchwork Fri Dec 14 12:52:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10760177 Return-Path: Received: from mail-eopbgr750048.outbound.protection.outlook.com ([40.107.75.48]:44920 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729846AbeLNMwp (ORCPT ); Fri, 14 Dec 2018 07:52:45 -0500 From: Yordan Karadzhov To: "rostedt@goodmis.org" CC: "linux-trace-devel@vger.kernel.org" Subject: [PATCH v2 4/8] kernel-shark-qt: Avoid spurious searches Date: Fri, 14 Dec 2018 12:52:38 +0000 Message-ID: <20181214125212.9637-5-ykaradzhov@vmware.com> References: <20181214125212.9637-1-ykaradzhov@vmware.com> In-Reply-To: <20181214125212.9637-1-ykaradzhov@vmware.com> Content-Language: en-US MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org List-ID: We do not want to search if the text field of search panel is empty. Most probably this is an accidental key press or mouse click. Signed-off-by: Yordan Karadzhov --- kernel-shark-qt/src/KsTraceViewer.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/kernel-shark-qt/src/KsTraceViewer.cpp b/kernel-shark-qt/src/KsTraceViewer.cpp index aeed5f7..971793f 100644 --- a/kernel-shark-qt/src/KsTraceViewer.cpp +++ b/kernel-shark-qt/src/KsTraceViewer.cpp @@ -331,6 +331,15 @@ void KsTraceViewer::_search() _matchList.clear(); xText = _searchLineEdit.text(); + if (xText.isEmpty()) { + /* + * No text is provided by the user. Most probably this + * is an accidental key press. Just reenable the input. + */ + _lockSearchPanel(false); + return; + } + xColumn = _columnComboBox.currentIndex(); xSelect = _selectComboBox.currentIndex(); From patchwork Fri Dec 14 12:52:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10760185 Return-Path: Received: from mail-eopbgr800084.outbound.protection.outlook.com ([40.107.80.84]:60384 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729816AbeLNMwn (ORCPT ); Fri, 14 Dec 2018 07:52:43 -0500 From: Yordan Karadzhov To: "rostedt@goodmis.org" CC: "linux-trace-devel@vger.kernel.org" Subject: [PATCH v2 5/8] kernel-shark-qt: Create "Apply filter XX" checkboxes in KsUtils Date: Fri, 14 Dec 2018 12:52:39 +0000 Message-ID: <20181214125212.9637-6-ykaradzhov@vmware.com> References: <20181214125212.9637-1-ykaradzhov@vmware.com> In-Reply-To: <20181214125212.9637-1-ykaradzhov@vmware.com> Content-Language: en-US MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org List-ID: Content-Length: 5766 The code responsible for the creation of the "Apply filters to Graph" and "Apply filters to List" checkboxes (showing in the "Filtering" menu), has been moved outside of the KsMainWindow class and is now available in KsUtils. This is done because we want to have the same checkboxes available in the KsQuickContextMenu. Signed-off-by: Yordan Karadzhov --- kernel-shark-qt/src/KsMainWindow.cpp | 39 +++++++++++++--------------- kernel-shark-qt/src/KsMainWindow.hpp | 6 ++--- kernel-shark-qt/src/KsUtils.cpp | 25 ++++++++++++++++++ kernel-shark-qt/src/KsUtils.hpp | 2 ++ 4 files changed, 47 insertions(+), 25 deletions(-) diff --git a/kernel-shark-qt/src/KsMainWindow.cpp b/kernel-shark-qt/src/KsMainWindow.cpp index 7213c01..142cd1f 100644 --- a/kernel-shark-qt/src/KsMainWindow.cpp +++ b/kernel-shark-qt/src/KsMainWindow.cpp @@ -49,9 +49,7 @@ KsMainWindow::KsMainWindow(QWidget *parent) _quitAction("Quit", this), _importFilterAction("Import Filter", this), _exportFilterAction("Export Filter", this), - _graphFilterSyncAction(this), _graphFilterSyncCBox(nullptr), - _listFilterSyncAction(this), _listFilterSyncCBox(nullptr), _showEventsAction("Show events", this), _showTasksAction("Show tasks", this), @@ -292,22 +290,13 @@ void KsMainWindow::_createMenus() /* Filter menu */ filter = menuBar()->addMenu("Filter"); + + connect(filter, &QMenu::aboutToShow, + this, &KsMainWindow::_updateFilterMenu); + filter->addAction(&_importFilterAction); filter->addAction(&_exportFilterAction); - auto lamMakeCBAction = [&](QWidgetAction *action, QString name) - { - QWidget *containerWidget = new QWidget(filter); - containerWidget->setLayout(new QHBoxLayout()); - containerWidget->layout()->setContentsMargins(FONT_WIDTH, FONT_HEIGHT/5, - FONT_WIDTH, FONT_HEIGHT/5); - QCheckBox *checkBox = new QCheckBox(name, filter); - checkBox->setChecked(true); - containerWidget->layout()->addWidget(checkBox); - action->setDefaultWidget(containerWidget); - return checkBox; - }; - /* * Set the default filter mask. Filter will apply to both View and * Graph. @@ -317,20 +306,20 @@ void KsMainWindow::_createMenus() kshark_ctx->filter_mask |= KS_EVENT_VIEW_FILTER_MASK; - _graphFilterSyncCBox = lamMakeCBAction(&_graphFilterSyncAction, - "Apply filters to Graph"); + _graphFilterSyncCBox = + KsUtils::addCheckBoxToMenu(filter, "Apply filters to Graph"); + _graphFilterSyncCBox->setChecked(true); connect(_graphFilterSyncCBox, &QCheckBox::stateChanged, this, &KsMainWindow::_graphFilterSync); - _listFilterSyncCBox = lamMakeCBAction(&_listFilterSyncAction, - "Apply filters to List"); + _listFilterSyncCBox = + KsUtils::addCheckBoxToMenu(filter, "Apply filters to List"); + _listFilterSyncCBox->setChecked(true); connect(_listFilterSyncCBox, &QCheckBox::stateChanged, this, &KsMainWindow::_listFilterSync); - filter->addAction(&_graphFilterSyncAction); - filter->addAction(&_listFilterSyncAction); filter->addAction(&_showEventsAction); filter->addAction(&_showTasksAction); filter->addAction(&_hideTasksAction); @@ -446,6 +435,14 @@ void KsMainWindow::_filterSyncCBoxUpdate(kshark_context *kshark_ctx) _graphFilterSyncCBox->setChecked(false); } +void KsMainWindow::_updateFilterMenu() +{ + kshark_context *kshark_ctx(nullptr); + + if (kshark_instance(&kshark_ctx)) + _filterSyncCBoxUpdate(kshark_ctx); +} + void KsMainWindow::_importFilter() { kshark_context *kshark_ctx(nullptr); diff --git a/kernel-shark-qt/src/KsMainWindow.hpp b/kernel-shark-qt/src/KsMainWindow.hpp index 72f7059..301acc9 100644 --- a/kernel-shark-qt/src/KsMainWindow.hpp +++ b/kernel-shark-qt/src/KsMainWindow.hpp @@ -110,12 +110,8 @@ private: QAction _exportFilterAction; - QWidgetAction _graphFilterSyncAction; - QCheckBox *_graphFilterSyncCBox; - QWidgetAction _listFilterSyncAction; - QCheckBox *_listFilterSyncCBox; QAction _showEventsAction; @@ -222,6 +218,8 @@ private: void _deselect(); + void _updateFilterMenu(); + void _filterSyncCBoxUpdate(kshark_context *kshark_ctx); private slots: diff --git a/kernel-shark-qt/src/KsUtils.cpp b/kernel-shark-qt/src/KsUtils.cpp index 2ebbae3..0298010 100644 --- a/kernel-shark-qt/src/KsUtils.cpp +++ b/kernel-shark-qt/src/KsUtils.cpp @@ -95,6 +95,31 @@ void graphFilterSync(bool state) } } + +/** + * @brief Add a checkbox to a menu. + * + * @param menu: Input location for the menu object, to which the checkbox will be added. + * @param name: The name of the checkbox. + * + * @returns The checkbox object; + */ +QCheckBox *addCheckBoxToMenu(QMenu *menu, QString name) +{ + QWidget *containerWidget = new QWidget(menu); + containerWidget->setLayout(new QHBoxLayout()); + containerWidget->layout()->setContentsMargins(FONT_WIDTH, FONT_HEIGHT/5, + FONT_WIDTH, FONT_HEIGHT/5); + QCheckBox *checkBox = new QCheckBox(name, menu); + containerWidget->layout()->addWidget(checkBox); + + QWidgetAction *action = new QWidgetAction(menu); + action->setDefaultWidget(containerWidget); + menu->addAction(action); + + return checkBox; +} + /** * @brief Simple CPU matching function to be user for data collections. * diff --git a/kernel-shark-qt/src/KsUtils.hpp b/kernel-shark-qt/src/KsUtils.hpp index 052cc71..cb95b4f 100644 --- a/kernel-shark-qt/src/KsUtils.hpp +++ b/kernel-shark-qt/src/KsUtils.hpp @@ -93,6 +93,8 @@ void listFilterSync(bool state); void graphFilterSync(bool state); +QCheckBox *addCheckBoxToMenu(QMenu *menu, QString name); + /** @brief Convert the timestamp of the trace record into a string showing * the time in seconds. * From patchwork Fri Dec 14 12:52:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10760175 Return-Path: Received: from mail-eopbgr800084.outbound.protection.outlook.com ([40.107.80.84]:60384 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729831AbeLNMwp (ORCPT ); Fri, 14 Dec 2018 07:52:45 -0500 From: Yordan Karadzhov To: "rostedt@goodmis.org" CC: "linux-trace-devel@vger.kernel.org" Subject: [PATCH v2 6/8] kernel-shark-qt: Improve the KsQuickContextMenu Date: Fri, 14 Dec 2018 12:52:40 +0000 Message-ID: <20181214125212.9637-7-ykaradzhov@vmware.com> References: <20181214125212.9637-1-ykaradzhov@vmware.com> In-Reply-To: <20181214125212.9637-1-ykaradzhov@vmware.com> Content-Language: en-US MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org List-ID: Content-Length: 3604 In this patch the KsQuickContextMenu gets upgraded according to the user feedback, received from Steven. First of all a "Show CPU X only" action is added to the version of the menu that gets opened from the Table widget. In addition to this "Apply filter to XX" check-boxes are added in order to control the visibility of the filtered data. Signed-off-by: Yordan Karadzhov --- kernel-shark-qt/src/KsQuickContextMenu.cpp | 39 ++++++++++++++++++++++ kernel-shark-qt/src/KsQuickContextMenu.hpp | 6 +++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/kernel-shark-qt/src/KsQuickContextMenu.cpp b/kernel-shark-qt/src/KsQuickContextMenu.cpp index 815e4b9..c225269 100644 --- a/kernel-shark-qt/src/KsQuickContextMenu.cpp +++ b/kernel-shark-qt/src/KsQuickContextMenu.cpp @@ -50,11 +50,14 @@ KsQuickContextMenu::KsQuickContextMenu(KsDataStore *data, size_t row, : KsQuickMarkerMenu(dm, parent), _data(data), _row(row), + _graphSyncCBox(nullptr), + _listSyncCBox(nullptr), _hideTaskAction(this), _showTaskAction(this), _hideEventAction(this), _showEventAction(this), _hideCPUAction(this), + _showCPUAction(this), _addCPUPlotAction(this), _addTaskPlotAction(this), _removeCPUPlotAction(this), @@ -85,6 +88,32 @@ KsQuickContextMenu::KsQuickContextMenu(KsDataStore *data, size_t row, parentName = parent->metaObject()->className(); addSection("Pointer menu"); + + if (parentName == "KsTraceViewer") { + _graphSyncCBox = + KsUtils::addCheckBoxToMenu(this, "Apply filters to Graph"); + + connect(_graphSyncCBox, &QCheckBox::stateChanged, + &KsUtils::graphFilterSync); + + bool state(false); + KsUtils::graphFilterSync(state); + _graphSyncCBox->setChecked(state); + } + + if (parentName == "KsTraceGraph" && + (graphs = dynamic_cast(parent))) { + _listSyncCBox = + KsUtils::addCheckBoxToMenu(this, "Apply filters to Graph"); + + connect(_listSyncCBox, &QCheckBox::stateChanged, + &KsUtils::listFilterSync); + + bool state(false); + KsUtils::listFilterSync(state); + _listSyncCBox->setChecked(state); + } + descr = "Hide task ["; descr += taskName; descr += "-"; @@ -113,6 +142,9 @@ KsQuickContextMenu::KsQuickContextMenu(KsDataStore *data, size_t row, lamAddAction(&_hideCPUAction, &KsQuickContextMenu::_hideCPU); if (parentName == "KsTraceViewer") { + descr = QString("Show CPU [%1] only").arg(cpu); + lamAddAction(&_showCPUAction, &KsQuickContextMenu::_showCPU); + descr = "Add ["; descr += taskName; descr += "-"; @@ -198,6 +230,13 @@ void KsQuickContextMenu::_showEvent() _data->applyPosEventFilter(QVector(1, eventId)); } +void KsQuickContextMenu::_showCPU() +{ + int cpu = _data->rows()[_row]->cpu; + + _data->applyPosCPUFilter(QVector(1, cpu)); +} + void KsQuickContextMenu::_hideCPU() { kshark_context *kshark_ctx(nullptr); diff --git a/kernel-shark-qt/src/KsQuickContextMenu.hpp b/kernel-shark-qt/src/KsQuickContextMenu.hpp index 6ca1b08..f5a2a78 100644 --- a/kernel-shark-qt/src/KsQuickContextMenu.hpp +++ b/kernel-shark-qt/src/KsQuickContextMenu.hpp @@ -71,6 +71,8 @@ private: void _showEvent(); + void _showCPU(); + void _hideCPU(); void _addCPUPlot(); @@ -87,11 +89,13 @@ private: size_t _row; + QCheckBox *_graphSyncCBox, *_listSyncCBox; + QAction _hideTaskAction, _showTaskAction; QAction _hideEventAction, _showEventAction; - QAction _hideCPUAction; + QAction _hideCPUAction, _showCPUAction; QAction _addCPUPlotAction; From patchwork Fri Dec 14 12:52:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10760179 Return-Path: Received: from mail-eopbgr800084.outbound.protection.outlook.com ([40.107.80.84]:60384 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729835AbeLNMwq (ORCPT ); Fri, 14 Dec 2018 07:52:46 -0500 From: Yordan Karadzhov To: "rostedt@goodmis.org" CC: "linux-trace-devel@vger.kernel.org" Subject: [PATCH v2 7/8] kernel-shark-qt: Update the documentation link Date: Fri, 14 Dec 2018 12:52:41 +0000 Message-ID: <20181214125212.9637-8-ykaradzhov@vmware.com> References: <20181214125212.9637-1-ykaradzhov@vmware.com> In-Reply-To: <20181214125212.9637-1-ykaradzhov@vmware.com> Content-Language: en-US MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org List-ID: Help->Contents now opens http://kernelshark.org/ Signed-off-by: Yordan Karadzhov --- kernel-shark-qt/src/KsMainWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel-shark-qt/src/KsMainWindow.cpp b/kernel-shark-qt/src/KsMainWindow.cpp index 142cd1f..a375126 100644 --- a/kernel-shark-qt/src/KsMainWindow.cpp +++ b/kernel-shark-qt/src/KsMainWindow.cpp @@ -820,7 +820,7 @@ void KsMainWindow::_aboutInfo() void KsMainWindow::_contents() { - QDesktopServices::openUrl(QUrl("https://www.google.bg/search?q=kernelshark", + QDesktopServices::openUrl(QUrl("http://kernelshark.org/", QUrl::TolerantMode)); } From patchwork Fri Dec 14 12:52:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yordan Karadzhov X-Patchwork-Id: 10760181 Return-Path: Received: from mail-eopbgr800084.outbound.protection.outlook.com ([40.107.80.84]:60384 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729831AbeLNMwr (ORCPT ); Fri, 14 Dec 2018 07:52:47 -0500 From: Yordan Karadzhov To: "rostedt@goodmis.org" CC: "linux-trace-devel@vger.kernel.org" Subject: [PATCH v2 8/8] kernel-shark-qt: Version 1.0.0 Date: Fri, 14 Dec 2018 12:52:42 +0000 Message-ID: <20181214125212.9637-9-ykaradzhov@vmware.com> References: <20181214125212.9637-1-ykaradzhov@vmware.com> In-Reply-To: <20181214125212.9637-1-ykaradzhov@vmware.com> Content-Language: en-US MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org List-ID: Signed-off-by: Yordan Karadzhov --- kernel-shark-qt/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel-shark-qt/CMakeLists.txt b/kernel-shark-qt/CMakeLists.txt index d92bc3d..46137a3 100644 --- a/kernel-shark-qt/CMakeLists.txt +++ b/kernel-shark-qt/CMakeLists.txt @@ -4,8 +4,8 @@ cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR) # Set the name and version of the project project(kernel-shark-qt) -set(KS_VERSION_MAJOR 0) -set(KS_VERSION_MINOR 9) +set(KS_VERSION_MAJOR 1) +set(KS_VERSION_MINOR 0) set(KS_VERSION_PATCH 0) set(KS_VERSION_STRING ${KS_VERSION_MAJOR}.${KS_VERSION_MINOR}.${KS_VERSION_PATCH}) message("\n project: Kernel Shark: (version: ${KS_VERSION_STRING})\n")