linux-trace-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] Various modifications and fixes toward KS 1.0
@ 2019-05-15 19:09 Yordan Karadzhov
  2019-05-15 19:09 ` [PATCH 1/6] kernel-shark: Remove hard-coded install paths Yordan Karadzhov
                   ` (6 more replies)
  0 siblings, 7 replies; 9+ messages in thread
From: Yordan Karadzhov @ 2019-05-15 19:09 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel, y.karadz, Yordan Karadzhov

The patch-set contains patches that have been sent already,
but have not been pushed due to various reasons. The last
two patch are fixes of bugs that have been found recently.


Yordan Karadzhov (6):
  kernel-shark: Remove hard-coded install paths
  kernel-shark: Use XDG compliant path when saving cached data
  kernel-shark: Enforce update of the OpenGL widget when loading new
    session
  kernel-shark: Add "Report bug" button to "Help"
  kernel-shark: Improve the appearance on high screen resolution
  kernel-shark: Handle the case when the marker points to a filtered
    entry

 kernel-shark/CMakeLists.txt             |  8 ++++--
 kernel-shark/build/deff.h.cmake         |  3 ++
 kernel-shark/build/ks.desktop.cmake     |  4 +--
 kernel-shark/src/CMakeLists.txt         | 19 +++++++------
 kernel-shark/src/KsDualMarker.cpp       |  9 ++++++
 kernel-shark/src/KsGLWidget.cpp         | 24 +++++++++-------
 kernel-shark/src/KsGLWidget.hpp         |  5 +++-
 kernel-shark/src/KsMainWindow.cpp       | 22 ++++++++++++---
 kernel-shark/src/KsMainWindow.hpp       |  4 +++
 kernel-shark/src/KsPlotTools.cpp        | 37 +++++++++++++++++++++++--
 kernel-shark/src/KsPlotTools.hpp        | 11 +++++++-
 kernel-shark/src/KsTraceGraph.cpp       |  2 ++
 kernel-shark/src/KsTraceViewer.cpp      | 22 +++++++++------
 kernel-shark/src/KsUtils.cpp            |  4 +--
 kernel-shark/src/plugins/CMakeLists.txt |  3 +-
 15 files changed, 134 insertions(+), 43 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/6] kernel-shark: Remove hard-coded install paths
  2019-05-15 19:09 [PATCH 0/6] Various modifications and fixes toward KS 1.0 Yordan Karadzhov
@ 2019-05-15 19:09 ` Yordan Karadzhov
  2019-05-15 19:09 ` [PATCH 2/6] kernel-shark: Use XDG compliant path when saving cached data Yordan Karadzhov
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Yordan Karadzhov @ 2019-05-15 19:09 UTC (permalink / raw)
  To: rostedt
  Cc: linux-trace-devel, y.karadz, Yordan Karadzhov, Troy Engel, Bas van Dijk

The definitions of KS_APP_NAME and KS_ICON are used to derive standard
installation paths for the KernelShark libraries, plugins and icons.
The patch combines improvements suggested by Troy Engel and Bas van Dijk.

Suggested-by: Troy Engel <troyengel@gmail.com>
Suggested-by: Bas van Dijk <v.dijk.bas@gmail.com>
Signed-off-by: Yordan Karadzhov <ykaradzhov@vmware.com>
---
 kernel-shark/CMakeLists.txt             |  8 ++++++--
 kernel-shark/build/deff.h.cmake         |  3 +++
 kernel-shark/build/ks.desktop.cmake     |  4 ++--
 kernel-shark/src/CMakeLists.txt         | 19 +++++++++++--------
 kernel-shark/src/KsUtils.cpp            |  4 ++--
 kernel-shark/src/plugins/CMakeLists.txt |  3 +--
 6 files changed, 25 insertions(+), 16 deletions(-)

diff --git a/kernel-shark/CMakeLists.txt b/kernel-shark/CMakeLists.txt
index 1aee858..b886e2c 100644
--- a/kernel-shark/CMakeLists.txt
+++ b/kernel-shark/CMakeLists.txt
@@ -4,6 +4,7 @@ cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)
 # Set the name and version of the project
 project(kernel-shark)
 
+set(KS_APP_NAME "kernelshark")
 set(KS_VERSION_MAJOR 0)
 set(KS_VERSION_MINOR 9)
 set(KS_VERSION_PATCH 8)
@@ -39,6 +40,9 @@ if(NOT _INSTALL_PREFIX)
 	set(_INSTALL_PREFIX "/usr/local")
 endif()
 
+set(KS_PLUGIN_INSTALL_PREFIX ${_INSTALL_PREFIX}/lib/${KS_APP_NAME}/plugins/)
+set(KS_ICON ksharkicon.png)
+
 if (NOT _DEBUG)
 
 	set(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS} -O2")
@@ -46,7 +50,7 @@ if (NOT _DEBUG)
 
 endif (NOT _DEBUG)
 
