История изменений
Исправление wandrien, (текущая версия) :
Но не приложение, а его GUI. Ведь если обрывается связь с интернетом, то приложения, использующие его не закрываются тут же сами по себе.
Сеанс должен быть открыт локально. А уже шина устанавливает коннект с другой, удалённой шиной. Если коннект отваливается, приложение просто перестаёт видеть ресурсы другой стороны до переподключения.
Вот так же и с X-сервером надо. Закрылся/упал, ну и пусть, приложение продолжает работать. Запустится новый - приложение переконнектится, и окошки снова появятся.
Даже в случае с X-сервером, падение приложений — не вина протокола, а убогость первой реализации xlib, которая при дисконнекте делала abort().
Ну а потом так и повелось.
Хотя ничего не мешает спокойно обрабатывать этот случай.
Для прикладного кода потеря коннекта с дисплеем равнозначна потере всех аллоцированных там ресурсов. Эту ситуацию можно и нужно обрабатывать гибко.
А именно, по таймеру пытаться установить коннект, а после успешного коннекта тулкит выделяет все нужные ресурсы заново.
Если прикладной код работает с обёртками тулкита, а не с идентификаторами X-ресурсов напрямую, он даже не заметит переподключения.
Всё можно было развивать и избавлять от недоделок в исходном дизайне, а не выкидывать, чтобы потом 10 лет просаживать человеко-часы просто в никуда.
Исходная версия wandrien, :
Но не приложение, а его GUI. Ведь если обрывается связь с интернетом, то приложения, использующие его не закрываются тут же сами по себе.
Сеанс должен быть открыт локально. А уже шина устанавливает коннект с другой, удалённой шиной. Если коннект отваливается, приложение просто перестаёт видеть ресурсы другой стороны до переподключения.
Вот так же и с X-сервером надо. Закрылся/упал, ну и пусть, приложение продолжает работать. Запустится новый - приложение переконнектится, и окошки снова появятся.
Даже в случае с X-сервером, падение приложений — не вина протокола, а убогость первой реализации xlib, которая при дисконнекте делала abort().
Ну а потом так и повелось.
Хотя ничего не мешает спокойно обрабатывать этот случай.
Для прикладного кода потеря коннекта с дисплеем равнозначна потере всех аллоцированных там ресурсов. Эту ситуацию можно и нужно обрабатывать гибко.
А именно, по таймеру пытаться установить коннект, а после успешного коннекта тулкит выделяет все нужные ресурсы заново.
Если прикладной код работает с обёртками тулкита, а не с идентификаторами X-ресурсов напрямую, он даже не заметит дисконнекта.