Kiedy niektóre programy oparte na SDL (np. Prboom , dosbox ) są uruchamiane z konsoli (nie X) i nagle kończą się z jakiegoś powodu (np. Zabity lub segfault), ekran się blokuje; Po prostu robi się czarny i pozostaje czarny, dopóki nie uruchomisz się ponownie.
Jest to w przeciwieństwie do wersji demonstracyjnych hello_video i hello_triangle, które przywracają konsolę do pierwotnego stanu, nawet jeśli zostaną nagle przerwane.
Co dokładnie dzieje się tutaj źle i czy istnieje sposób na odzyskanie go bez ponownego uruchamiania?
Zauważyłem to w Debian Squeeze . Nie wiem, czy dotyczy to innych systemów operacyjnych.
Edycja : Powinienem wyjaśnić, że dotyczy to tylko konsoli (wyjście HDMI / RCA, klawiatura USB), a nie połączeń ssh (które nadal działają dobrze).
alt+F1-5
?Odpowiedzi:
To prawie na pewno błąd w sterowniku graficznym. Wygląda na to, że SDL inicjuje graficzny interfejs API, w którym momencie sterownik graficzny przejmuje wyświetlanie. Ponieważ zabiłeś SDL, nigdy nie uruchomił kodu w celu deinicjalizacji interfejsu API grafiki, więc czeka tylko na polecenia graficzne, które nigdy nie nadejdą.
Wskazuje to na źle zaprojektowany graficzny interfejs API, ale ponieważ cała sprawa jest zastrzeżona, nie ma sposobu, aby to wiedzieć i jak to naprawić.
(Zauważyłem podobne zachowanie na komputerze, na którym SDL „chwyta” wskaźnik myszy i nie chwyta go, jeśli się zawiesi lub zostanie zabity, ale nigdy z wyświetlaczem.)
źródło
SIGKILL
jeden z pokazów GLES2 i zobaczyć, co się stanie.Wiem, że to bardzo stare pytanie, ale miałem problem podobny do tego, kiedy działałem Mupen64Plus przez EmulationStation. Moja konsola pokazałaby się dobrze, ale klawiatura nie reagowałaby do momentu ponownego uruchomienia.
Problem polegał na tym, że klawiatura pozostawała w trybie RAW po zakończeniu programu. Rozwiązaniem było dodać następującą linię do końca skrypt powłoki, który go prowadził:
kbd_mode -a
. Spowoduje to zresetowanie klawiatury do trybu XLATE i ponowne jej uruchomienie.Chociaż nie rozwiązuje to problemu „czarnego ekranu”, domyślam się, że musi istnieć analogiczny sposób zresetowania bufora ramki konsoli, aby odzyskać wideo.
źródło
Nie mogę powiedzieć, na czym polega problem z aplikacją SDL, ale po prostu wpisuję:
powinien sprawić, że konsola będzie znów użyteczna
źródło