mirror of
https://github.com/quickshell-mirror/quickshell.git
synced 2026-10-27 02:54:36 +00:00
io/process: emit read for data remaining in buffer on exit
This commit is contained in:
3 files changed
+8
No files matched your search
@@ -98,6 +98,10 @@ void SplitParser::parseBytes(QByteArray& incoming, QByteArray& buffer) {
|
||||
}
|
||||
}
|
||||
|
||||
void SplitParser::streamEnded(QByteArray& buffer) {
|
||||
if (!buffer.isEmpty()) emit this->read(QString(buffer));
|
||||
}
|
||||
|
||||
QString SplitParser::splitMarker() const { return this->mSplitMarker; }
|
||||
|
||||
void SplitParser::setSplitMarker(QString marker) {
|
||||
|
||||
@@ -54,6 +54,7 @@ public:
|
||||
|
||||
// the buffer will be sent in both slots if there is data remaining from a previous parser
|
||||
virtual void parseBytes(QByteArray& incoming, QByteArray& buffer) = 0;
|
||||
virtual void streamEnded(QByteArray& /*buffer*/) {};
|
||||
|
||||
signals:
|
||||
/// Emitted when data is read from the stream.
|
||||
@@ -75,6 +76,7 @@ public:
|
||||
explicit SplitParser(QObject* parent = nullptr): DataStreamParser(parent) {}
|
||||
|
||||
void parseBytes(QByteArray& incoming, QByteArray& buffer) override;
|
||||
void streamEnded(QByteArray& buffer) override;
|
||||
|
||||
[[nodiscard]] QString splitMarker() const;
|
||||
void setSplitMarker(QString marker);
|
||||
|
||||
@@ -254,6 +254,8 @@ void Process::onStarted() {
|
||||
void Process::onFinished(qint32 exitCode, QProcess::ExitStatus exitStatus) {
|
||||
this->process->deleteLater();
|
||||
this->process = nullptr;
|
||||
if (this->mStdoutParser) this->mStdoutParser->streamEnded(this->stdoutBuffer);
|
||||
if (this->mStderrParser) this->mStderrParser->streamEnded(this->stderrBuffer);
|
||||
this->stdoutBuffer.clear();
|
||||
this->stderrBuffer.clear();
|
||||
|
||||
|
||||
Reference in new issue
Block a user