Rirusha / Cassette

GTK4/Adwaita application that allows you to use Yandex Music service on Linux operating systems
GNU General Public License v3.0
170 stars 12 forks source link

Критическая ошибка интерфейса Android при работе Cassette #113

Closed nebulosa2007 closed 2 days ago

nebulosa2007 commented 4 weeks ago

Использую Cassette (Devel), всё стандартно, всё играет.

У меня подключен телефон к ноутбуку через GSConnect, когда запущен Cassette, то на телефоне появляется циклическая ошибка System UI Error (у меня Android 13, Pixel 4) и весь интерфейс не реагирует на нажатия или тапы, телефон не просыпается, экран не включает (только после нескольких нажатий кнопки включения). Если нажать Wait, то она появится через некоторое (короткое, до минуты) время, если нажать Close app, то весь интерфейс перезапустится, cпустя пару минут эта ошибка вылезает вновь.

photo_2024-06-12_22-54-06

Как только выключаешь Cassette - всё работает без нареканий, другие плееры (mpv, youtube-music) которыми тоже можно управлять с телефона - работают корректно.

Сделал git bisect:

git bisect start
# status: waiting for both good and bad commits
# bad: [ee521868babc3789a23dfcddfd560e58662da43d] style: исправить форматирование
git bisect bad ee521868babc3789a23dfcddfd560e58662da43d
# good: [08d0308d1354d51c0366ae0bdbab4ae820a82b4d] Добавлены донатеры к списку
git bisect good 08d0308d1354d51c0366ae0bdbab4ae820a82b4d
# good: [a86e111c2d0a79b4b61f3bbbf0f277c7134cccc2] Add notifaciotion about now playing when app not active
git bisect good a86e111c2d0a79b4b61f3bbbf0f277c7134cccc2
# bad: [01684abb9c2cdaa37a787a101798d8064c14d7b6] Добавить MimeType yandexmusic
git bisect bad 01684abb9c2cdaa37a787a101798d8064c14d7b6
# bad: [8ecf2522b30b510b5d0c185c69842108592baaf2] Сделаны чрезвычайно важные изменения
git bisect bad 8ecf2522b30b510b5d0c185c69842108592baaf2
# bad: [cf9f316ae935251ba198d14271f27d0b309dbbe8] Перевести шаблон в .blp
git bisect bad cf9f316ae935251ba198d14271f27d0b309dbbe8
# bad: [3cd84be9a189ee9d7c196e2b698f7a8eb3373a65] fdFix and some experimental changes
git bisect bad 3cd84be9a189ee9d7c196e2b698f7a8eb3373a65
# good: [0c6c6e589961cee24170d10a6cff1dc8e9ff6292] Update documenters
git bisect good 0c6c6e589961cee24170d10a6cff1dc8e9ff6292
# good: [aaf062f80125eb6c6ef08afbefe2fcab9f7e3280] Fix https://t.me/CassetteGNOME_Discussion/7378
git bisect good aaf062f80125eb6c6ef08afbefe2fcab9f7e3280
# bad: [6d7b4a34ba4b622c8536fd76a6aa8dde1d958058] Fix
git bisect bad 6d7b4a34ba4b622c8536fd76a6aa8dde1d958058
# bad: [7be6b9df9e15c80727254dc181d54217c483f20d] Fix https://t.me/CassetteGNOME_Discussion/7364
git bisect bad 7be6b9df9e15c80727254dc181d54217c483f20d
# first bad commit: [7be6b9df9e15c80727254dc181d54217c483f20d] Fix https://t.me/CassetteGNOME_Discussion/7364

Проблемный коммит: https://github.com/Rirusha/Cassette/commit/7be6b9df9e15c80727254dc181d54217c483f20d

Ampernic commented 4 weeks ago

Попытался воспроизвести на Samsung A73 + Pixel Experience (Android 14)

Проблема к сожалению не проявилась изображение изображение

Видимо проблема либо подвязана на версию дройда, либо на прошивку....

Касета из Nightly репы 13.06.2024

nebulosa2007 commented 4 weeks ago

