fix: port Konsole to Redox Qt surface

This commit is contained in:
2026-05-07 09:11:47 +01:00
parent b54b2dbf76
commit 702cbfd429
19 changed files with 534 additions and 30 deletions
@@ -12,7 +12,9 @@
#include <cstdio>
// Qt
#if HAVE_QTMULTIMEDIA
#include <QAudioOutput>
#endif
#include <QBuffer>
#include <QEvent>
#include <QKeyEvent>
@@ -70,7 +72,9 @@ Vt102Emulation::Vt102Emulation()
, _pendingSessionAttributesUpdates(QHash<int, QString>())
, _sessionAttributesUpdateTimer(new QTimer(this))
, _reportFocusEvents(false)
#if HAVE_QTMULTIMEDIA
, player(nullptr)
#endif
{
_sessionAttributesUpdateTimer->setSingleShot(true);
QObject::connect(_sessionAttributesUpdateTimer, &QTimer::timeout, this, &Konsole::Vt102Emulation::updateSessionAttributes);
@@ -1295,6 +1299,7 @@ void Vt102Emulation::processSessionAttributeRequest(const int tokenSize, const u
}
}
if (inlineMedia) {
#if HAVE_QTMULTIMEDIA
if (player == nullptr) {
player = new QMediaPlayer(this);
player->setAudioOutput(new QAudioOutput(player));
@@ -1306,6 +1311,7 @@ void Vt102Emulation::processSessionAttributeRequest(const int tokenSize, const u
delete (QIODevice *)(player->sourceDevice());
player->setSourceDevice(buffer);
player->play();
#endif
return;
}
if (!inlineImage) {
@@ -1333,6 +1339,7 @@ void Vt102Emulation::processSessionAttributeRequest(const int tokenSize, const u
_sessionAttributesUpdateTimer->start(20);
}
#if HAVE_QTMULTIMEDIA
void Vt102Emulation::deletePlayer(QMediaPlayer::MediaStatus mediaStatus)
{
if (mediaStatus == QMediaPlayer::EndOfMedia || mediaStatus == QMediaPlayer::InvalidMedia) {
@@ -1342,6 +1349,7 @@ void Vt102Emulation::deletePlayer(QMediaPlayer::MediaStatus mediaStatus)
player = nullptr;
}
}
#endif
void Vt102Emulation::updateSessionAttributes()
{