-SET(CMAKE_INSTALL_RPATH "${_INSTALL_PREFIX}/lib/kshark/")
+SET(CMAKE_INSTALL_RPATH "${_INSTALL_PREFIX}/lib/${KS_APP_NAME}/")
 SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
 
 include_directories(${KS_DIR}/src/
@@ -79,7 +83,7 @@ if (_DOXYGEN_DOC AND DOXYGEN_FOUND)
 endif ()
 
 configure_file( ${KS_DIR}/build/ks.desktop.cmake
-                ${KS_DIR}/kernelshark.desktop)
+                ${KS_DIR}/${KS_APP_NAME}.desktop)
 
 configure_file( ${KS_DIR}/build/org.freedesktop.kshark-record.policy.cmake
                 ${KS_DIR}/org.freedesktop.kshark-record.policy)
diff --git a/kernel-shark/build/deff.h.cmake b/kernel-shark/build/deff.h.cmake
index 1cf8a80..efee2a1 100644
--- a/kernel-shark/build/deff.h.cmake
+++ b/kernel-shark/build/deff.h.cmake
@@ -14,6 +14,9 @@
 /** KernelShark installation prefix path. */
 #cmakedefine _INSTALL_PREFIX "@_INSTALL_PREFIX@"
 
+/** KernelShark plugins installation prefix path. */
+#cmakedefine KS_PLUGIN_INSTALL_PREFIX "@KS_PLUGIN_INSTALL_PREFIX@"
+
 /** Location of the trace-cmd executable. */
 #cmakedefine TRACECMD_BIN_DIR "@TRACECMD_BIN_DIR@"
 
diff --git a/kernel-shark/build/ks.desktop.cmake b/kernel-shark/build/ks.desktop.cmake
index 10e3610..2b02c0d 100644
--- a/kernel-shark/build/ks.desktop.cmake
+++ b/kernel-shark/build/ks.desktop.cmake
@@ -4,7 +4,7 @@ Type=Application
 Name=Kernel Shark
 GenericName=Kernel Shark
 Comment=
-Exec=@_INSTALL_PREFIX@/bin/kernelshark
-Icon=@KS_DIR@/icons/ksharkicon.png
+Exec=@_INSTALL_PREFIX@/bin/@KS_APP_NAME@
+Icon=@_INSTALL_PREFIX@/share/icons/@KS_APP_NAME@/@KS_ICON@
 Categories=System;
 Terminal=false
diff --git a/kernel-shark/src/CMakeLists.txt b/kernel-shark/src/CMakeLists.txt
index b7dbd7e..6cbc00f 100644
--- a/kernel-shark/src/CMakeLists.txt
+++ b/kernel-shark/src/CMakeLists.txt
@@ -69,23 +69,26 @@ if (Qt5Widgets_FOUND AND Qt5Network_FOUND)
 
     set_target_properties(kshark-gui PROPERTIES  SUFFIX ".so.${KS_VERSION_STRING}")
 
-    message(STATUS "kernelshark")
-    add_executable(kernelshark          kernelshark.cpp)
-    target_link_libraries(kernelshark   kshark-gui)
+    message(STATUS ${KS_APP_NAME})
+    add_executable(${KS_APP_NAME}          kernelshark.cpp)
+    target_link_libraries(${KS_APP_NAME}   kshark-gui)
 
     message(STATUS "kshark-record")
     add_executable(kshark-record        kshark-record.cpp)
     target_link_libraries(kshark-record kshark-gui)
 
-    install(TARGETS kernelshark kshark-record kshark kshark-plot kshark-gui
+    install(TARGETS ${KS_APP_NAME} kshark-record kshark kshark-plot kshark-gui
             RUNTIME DESTINATION ${_INSTALL_PREFIX}/bin/
-            LIBRARY DESTINATION ${_INSTALL_PREFIX}/lib/kshark/)
+            LIBRARY DESTINATION ${_INSTALL_PREFIX}/lib/${KS_APP_NAME}/)
 
-    install(FILES "${KS_DIR}/kernelshark.desktop"
-            DESTINATION /usr/share/applications/)
+    install(FILES "${KS_DIR}/${KS_APP_NAME}.desktop"
+            DESTINATION ${_INSTALL_PREFIX}/share/applications/)
+
+    install(FILES "${KS_DIR}/icons/${KS_ICON}"
+            DESTINATION ${_INSTALL_PREFIX}/share/icons/${KS_APP_NAME})
 
     install(FILES "${KS_DIR}/org.freedesktop.kshark-record.policy"
-            DESTINATION /usr/share/polkit-1/actions/)
+            DESTINATION ${_INSTALL_PREFIX}/share/polkit-1/actions/)
 
     install(PROGRAMS "${KS_DIR}/bin/kshark-su-record"
             DESTINATION ${_INSTALL_PREFIX}/bin/)
