diff --git a/linux/main.cpp b/linux/main.cpp index edef857..be1284e 100644 --- a/linux/main.cpp +++ b/linux/main.cpp @@ -359,13 +359,15 @@ private slots: LOG_WARN("Socket is still open, closing it"); socket->close(); socket = nullptr; - discoveryAgent->start(); } if (phoneSocket && phoneSocket->isOpen()) { phoneSocket->write(AirPodsPackets::Connection::AIRPODS_DISCONNECTED); LOG_DEBUG("AIRPODS_DISCONNECTED packet written: " << AirPodsPackets::Connection::AIRPODS_DISCONNECTED.toHex()); } + + mediaController->pause(); + discoveryAgent->start(); } void bluezDeviceDisconnected(const QString &address) { diff --git a/linux/mediacontroller.cpp b/linux/mediacontroller.cpp index 44c51f2..9926a1e 100644 --- a/linux/mediacontroller.cpp +++ b/linux/mediacontroller.cpp @@ -73,14 +73,7 @@ void MediaController::handleEarDetection(const QString &status) { QString playbackStatus = process.readAllStandardOutput().trimmed(); LOG_DEBUG("Playback status: " << playbackStatus); if (playbackStatus == "Playing") { - int result = QProcess::execute("playerctl", QStringList() << "pause"); - LOG_DEBUG("Executed 'playerctl pause' with result: " << result); - if (result == 0) { - LOG_INFO("Paused playback via Playerctl"); - wasPausedByApp = true; - } else { - LOG_ERROR("Failed to pause playback via Playerctl"); - } + pause(); } } } @@ -183,6 +176,20 @@ MediaController::MediaState MediaController::mediaStateFromPlayerctlOutput( } } +void MediaController::pause() { + int result = QProcess::execute("playerctl", QStringList() << "pause"); + LOG_DEBUG("Executed 'playerctl pause' with result: " << result); + if (result == 0) + { + LOG_INFO("Paused playback via Playerctl"); + wasPausedByApp = true; + } + else + { + LOG_ERROR("Failed to pause playback via Playerctl"); + } +} + MediaController::~MediaController() { if (playerctlProcess) { playerctlProcess->terminate(); diff --git a/linux/mediacontroller.h b/linux/mediacontroller.h index 32d57ad..72448e9 100644 --- a/linux/mediacontroller.h +++ b/linux/mediacontroller.h @@ -23,6 +23,8 @@ public: void removeAudioOutputDevice(); void setConnectedDeviceMacAddress(const QString &macAddress); + void pause(); + Q_SIGNALS: void mediaStateChanged(MediaState state);