SDL uygulamasını çalıştırdıktan sonra kullanılamaz konsol


22

Bazı SDL tabanlı programlar (örneğin, prboom , dosbox ) konsoldan çalıştırıldığında (X değil) ve bir nedenden dolayı aniden sona erdiğinde (örneğin, öldürülen veya parçalananlar) ekran kilitlenir; Sadece kararır ve siz yeniden başlatana kadar siyah kalır.

Bu, konsolu aniden sonlandırılmış olsalar bile konsolu orijinal durumuna döndüren hello_video ve hello_triangle demolarının aksine .

Burada tam olarak yanlış giden nedir ve yeniden başlatmadan kurtarmanın bir yolu var mı?

Bunu Debian Squeeze'de gözlemledim . Diğer işletim sistemlerinden etkilenip etkilenmediğini bilmiyorum.


Düzenleme : Yalnızca konsolu (HDMI / RCA çıkışı, USB klavye) etkilenmeli, ssh bağlantılarını etkilememeli (iyi çalışmaya devam etmeliyim.)


Basmak bir tty değiştirebilir miyim alt+F1-5?
Jivings

@Jivings, hayır, bu tuş kombinasyonlarının etkisi yoktur.
finnw

Hmm .. SysRq ve REISUB komutlarını kullanabilir misiniz ?
Jivings

@Jivings hayır, ancak (1) Yeniden başlatma yeteneği sorun değil: ssh bağlantısından bir kapatma komutu verebilir ve (2) Yeniden başlatma gerektirmeyen bir çözüm arıyorum.
finnw

Oh ssh. Ssh isteminizde X sunucusunu öldürebilir ve yeniden başlatabilirsiniz. Veya çalışma seviyesini yeniden başlatın.
Jivings

Yanıtlar:


6

Bu neredeyse kesinlikle grafik sürücüsündeki bir hatadır. SDL, grafik API'sini başlatıyor gibi görünüyor, bu noktada grafik sürücüsünün ekranı devraldığı görülüyor. SDL'yi öldürdüğünüz için, grafik API'sini sıfırlamak için hiçbir zaman kod çalıştırılmadı ve bu yüzden sadece gelmeyecek grafik komutlarını beklemek için oturuyor.

Bu, kötü tasarlanmış bir grafik API'sini gösterir, ancak her şey özel olduğundan, bunu bilmenin ve düzeltmenin bir yolu yoktur.

(SDL'nin fare imlecini "tuttuğu" ve çöktüğü veya öldürüldüğü halde çözmediği, ancak ekrana getirmediği bir PC'de benzer davranışlar gözlemledim.)


1
SDL, segfaults durumunda bile temizliği normal şekilde dağıttığı bir "paraşüt" barındırıyor, bu yüzden bir şey hala doğru değil.
Flexo

Paraşüt SIGKILL'i değil sadece SIGSEGV'i yakalayacaktır.
Alistair Buxton

Bu ilginç, SIGKILLGLES2 demolarından birine göndermeyi denemek ve ne olacağını görmek zorunda kalacağım.
finnw

2017'de bir SDL uygulaması geliştiriyorum ve hala bir SDL uygulamasından çıkmak için CTRL-C kullanma konusunda muhtemelen bir hata olduğu görülüyor. Uygulamayı test ederken, tekrar tekrar çalıştırırken ve CTRL-C ile sonlandırırken SDL ve terminal girişinin kademeli olarak tepkisiz hale gelmesi sorununu yaşadım. Uygulamayı SDL uygulaması içinden düzgün bir şekilde bıraktıysam sorunum olmadığını öğrendim.
Paul Slocum

1

Bunun çok eski bir soru olduğunu biliyorum ama EmulationStation üzerinden Mupen64Plus çalıştırırken buna benzer bir problemle karşılaştım. Konsolum iyi görünecek, ancak yeniden başlatma yapana kadar klavye tamamen tepkisiz olacaktı.

Sorun, program sonlandırıldıktan sonra klavyenin RAW modunda kalmasıydı. Çözüm, şu satırı koşturan kabuk betiğinin sonuna eklemek oldu kbd_mode -a. Bu, klavyeyi XLATE moduna sıfırlar ve tekrar çalışmasını sağlar.

Bu, sorunun "siyah ekran" bölümünü çözmese de, videoyu geri almak için konsol çerçevesini sıfırlamanın benzer bir yolu olması gerektiğini düşünüyorum.


-5

SDL uygulamasındaki sorunun ne olduğunu söyleyemem ama sadece şunu yazarak:

reset

konsolu tekrar kullanılabilir hale getirmeli


4
... Konsol kullanılamaz durumdaysa, bunu nasıl yazması gerekiyor?
Jivings

1
Jivings ne dedi? Klavye yanıt vermiyor AFACT, sadece ekran değil.
finnw

Ve bu komutun ssh'dan (/ dev / tty1'e yönlendirilmesi) verilmesi de yardımcı olmadı.
finnw

Cevabınızı silmelisiniz, böylece unutulmayacaksınız
Alex L

3
Bir bonus olarak emsal baskısı rozetini alırsınız
David Sykes
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.