diff --git a/kernel-shark/src/KsUtils.cpp b/kernel-shark/src/KsUtils.cpp
index 0020bff..dcedd7b 100644
--- a/kernel-shark/src/KsUtils.cpp
+++ b/kernel-shark/src/KsUtils.cpp
@@ -619,8 +619,8 @@ char *KsPluginManager::_pluginLibFromName(const QString &plugin, int &n)
 		n = asprintf(&lib, "%s/plugin-%s.so",
 			     pathStr.c_str(), pluginStr.c_str());
 	} else {
-		n = asprintf(&lib, "%s/lib/kshark/plugins/plugin-%s.so",
-			     _INSTALL_PREFIX, pluginStr.c_str());
+		n = asprintf(&lib, "%s/plugin-%s.so",
+			     KS_PLUGIN_INSTALL_PREFIX, pluginStr.c_str());
 	}
 
 	return lib;
diff --git a/kernel-shark/src/plugins/CMakeLists.txt b/kernel-shark/src/plugins/CMakeLists.txt
index 64cf98d..6c77179 100644
--- a/kernel-shark/src/plugins/CMakeLists.txt
+++ b/kernel-shark/src/plugins/CMakeLists.txt
@@ -18,7 +18,6 @@ function(BUILD_PLUGIN)
 endfunction()
 
 set(PLUGIN_LIST "")
-
 BUILD_PLUGIN(NAME sched_events
              SOURCE sched_events.c SchedEvents.cpp)
 list(APPEND PLUGIN_LIST "sched_events default") # This plugin will be loaded by default
