From: "Steven Rostedt (VMware)" <rostedt@xxxxxxxxxxx> It turns out that if the kshark-record dialog does not show up for some reason, then without this "duplicate" message, the user gets no message at all to why the dialog did not appear. Signed-off-by: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx> --- kernel-shark/src/KsMainWindow.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/kernel-shark/src/KsMainWindow.cpp b/kernel-shark/src/KsMainWindow.cpp index 8826cf5cf8b2..198b410480a1 100644 --- a/kernel-shark/src/KsMainWindow.cpp +++ b/kernel-shark/src/KsMainWindow.cpp @@ -1154,9 +1154,35 @@ void KsMainWindow::_captureStarted() _captureLocalServer.listen("KSCapture"); } +/** + * If the authorization could not be obtained because the user dismissed + * the authentication dialog (clicked Cancel), pkexec exits with a return + * value of 126. + */ +#define PKEXEC_DISMISS_RET 126 + void KsMainWindow::_captureFinished(int ret, QProcess::ExitStatus st) { + QProcess *capture = (QProcess *)sender(); + _captureLocalServer.close(); + + if (ret == PKEXEC_DISMISS_RET) { + /* + * Authorization could not be obtained because the user + * dismissed the authentication dialog. + */ + return; + } + + if (ret != 0 || st != QProcess::NormalExit) { + QString message = "Capture process failed:<br>"; + + message += capture->errorString(); + message += "<br>Try doing:<br> sudo make install"; + + _error(message, "captureFinishedErr", false, false); + } } void KsMainWindow::_captureError(QProcess::ProcessError error) -- 2.20.1