Эта ошибка проявляется не сразу, через какое-то время. Я когда проверял разные версии сборок, нашёл некоторую закономерность как её спровоцировать - выключаешь экран телефона, через минуту-две пробуешь тапнуть пальцем или взять в руку. В этот момент, телефон включает экран и распознаёт лицо. Так вот, на этом этапе экран не включается, приходится несколько раз нажимать кнопку включения, интерфейс кое-как проявляется, он включается и разблокируется. Через ещё некоторое количество секунд использования телефона - появляется ошибка выше.

Прошивка не кастомная, стандартная, все обновления стоят. Другого телефона нет, да и как это поможет, не менять же телефон из-за плейера. В консоли никакого нового вывода нет.

Еще, есть зацепка, накидал скрипт (по мотивам README утилиты playerctl)

#!/bin/env bash

unset G_MESSAGES_DEBUG

echo "# Prints 'Now playing: Lana Del Rey - Born To Die - Video Games'"
playerctl metadata --format "Now playing: {{ artist }} - {{ album }} - {{ title }}"
echo Status: $?
echo
export G_MESSAGES_DEBUG=playerctl
echo "# Prints 'Total length: 3:23'"
playerctl metadata --format "Total length: {{ duration(mpris:length) }}"
echo Status: $?
unset G_MESSAGES_DEBUG
echo
echo "# Prints 'At position: 1:16'"
playerctl position --format "At position: {{ duration(position) }}"
echo Status: $?
echo
echo "# Prints 'Artist in lowercase: lana del rey'"
playerctl metadata --format "Artist in lowercase: {{ lc(artist) }}"
echo Status: $?
echo
echo "# Prints 'STATUS: PLAYING'"
playerctl status --format "STATUS: {{ uc(status) }}"
echo Status: $?
echo
export G_MESSAGES_DEBUG=playerctl
echo "# Prints the time remaining in the track (e.g, 'Time remaining: 2:07')"
playerctl metadata --format "Time remaining: {{ duration(mpris:length - position) }}"
echo Status: $?
unset G_MESSAGES_DEBUG
echo
echo "# Prints volume from 0 - 100"
playerctl metadata --format "Volume: {{ volume * 100 }}"
echo Status: $?
echo
export G_MESSAGES_DEBUG=playerctl
playerctl metadata --format '{{ playerName }}: {{ artist }} - {{ title }} {{ duration(position) }}|{{ duration(mpris:length) }}'
echo Status: $?
unset G_MESSAGES_DEBUG

Всё отрабатывает нормально, кроме:

...
# Prints 'Total length: 3:23'
(playerctl:168872): playerctl-DEBUG: 09:13:27.485: Getting list of player names from D-Bus
(playerctl:168872): playerctl-DEBUG: 09:13:27.486: Playerctld is running. Getting names from there.
(playerctl:168872): playerctl-DEBUG: 09:13:27.489: Getting list of player names from D-Bus
(playerctl:168872): playerctl-DEBUG: 09:13:27.491: initializing player: io.github.Rirusha.Cassette-Devel
Could not execute command: function duration can only be called on track position values
Status: 1
...
# Prints the time remaining in the track (e.g, 'Time remaining: 2:07')
(playerctl:168888): playerctl-DEBUG: 09:13:27.549: Getting list of player names from D-Bus
(playerctl:168888): playerctl-DEBUG: 09:13:27.550: Playerctld is running. Getting names from there.
(playerctl:168888): playerctl-DEBUG: 09:13:27.553: Getting list of player names from D-Bus
(playerctl:168888): playerctl-DEBUG: 09:13:27.555: initializing player: io.github.Rirusha.Cassette-Devel
Could not execute command: Got unsupported operand types for -: 'i' and 'x'
Status: 1

На других плейерах скрипт отрабатывает штатно.

Rirusha commented 1 week ago

https://github.com/Rirusha/Cassette/commit/e3fd50c2da5557dff05bc1274122d93b8307753c

Здесь уменьшено отправка состояния проигрывания в 10 раз. Это может решить вашу проблему.

Rirusha commented 2 days ago

Была ли решена проблема?

nebulosa2007 commented 2 days ago

Кажется, да, всё наладилось. Отзывчивость тоже улучшилась, при нажатии на кнопки управления на телефоне.

Скрипт выше также с ошибками отрабатывает, но это уже второстепенно.