@@ -29,6 +28,6 @@ BUILD_PLUGIN(NAME missed_events
 list(APPEND PLUGIN_LIST "missed_events default") # This plugin will be loaded by default
 
 install(TARGETS sched_events missed_events
-        LIBRARY DESTINATION ${_INSTALL_PREFIX}/lib/kshark/plugins/)
+        LIBRARY DESTINATION ${KS_PLUGIN_INSTALL_PREFIX})
 
 set(PLUGINS ${PLUGIN_LIST} PARENT_SCOPE)
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/6] kernel-shark: Use XDG compliant path when saving cached data
  2019-05-15 19:09 [PATCH 0/6] Various modifications and fixes toward KS 1.0 Yordan Karadzhov
  2019-05-15 19:09 ` [PATCH 1/6] kernel-shark: Remove hard-coded install paths Yordan Karadzhov
@ 2019-05-15 19:09 ` Yordan Karadzhov
  2019-05-15 19:09 ` [PATCH 3/6] kernel-shark: Enforce update of the OpenGL widget when loading new session Yordan Karadzhov
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Yordan Karadzhov @ 2019-05-15 19:09 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel, y.karadz, Yordan Karadzhov, Troy Engel

Use the QStandardPaths class provided by Qt in order to guarantee that
the location of the cached data is XDG compliant.

Suggested-by: Troy Engel <troyengel@gmail.com>
Signed-off-by: Yordan Karadzhov <ykaradzhov@vmware.com>
---
 kernel-shark/src/KsMainWindow.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/kernel-shark/src/KsMainWindow.cpp b/kernel-shark/src/KsMainWindow.cpp
index 5f326f5..bb593bd 100644
--- a/kernel-shark/src/KsMainWindow.cpp
+++ b/kernel-shark/src/KsMainWindow.cpp
@@ -409,8 +409,10 @@ QString KsMainWindow::_getCacheDir()
 		if (!QDir(dir).exists())
 			lamMakePath(true);
 	} else {
-		dir = QString(QDir::homePath()) +
-		      "/.cache/kernelshark";
+		auto appCachePath = QStandardPaths::GenericCacheLocation;
+		dir = QStandardPaths::writableLocation(appCachePath);
+		dir += "/kernelshark";
+
 		if (!QDir(dir).exists())
 			lamMakePath(false);
 	}
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/6] kernel-shark: Enforce update of the OpenGL widget when loading new session
  2019-05-15 19:09 [PATCH 0/6] Various modifications and fixes toward KS 1.0 Yordan Karadzhov
  2019-05-15 19:09 ` [PATCH 1/6] kernel-shark: Remove hard-coded install paths Yordan Karadzhov
  2019-05-15 19:09 ` [PATCH 2/6] kernel-shark: Use XDG compliant path when saving cached data Yordan Karadzhov
@ 2019-05-15 19:09 ` Yordan Karadzhov
  2019-05-15 19:09 ` [PATCH 4/6] kernel-shark: Add "Report bug" button to "Help" Yordan Karadzhov
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Yordan Karadzhov @ 2019-05-15 19:09 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel, y.karadz, Yordan Karadzhov, Slavomir Kaslev

This is needed in the case when the session was saved at different screen
resolution.

Reviewed-by: Slavomir Kaslev <kaslevs@vmware.com>
Reported-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Yordan Karadzhov <ykaradzhov@vmware.com>
---
 kernel-shark/src/KsGLWidget.hpp   | 3 +++
 kernel-shark/src/KsMainWindow.cpp | 3 +--
 kernel-shark/src/KsTraceGraph.cpp | 2 ++
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/kernel-shark/src/KsGLWidget.hpp b/kernel-shark/src/KsGLWidget.hpp
index 3bcecf9..bc5cacf 100644
--- a/kernel-shark/src/KsGLWidget.hpp
+++ b/kernel-shark/src/KsGLWidget.hpp
@@ -41,6 +41,9 @@ public:
 
 	void reset();
 
+	/** Reprocess all graphs. */
+	void update() {resizeGL(width(), height());}
+
 	void mousePressEvent(QMouseEvent *event);
 
 	void mouseMoveEvent(QMouseEvent *event);
diff --git a/kernel-shark/src/KsMainWindow.cpp b/kernel-shark/src/KsMainWindow.cpp
index bb593bd..3cf10bc 100644
--- a/kernel-shark/src/KsMainWindow.cpp
+++ b/kernel-shark/src/KsMainWindow.cpp
@@ -435,7 +435,6 @@ QString KsMainWindow::lastSessionFile()
 void KsMainWindow::_restoreSession()
 {
 	loadSession(lastSessionFile());
-	_graph.updateGeom();
 }
 
 void KsMainWindow::_importSession()
@@ -450,7 +449,6 @@ void KsMainWindow::_importSession()
 		return;
 
 	loadSession(fileName);
-	_graph.updateGeom();
 }
 
 void KsMainWindow::_updateSession()
@@ -1100,6 +1098,7 @@ void KsMainWindow::loadSession(const QString &fileName)
 
 	_session.loadTable(&_view);
 	_colorPhaseSlider.setValue(_session.getColorScheme() * 100);
+	_graph.updateGeom();
 }
 
 void KsMainWindow::_initCapture()
diff --git a/kernel-shark/src/KsTraceGraph.cpp b/kernel-shark/src/KsTraceGraph.cpp
index 6087e96..da2c6aa 100644
--- a/kernel-shark/src/KsTraceGraph.cpp
+++ b/kernel-shark/src/KsTraceGraph.cpp
@@ -538,6 +538,8 @@ void KsTraceGraph::updateGeom()
 			       * allow the scroll bar to disappear when the
 			       * widget is extended to maximum.
 			       */
+
+	_glWindow.update();
 }
 
 void KsTraceGraph::_updateGraphLegends()
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 4/6] kernel-shark: Add "Report bug" button to "Help"
  2019-05-15 19:09 [PATCH 0/6] Various modifications and fixes toward KS 1.0 Yordan Karadzhov
                   ` (2 preceding siblings ...)
  2019-05-15 19:09 ` [PATCH 3/6] kernel-shark: Enforce update of the OpenGL widget when loading new session Yordan Karadzhov
@ 2019-05-15 19:09 ` Yordan Karadzhov
  2019-05-15 19:09 ` [PATCH 5/6] kernel-shark: Improve the appearance on high screen resolution Yordan Karadzhov
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Yordan Karadzhov @ 2019-05-15 19:09 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel, y.karadz, Yordan Karadzhov, Slavomir Kaslev

When clicked, the Bugzilla will be opened in the appropriate Web browser
for the user's desktop environment.

Reviewed-by: Slavomir Kaslev <kaslevs@vmware.com>
Suggested-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Yordan Karadzhov <ykaradzhov@vmware.com>
---
 kernel-shark/src/KsMainWindow.cpp | 13 +++++++++++++
 kernel-shark/src/KsMainWindow.hpp |  4 ++++
 2 files changed, 17 insertions(+)

diff --git a/kernel-shark/src/KsMainWindow.cpp b/kernel-shark/src/KsMainWindow.cpp
index 3cf10bc..c7c7f6b 100644
--- a/kernel-shark/src/KsMainWindow.cpp
+++ b/kernel-shark/src/KsMainWindow.cpp
@@ -67,6 +67,7 @@ KsMainWindow::KsMainWindow(QWidget *parent)
   _fullScreenModeAction("Full Screen Mode", this),
   _aboutAction("About", this),
   _contentsAction("Contents", this),
+  _bugReportAction("Report a bug", this),
   _deselectShortcut(this),
   _settings("kernelshark.org", "Kernel Shark") // organization , application
 {
@@ -288,6 +289,9 @@ void KsMainWindow::_createActions()
 	_contentsAction.setIcon(QIcon::fromTheme("help-contents"));
 	connect(&_contentsAction,	&QAction::triggered,
 		this,			&KsMainWindow::_contents);
+
+	connect(&_bugReportAction,	&QAction::triggered,
+		this,			&KsMainWindow::_bugReport);
 }
 
 void KsMainWindow::_createMenus()
@@ -365,6 +369,7 @@ void KsMainWindow::_createMenus()
 	help = menuBar()->addMenu("Help");
 	help->addAction(&_aboutAction);
 	help->addAction(&_contentsAction);
+	help->addAction(&_bugReportAction);
 }
 
 void KsMainWindow::_open()
@@ -925,6 +930,14 @@ void KsMainWindow::_contents()
 				  QUrl::TolerantMode));
 }
 
+void KsMainWindow::_bugReport()
+{
+	QUrl bugs("https://bugzilla.kernel.org/buglist.cgi?component=Trace-cmd%2FKernelshark&product=Tools&resolution=---",
+		  QUrl::TolerantMode);
+
+	QDesktopServices::openUrl(bugs);
+}
+
 /** Load trace data for file. */
 void KsMainWindow::loadDataFile(const QString& fileName)
 {
diff --git a/kernel-shark/src/KsMainWindow.hpp b/kernel-shark/src/KsMainWindow.hpp
index 962de2d..22700d9 100644
--- a/kernel-shark/src/KsMainWindow.hpp
+++ b/kernel-shark/src/KsMainWindow.hpp
@@ -151,6 +151,8 @@ private:
 
 	QAction		_contentsAction;
 
+	QAction		_bugReportAction;
+
 	QShortcut	_deselectShortcut;
 
 	QString		_lastDataFilePath, _lastConfFilePath, _lastPluginFilePath;
@@ -205,6 +207,8 @@ private:
 
 	void _contents();
 
+	void _bugReport();
+
 	void _captureStarted();
 
 	void _captureError(QProcess::ProcessError error);
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 5/6] kernel-shark: Improve the appearance on high screen resolution
  2019-05-15 19:09 [PATCH 0/6] Various modifications and fixes toward KS 1.0 Yordan Karadzhov
                   ` (3 preceding siblings ...)
  2019-05-15 19:09 ` [PATCH 4/6] kernel-shark: Add "Report bug" button to "Help" Yordan Karadzhov
@ 2019-05-15 19:09 ` Yordan Karadzhov
  2019-05-15 19:09 ` [PATCH 6/6] kernel-shark: Handle the case when the marker points to a filtered entry Yordan Karadzhov
  2019-05-16 13:42 ` [PATCH 0/6] Various modifications and fixes toward KS 1.0 Slavomir Kaslev
  6 siblings, 0 replies; 9+ messages in thread
