Консоль непригодна после запуска SDL-приложения

При использовании определенных SDL программ (например prboom , dosbox ) запускаются с консоли (а не X) и прерываются по какой-либо причине (например, убиты или segfaults), экран блокируется; Он просто черным и остается черным, пока вы не перезагрузитесь.

Это контрастирует с демонстрациями hello_video и hello_triangle , которые возвращают консоль в исходное состояние, даже если они завершены внезапно.

Что именно здесь происходит, и есть способ восстановить его без перезагрузки?

Я наблюдал это в Debian Squeeze , Я не знаю, затронуты ли другие ОС.


Изменить . Я должен прояснить, на что влияет только консоль (выход HDMI /RCA, клавиатура USB), а не ssh-соединения (которые продолжают работать нормально.)

21 голос | спросил finnw 13 J0000006Europe/Moscow 2012, 01:24:17

3 ответа


6

Это почти наверняка ошибка в графическом драйвере. Похоже, SDL инициализирует графический API, после чего графический драйвер принимает дисплей. Поскольку вы убили SDL, он никогда не запускал код для деинициализации графического API, и поэтому он просто сидит в ожидании графических команд, которые никогда не появятся.

Это указывает на плохо спроектированный графический API, но поскольку все это запатентовано, нет никакого способа узнать и никак не исправить его.

(Я наблюдал подобное поведение на ПК, где SDL «захватывает» указатель мыши и не отрывает его, если он сбой или был убит, но никогда с дисплеем.)

ответил Alistair Buxton 21 J0000006Europe/Moscow 2012, 22:15:13
1

Я знаю, что это очень старый вопрос, но я столкнулся с аналогичной проблемой при запуске Mupen64Plus через EmulationStation. Моя консоль будет хорошо отображаться, но клавиатура будет полностью не реагировать, пока я не выполнил перезагрузку.

Проблема заключалась в том, что клавиатура оставалась в режиме RAW после завершения программы. Решение заключалось в том, чтобы добавить следующую строку в конец сценария оболочки, который ее запускал: kbd_mode -a. Это сбрасывает клавиатуру в режим XLATE и позволяет ей снова работать.

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

ответил glindsey1979 19 Jam1000000amThu, 19 Jan 2017 04:31:24 +030017 2017, 04:31:24
-5

Я не могу сказать, в чем проблема с приложением SDL, но просто набрав:

reset

должен снова использовать консоль

ответил neofutur 14 J0000006Europe/Moscow 2012, 16:04:58

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132