From: Yordan Karadzhov @ 2019-05-15 19:09 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel, y.karadz, Yordan Karadzhov

Some of the components of the plots haven't been properly scaled
when displayed on high screen resolution.

Signed-off-by: Yordan Karadzhov <ykaradzhov@vmware.com>
---
 kernel-shark/src/KsGLWidget.cpp  | 24 ++++++++++++++----------
 kernel-shark/src/KsGLWidget.hpp  |  2 +-
 kernel-shark/src/KsPlotTools.cpp |  4 +++-
 3 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/kernel-shark/src/KsGLWidget.cpp b/kernel-shark/src/KsGLWidget.cpp
index 789514a..ce68052 100644
--- a/kernel-shark/src/KsGLWidget.cpp
+++ b/kernel-shark/src/KsGLWidget.cpp
@@ -84,24 +84,29 @@ void KsGLWidget::resizeGL(int w, int h)
 /** Reimplemented function used to plot trace graphs. */
 void KsGLWidget::paintGL()
 {
+	float size = 1.5 * _dpr;
+
 	glClear(GL_COLOR_BUFFER_BIT);
 
 	/* Draw the time axis. */
 	if(_data)
-		_drawAxisX();
+		_drawAxisX(size);
 
 	/* Process and draw all graphs by using the built-in logic. */
 	_makeGraphs(_cpuList, _taskList);
 	for (auto const &g: _graphs)
-		g->draw(1.5 * _dpr);
+		g->draw(size);
 
 	/* Process and draw all plugin-specific shapes. */
 	_makePluginShapes(_cpuList, _taskList);
 	while (!_shapes.empty()) {
 		auto s = _shapes.front();
+		_shapes.pop_front();
+
+		s->_size = size;
 		s->draw();
+
 		delete s;
-		_shapes.pop_front();
 	}
 
 	/*
@@ -448,22 +453,21 @@ void KsGLWidget::findGraphIds(const kshark_entry &e,
 		*graphTask = -1;
 }
 
-void KsGLWidget::_drawAxisX()
+void KsGLWidget::_drawAxisX(float size)
 {
 	KsPlot::Point a0(_hMargin, _vMargin / 4), a1(_hMargin, _vMargin / 2);
-	KsPlot::Point b0(width()/2, _vMargin / 4), b1(width() / 2, _vMargin / 2);
+	KsPlot::Point b0(width() / 2, _vMargin / 4), b1(width() / 2, _vMargin / 2);
 	KsPlot::Point c0(width() - _hMargin, _vMargin / 4),
 			 c1(width() - _hMargin, _vMargin / 2);
-	int lineSize = 2 * _dpr;
 
 	a0._size = c0._size = _dpr;
 
 	a0.draw();
 	c0.draw();
-	KsPlot::drawLine(a0, a1, {}, lineSize);
-	KsPlot::drawLine(b0, b1, {}, lineSize);
-	KsPlot::drawLine(c0, c1, {}, lineSize);
-	KsPlot::drawLine(a0, c0, {}, lineSize);
+	KsPlot::drawLine(a0, a1, {}, size);
+	KsPlot::drawLine(b0, b1, {}, size);
+	KsPlot::drawLine(c0, c1, {}, size);
+	KsPlot::drawLine(a0, c0, {}, size);
 }
 
 void KsGLWidget::_makeGraphs(QVector<int> cpuList, QVector<int> taskList)
diff --git a/kernel-shark/src/KsGLWidget.hpp b/kernel-shark/src/KsGLWidget.hpp
index bc5cacf..e141b0a 100644
--- a/kernel-shark/src/KsGLWidget.hpp
+++ b/kernel-shark/src/KsGLWidget.hpp
@@ -190,7 +190,7 @@ private:
 
 	int 		_dpr;
 
-	void _drawAxisX();
+	void _drawAxisX(float size);
 
 	void _makeGraphs(QVector<int> cpuMask, QVector<int> taskMask);
 
diff --git a/kernel-shark/src/KsPlotTools.cpp b/kernel-shark/src/KsPlotTools.cpp
index 2b16a51..f95ada5 100644
--- a/kernel-shark/src/KsPlotTools.cpp
+++ b/kernel-shark/src/KsPlotTools.cpp
@@ -1089,8 +1089,10 @@ void Graph::draw(float size)
 	/* Draw as vartical lines all bins containing data. */
 	for (int i = 0; i < _size; ++i)
 		if (_bins[i]._idFront >= 0 || _bins[i]._idBack >= 0)
-			if (_bins[i]._visMask & KS_EVENT_VIEW_FILTER_MASK)
+			if (_bins[i]._visMask & KS_EVENT_VIEW_FILTER_MASK) {
+				_bins[i]._size = size;
 				_bins[i].draw();
+			}
 
 	auto lamCheckEnsblVal = [this] (int v) {
 		return v > 0 || (v == 0 && !this->_zeroSuppress);
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 6/6] kernel-shark: Handle the case when the marker points to a filtered entry
  2019-05-15 19:09 [PATCH 0/6] Various modifications and fixes toward KS 1.0 Yordan Karadzhov
                   ` (4 preceding siblings ...)
  2019-05-15 19:09 ` [PATCH 5/6] kernel-shark: Improve the appearance on high screen resolution Yordan Karadzhov
@ 2019-05-15 19:09 ` Yordan Karadzhov
  2019-05-16 13:42 ` [PATCH 0/6] Various modifications and fixes toward KS 1.0 Slavomir Kaslev
  6 siblings, 0 replies; 9+ messages in thread
From: Yordan Karadzhov @ 2019-05-15 19:09 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel, y.karadz, Yordan Karadzhov

Markers can point to entries that are filtered out. In such a case
the filtered marker is plotted using a dashed line.

Suggested-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Yordan Karadzhov <ykaradzhov@vmware.com>
---
 kernel-shark/src/KsDualMarker.cpp  | 10 +++++++++
 kernel-shark/src/KsPlotTools.cpp   | 33 +++++++++++++++++++++++++++++-
 kernel-shark/src/KsPlotTools.hpp   | 11 +++++++++-
 kernel-shark/src/KsTraceViewer.cpp | 22 ++++++++++++--------
 4 files changed, 65 insertions(+), 11 deletions(-)

diff --git a/kernel-shark/src/KsDualMarker.cpp b/kernel-shark/src/KsDualMarker.cpp
index 5dcbaae..755e246 100644
--- a/kernel-shark/src/KsDualMarker.cpp
+++ b/kernel-shark/src/KsDualMarker.cpp
@@ -79,9 +79,19 @@ bool KsGraphMark::set(const KsDataStore &data,
 		      kshark_trace_histo *histo,
 		      size_t pos, int cpuGraph, int taskGraph)
 {
+	uint8_t visFlags;
+
 	_isSet = true;
 	_pos = pos;
 	_ts = data.rows()[_pos]->ts;
+	visFlags = data.rows()[_pos]->visible;
+
+	if ((visFlags & KS_TEXT_VIEW_FILTER_MASK) &&
+	    (visFlags & KS_GRAPH_VIEW_FILTER_MASK))
+		_mark.setDashed(false);
+	else
+		_mark.setDashed(true);
+
 	_cpu = cpuGraph;
 	_task = taskGraph;
 
diff --git a/kernel-shark/src/KsPlotTools.cpp b/kernel-shark/src/KsPlotTools.cpp
index f95ada5..a8eddcd 100644
--- a/kernel-shark/src/KsPlotTools.cpp
+++ b/kernel-shark/src/KsPlotTools.cpp
@@ -379,6 +379,32 @@ void drawLine(const Point &a, const Point &b,
 			 size);
 }
 
+/**
+ * @brief Draw a dashed line between point "a" and point "b".
+ *
+ * @param a: The first finishing point of the line.
+ * @param b: The second finishing point of the line.
+ * @param col: The color of the line.
+ * @param size: The size of the line.
+ * @param period: The period of the dashed line.
+ */
+void drawDashedLine(const Point &a, const Point &b,
+		    const Color &col, float size, float period)
+{
+	int dx = b.x() - a.x(), dy = b.y() - a.y();
+	float mod = sqrt(dx * dx + dy * dy);
+	int n = mod / period;
+	Point p1, p2;
+
+	for (int i = 0; i < n; ++i) {
+		p1.setX(a.x() + (i + .25) * dx / n);
+		p1.setY(a.y() + (i + .25) * dy / n);
+		p2.setX(a.x() + (i + .75) * dx / n);
+		p2.setY(a.y() + (i + .75) * dy / n);
+		drawLine(p1, p2, col, size);
+	}
+}
+
 /** @brief Create a default line. The two points are initialized at (0, 0). */
 Line::Line()
 : Shape(2)
@@ -430,6 +456,7 @@ void Polygon::_draw(const Color &col, float size) const
  * @brief Create a default Mark.
  */
 Mark::Mark()
+: _dashed(false)
 {
 	_visible = false;
 	_cpu._color = Color(225, 255, 100);
@@ -440,7 +467,11 @@ Mark::Mark()
 
 void Mark::_draw(const Color &col, float size) const
 {
-	drawLine(_a, _b, col, size);
+	if (_dashed)
+		drawDashedLine(_a, _b, col, size, 3 * _cpu._size / size);
+	else
+		drawLine(_a, _b, col, size);
+
 	_cpu.draw();
 	_task.draw();
 }
diff --git a/kernel-shark/src/KsPlotTools.hpp b/kernel-shark/src/KsPlotTools.hpp
index 11c49eb..ee447f1 100644
--- a/kernel-shark/src/KsPlotTools.hpp
+++ b/kernel-shark/src/KsPlotTools.hpp
@@ -204,7 +204,10 @@ private:
 };
 
 void drawLine(const Point &a, const Point &b,
-	      const Color &col, float s);
+	      const Color &col, float size);
+
+void drawDashedLine(const Point &a, const Point &b,
+		    const Color &col, float size, float period);
 
 /** This class represents a straight line. */
 class Line : public Shape {
@@ -326,6 +329,9 @@ public:
 
 	void setTaskVisible(bool v);
 
+	/** If True, the Mark will be plotted as a dashed line. */
+	void setDashed(bool d) {_dashed = d;}
+
 private:
 	void _draw(const Color &col, float size = 1.) const override;
 
@@ -340,6 +346,9 @@ private:
 
 	/** A point indicating the position of the Mark in a Task graph. */
 	Point _task;
+
+	/* If True, plot the Mark as a dashed line. */
+	bool _dashed;
 };
 
 /** This class represents a KernelShark graph's bin. */
diff --git a/kernel-shark/src/KsTraceViewer.cpp b/kernel-shark/src/KsTraceViewer.cpp
index 04a38b8..05977c3 100644
--- a/kernel-shark/src/KsTraceViewer.cpp
+++ b/kernel-shark/src/KsTraceViewer.cpp
@@ -493,15 +493,19 @@ void KsTraceViewer::markSwitch()
 		QModelIndex index =
 			_proxyModel.mapFromSource(_model.index(row, 0));
 
-		/*
-		 * The row of the active marker will be colored according to
-		 * the assigned property of the current state of the Dual
-		 * marker. Auto-scrolling is temporarily disabled because we
-		 * do not want to scroll to the position of the marker yet.
-		 */
-		_view.setAutoScroll(false);
-		_view.selectRow(index.row());
-		_view.setAutoScroll(true);
+		if (index.isValid()) {
+			/*
+			 * The row of the active marker will be colored according to
+			 * the assigned property of the current state of the Dual
+			 * marker. Auto-scrolling is temporarily disabled because we
+			 * do not want to scroll to the position of the marker yet.
+			 */
+			_view.setAutoScroll(false);
+			_view.selectRow(index.row());
+			_view.setAutoScroll(true);
+		} else {
+			_view.clearSelection();
+		}
 	} else {
 		_view.clearSelection();
 	}
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/6] Various modifications and fixes toward KS 1.0
  2019-05-15 19:09 [PATCH 0/6] Various modifications and fixes toward KS 1.0 Yordan Karadzhov
                   ` (5 preceding siblings ...)
  2019-05-15 19:09 ` [PATCH 6/6] kernel-shark: Handle the case when the marker points to a filtered entry Yordan Karadzhov
@ 2019-05-16 13:42 ` Slavomir Kaslev
  2019-05-21 13:59   ` Steven Rostedt
  6 siblings, 1 reply; 9+ messages in thread
From: Slavomir Kaslev @ 2019-05-16 13:42 UTC (permalink / raw)
  To: Yordan Karadzhov
  Cc: Steven Rostedt, linux-trace-devel, Yordan Karadzhov (VMware)

On Wed, May 15, 2019 at 10:11 PM Yordan Karadzhov <ykaradzhov@vmware.com> wrote:
>
> The patch-set contains patches that have been sent already,
> but have not been pushed due to various reasons. The last
> two patch are fixes of bugs that have been found recently.
>
>
> Yordan Karadzhov (6):
>   kernel-shark: Remove hard-coded install paths
>   kernel-shark: Use XDG compliant path when saving cached data
>   kernel-shark: Enforce update of the OpenGL widget when loading new
>     session
>   kernel-shark: Add "Report bug" button to "Help"
>   kernel-shark: Improve the appearance on high screen resolution
>   kernel-shark: Handle the case when the marker points to a filtered
>     entry
>
>  kernel-shark/CMakeLists.txt             |  8 ++++--
>  kernel-shark/build/deff.h.cmake         |  3 ++
>  kernel-shark/build/ks.desktop.cmake     |  4 +--
>  kernel-shark/src/CMakeLists.txt         | 19 +++++++------
>  kernel-shark/src/KsDualMarker.cpp       |  9 ++++++
>  kernel-shark/src/KsGLWidget.cpp         | 24 +++++++++-------
>  kernel-shark/src/KsGLWidget.hpp         |  5 +++-
>  kernel-shark/src/KsMainWindow.cpp       | 22 ++++++++++++---
>  kernel-shark/src/KsMainWindow.hpp       |  4 +++
>  kernel-shark/src/KsPlotTools.cpp        | 37 +++++++++++++++++++++++--
>  kernel-shark/src/KsPlotTools.hpp        | 11 +++++++-
>  kernel-shark/src/KsTraceGraph.cpp       |  2 ++
>  kernel-shark/src/KsTraceViewer.cpp      | 22 +++++++++------
>  kernel-shark/src/KsUtils.cpp            |  4 +--
>  kernel-shark/src/plugins/CMakeLists.txt |  3 +-
>  15 files changed, 134 insertions(+), 43 deletions(-)

All the new patches looks good to me.

Reviewed-by: Slavomir Kaslev <kaslevs@vmware.com>

Thanks!

-- Slavi

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/6] Various modifications and fixes toward KS 1.0
  2019-05-16 13:42 ` [PATCH 0/6] Various modifications and fixes toward KS 1.0 Slavomir Kaslev
@ 2019-05-21 13:59   ` Steven Rostedt
  0 siblings, 0 replies; 9+ messages in thread
From: Steven Rostedt @ 2019-05-21 13:59 UTC (permalink / raw)
  To: Slavomir Kaslev
  Cc: slavomir.kaslev, Yordan Karadzhov, linux-trace-devel,
	Yordan Karadzhov (VMware)

On Thu, 16 May 2019 13:42:41 +0000
Slavomir Kaslev <kaslevs@vmware.com> wrote:

> All the new patches looks good to me.
> 
> Reviewed-by: Slavomir Kaslev <kaslevs@vmware.com>

Thanks Yordan and Slavomir!

I'm applying these patches. Although, it appears I already had patches
3 and 4 applied.

-- Steve

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-05-21 13:59 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-15 19:09 [PATCH 0/6] Various modifications and fixes toward KS 1.0 Yordan Karadzhov
2019-05-15 19:09 ` [PATCH 1/6] kernel-shark: Remove hard-coded install paths Yordan Karadzhov
2019-05-15 19:09 ` [PATCH 2/6] kernel-shark: Use XDG compliant path when saving cached data Yordan Karadzhov
2019-05-15 19:09 ` [PATCH 3/6] kernel-shark: Enforce update of the OpenGL widget when loading new session Yordan Karadzhov
2019-05-15 19:09 ` [PATCH 4/6] kernel-shark: Add "Report bug" button to "Help" Yordan Karadzhov
2019-05-15 19:09 ` [PATCH 5/6] kernel-shark: Improve the appearance on high screen resolution Yordan Karadzhov
2019-05-15 19:09 ` [PATCH 6/6] kernel-shark: Handle the case when the marker points to a filtered entry Yordan Karadzhov
2019-05-16 13:42 ` [PATCH 0/6] Various modifications and fixes toward KS 1.0 Slavomir Kaslev
2019-05-21 13:59   ` Steven Rostedt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).