Курощение nomachine клиента - за шаг до ... ((1С, wine@Etersoft, freenx, NXClient for Windows))
Модераторы: dimbor, Модераторы разделов
Re: Курощение nomachine клиента - за шаг до ...
А вот точно именно эта бага, но ее как-бы и нет. Что бы это значило?
Насколько накопал, окно приложения по новым правилам (каким???) перед закрытием должно сообщить приложению о своем withdrawn state (отмененном состоянии?). Причем сообщить при посредничестве wm. Соответственно, nx-клиентский wm по своему убожеству на такое посредничество между приложением и его-же окном итить не желает. Больше никому этот факт нормально жить не мешает, а вайну - мешает.
Даже если я сейчас со скрипом сооружу StateNotify из клиента, это уберет задержку при закрытии только при нажатии на на кнопку с крестиком в окошке. Всякие ОК/Отмена/Закрыть в приложении так и будут тормозить, потому что в таких случаях на клиентский wm только приходит команда закрытия окна с сервера ... через две секунды. А общее непонимание процесса не позволяет мне полезть в nxagent за истиной.
Re: Курощение nomachine клиента - за шаг до ...
Да, все это очень сложно и крайне не понятно. Может для начала в RX@etersoft задержку уменьшить с 2 секунд до, где-нибудь, 300 мс? Какая разница, это ж все равно кастыль какой-то.
Re: Курощение nomachine клиента - за шаг до ...
Подскажите, пожалуйста! В виндовых NX-клиентах столкнулся с такой ерундой: подцепляюсь к серверу FreeNX с виндовой машины, авторизация проходит нормально, комп готов загрузить сессию, но тут появляется сообщение "Negotiating link parameters", клиент долго думает, потом пишет, что типа связь не установлена и предлагает убить сессию. И что самое главное, это проявляется не со всеми машинами: некоторые сразу работают нормально, некоторые выдают такую лажу.
Как бороться? Патч не помогает! Заранее балгодарен
Как бороться? Патч не помогает! Заранее балгодарен
Re: Курощение nomachine клиента - за шаг до ...
Логи наше все. В node.conf надо заставить сервер оставлять логи (хранятся в ~/.nx/всякаяфигня) и смотреть туда до прозренья.
Re: Курощение nomachine клиента - за шаг до ...
Это не костыль, это - хуже. Как я пол, это использование новым вайном _NET_WM_STATE (freedesktop) вместо WM_STATE (Motif). И со старым wm это начинание взаимности не находит.
У Этерсофт тут все шансы оказаться не при делах, т.к. они делают вайн на основе открытого, а эта хрень придумана именно там.
Хотя я еще разбираюсь, может быть и вру. Щас посмотрю, как в коде 1.0.8 вайн свои окна закрывал...
Re: Курощение nomachine клиента - за шаг до ...
С мыслью о том, что любой эксцентричности должен быть предел, решил более не лезть со своим уставом в чужой монастырь, ...а лезть с чужим.
Короче, зарегился на bugs.etersoft.ru. И (пусти козла в огород), завел там целых три баги:
http://bugs.etersoft.ru/show_bug.cgi?id=3794
http://bugs.etersoft.ru/show_bug.cgi?id=3795
http://bugs.etersoft.ru/show_bug.cgi?id=3797
Все потому, что трясуся над рутлесом своим ненаглядненьким
Короче, зарегился на bugs.etersoft.ru. И (пусти козла в огород), завел там целых три баги:
http://bugs.etersoft.ru/show_bug.cgi?id=3794
http://bugs.etersoft.ru/show_bug.cgi?id=3795
http://bugs.etersoft.ru/show_bug.cgi?id=3797
Все потому, что трясуся над рутлесом своим ненаглядненьким
Re: Курощение nomachine клиента - за шаг до ...
Господа. На конец мои руки добрались до nx сервера.
Хотелось бы чуть-чуть ясности с последними сборками.
Полигонная система для натурных испытаний была выбрана Centos 5.3.
Fedora не подошла, т.к. там нашлось неадекватное поведение с переключением клавиатуры на русский.
Я так понял что мой комплект текущих сборок лежит в http://updates.etersoft.ru/pub/Etersoft/RX@Etersoft/3.3.0-9/
Или где-то ещё?
А сборка в 3.3.0_13-16.1 не полная? Или freenx-server из этой сборки адекватно работает с nx из 3.3.0-9?
Хотелось бы чуть-чуть ясности с последними сборками.
Полигонная система для натурных испытаний была выбрана Centos 5.3.
Fedora не подошла, т.к. там нашлось неадекватное поведение с переключением клавиатуры на русский.
Я так понял что мой комплект текущих сборок лежит в http://updates.etersoft.ru/pub/Etersoft/RX@Etersoft/3.3.0-9/
Или где-то ещё?
А сборка в 3.3.0_13-16.1 не полная? Или freenx-server из этой сборки адекватно работает с nx из 3.3.0-9?
Re: Курощение nomachine клиента - за шаг до ...
Venberg писал(а): ↑10.04.2009 02:45Я так понял что мой комплект текущих сборок лежит в http://updates.etersoft.ru/pub/Etersoft/RX@Etersoft/3.3.0-9/
Или где-то ещё?
А сборка в 3.3.0_13-16.1 не полная? Или freenx-server из этой сборки адекватно работает с nx из 3.3.0-9?
Читайте тему, pls. Ну хотя бы самый хвост.
Суть в том, что такая мелочь пузатая как freenx-server, таких монстров как сборки библиотек nx не волнует напрочь.
16 сборка от всех прочих на текущий момент отличается двумя моментами - хорошим и плохим.
Хороший состоит в том, что туда приложен патч и доп файлы локали, которые подменяют свойства окон типа COMPOUND_TEXT типом UTF8_STRING. Это позволяет виндовому клиенту отображать в рутлес русские заголовки окон у Motif-программ "like OpenOffice". Линуксовому клиенту должно быть пох - очень к этому стремился, но не проверял.
Плохой момент заключается в том, что 16 сборка собрана только под альт, да и то только под сизиф. Об этом давеча писалось.
P.S.: Джентльмены и джентль-вумены (при наличии)!
В названии темы упомянут nomachine клиент. И цель темы сделать так, чтобы клиенту стало хорошо. И все потуги постоянных обитателей направлены именно на это. Сия ноша частенько требует недетской исследовательской работы. То-что здесь мы часто лезем в код библиотек nx и freenx-server, означает невозможность решить какую либо задачу с помощью доводки только клиента.
Вся эта муть означает, что у пишущих сюда уже не должно быть проблем с установкой, настройкой и запуском NX(библиотек, сервера, клиента) с базовой функциональностью от nomachine.
Для таких вопросов имеет смысл заводить новые темы. Мало того, уже написанные здесь сообщения, служат нехилым руководством, даже если забыть про всяческие вики. Сам читаю и плачу.
Уважаемые модераторы! Подскажите, как бы структурировать на форуме все NX-терминальное обсуждение на установку, настройку и допилку?
Re: Курощение nomachine клиента - за шаг до ...
dimbor писал(а): ↑10.04.2009 03:24Хороший состоит в том, что туда приложен патч и доп файлы локали, которые подменяют свойства окон типа COMPOUND_TEXT типом UTF8_STRING. Это позволяет виндовому клиенту отображать в рутлес русские заголовки окон у Motif-программ "like OpenOffice". Линуксовому клиенту должно быть пох - очень к этому стремился, но не проверял.
Плохой момент заключается в том, что 16 сборка собрана только под альт, да и то только под сизиф. Об этом давеча писалось.
Честно говоря, я просто потерялся в объеме 21 страницы. Мне почему-то казалось что патчи затрагивают и nx и free-nx пакеты. Самостоятельную сборку я пока не производил. Кроме как самого free-nx из исходников.
Про альт я помню. Но для других дистрибутивов тоже выкладываются пакеты. Вот и хотелось протестировать последний набор. Клиент будет win.
Re: Курощение nomachine клиента - за шаг до ...
Если гора не идет к Магомету, ... приходится внимательно читать ICCCM.
В результате чтения и экспериментов выяснил, что главная бага, мешающая жить рутллесу на новых вайнах, вовсе даже и не бага, а так - нюансы оттенков
ICCCM говорит, что перед закрытием окна оно переходит в Withdrawn State путем изменения или удаления свойства WM_STATE.
С одной стороны, WM рутлеса (nxagent + nxwin) раньше не использовал WM_STATE (кроме спецслучая, к вайну никаким боком не относящегося). Т.е. этого свойства там не было. Это не мешает работать подавляющему большинству программ. Они смотрят, что перед закрытием WM_STATE отсутствует, и закрывают свои окна спокойно.
Новый вайн же ожидает факта изменения/удаления - ждет PropertyNotify. Кому интересно, это написано в dlls/winex11.drv/event.c, wait_for_withdrawn_state(), фильтр там - is_wm_state_notify. При UnmapWindow эта функция вызывается сразу. Отсутствия WM_STATE у окна не проверяется, хотя get_window_wm_state() в том-же файле имеется.
После установления причины жить стало совсем просто. Не стал соваться со свиным рылом в калашный ряд и патчить вайн. Зачем отнимать хлеб у разработчиков. Да и наводящая ужас организация winehq этот патч вместе со мной скорее всего на ноль помножит.
Выродил очередной патч nxagent, посредством которого WM_STATE в нужные моменты заводится и изменяется. Даже nx-клиенту, оказалось, его экспортировать не надо.
Заработало. В какой-то момент хотелось поставить себе памятник, вот только не определился с местом
Патч цепляю, можно тестить.
Итого, поскольку меня убедили, что 3794 - и не бага вовсе, 3795 - тоже можно обойти, то остается только 3797. На данный момент она создает только эстетические неудобства. Значит займусь, как будет время.
Рутлес под виндой считаю работоспособным, пока кто-то не переубедит меня в обратном. Неспешно буду писать сопроводиловку и письма итальянцам.
В результате чтения и экспериментов выяснил, что главная бага, мешающая жить рутллесу на новых вайнах, вовсе даже и не бага, а так - нюансы оттенков
ICCCM говорит, что перед закрытием окна оно переходит в Withdrawn State путем изменения или удаления свойства WM_STATE.
С одной стороны, WM рутлеса (nxagent + nxwin) раньше не использовал WM_STATE (кроме спецслучая, к вайну никаким боком не относящегося). Т.е. этого свойства там не было. Это не мешает работать подавляющему большинству программ. Они смотрят, что перед закрытием WM_STATE отсутствует, и закрывают свои окна спокойно.
Новый вайн же ожидает факта изменения/удаления - ждет PropertyNotify. Кому интересно, это написано в dlls/winex11.drv/event.c, wait_for_withdrawn_state(), фильтр там - is_wm_state_notify. При UnmapWindow эта функция вызывается сразу. Отсутствия WM_STATE у окна не проверяется, хотя get_window_wm_state() в том-же файле имеется.
После установления причины жить стало совсем просто. Не стал соваться со свиным рылом в калашный ряд и патчить вайн. Зачем отнимать хлеб у разработчиков. Да и наводящая ужас организация winehq этот патч вместе со мной скорее всего на ноль помножит.
Выродил очередной патч nxagent, посредством которого WM_STATE в нужные моменты заводится и изменяется. Даже nx-клиенту, оказалось, его экспортировать не надо.
Заработало. В какой-то момент хотелось поставить себе памятник, вот только не определился с местом
Патч цепляю, можно тестить.
Итого, поскольку меня убедили, что 3794 - и не бага вовсе, 3795 - тоже можно обойти, то остается только 3797. На данный момент она создает только эстетические неудобства. Значит займусь, как будет время.
Рутлес под виндой считаю работоспособным, пока кто-то не переубедит меня в обратном. Неспешно буду писать сопроводиловку и письма итальянцам.
- Вложения
-
- nxa_wine_close_delay.zip
- (797 байт) 116 скачиваний
Re: Курощение nomachine клиента - за шаг до ...
это будет лежать где-нить в районе http://updates.etersoft.ru/pub/Etersoft/RX...ft/3.3.0_14-18/
там же немного обновленный freenx, критика по которому ожидается с нетерпением.
все что соберётся, появится в течении этого дня
Re: Курощение nomachine клиента - за шаг до ...
Работоспособность уже перевалила за 99.99%.
У тебя, на тестовом (wine 1.0.10-16/11), есть еше шероховатость в работе 1С с калькулятором, календарем и "удалением помеченных объектов".
При перетаскивании эти окна очень сильно дергаются. После таких подергиваний калькулятор иногда не хочет закрываться крестиком (ALT+F4 срабатывает), иногда вообще пропадает с экрана (пардон, не пропадают, окно календаря дернулось и убежало из под мышки за край экрана). После свертывания/развертывания 1С эти окна также могут пропасть из виду. Возникает блокировка экрана: ALT+F4 помогает но не всегда.
Вот еще что заметил: первое окно 1С "Выбор баз" - в панели задач есть, 2е окно "Авторизация доступа" - в панели отсутствует, 3е окно база уже открыта - есть (в десктопе во всех 3х режимах 1С в панели задач присутствует).
Re: Курощение nomachine клиента - за шаг до ...
Djelf писал(а): ↑11.04.2009 19:36
Работоспособность уже перевалила за 99.99%.
У тебя, на тестовом (wine 1.0.10-16/11), есть еше шероховатость в работе 1С с калькулятором, календарем и "удалением помеченных объектов".
При перетаскивании эти окна очень сильно дергаются. После таких подергиваний калькулятор иногда не хочет закрываться крестиком (ALT+F4 срабатывает), иногда вообще пропадает с экрана (пардон, не пропадают, окно календаря дернулось и убежало из под мышки за край экрана). После свертывания/развертывания 1С эти окна также могут пропасть из виду. Возникает блокировка экрана: ALT+F4 помогает но не всегда.
r12.tmp5, на тестовом. Свертывание/развертывание блокировал при любых открытых дочерних окнах уже давно. Дергание - да, есть, но не приводит ни к чему фатальному.
Re: Курощение nomachine клиента - за шаг до ...
Проверь "Удаление помеченных объектов", это окно 100% исчезает при сворачивании 1С с nxclient-3.3.0.6-r12.5-win32.exe, возможно что-то изменилось в wine 1.0.10-16/11 (в десктопе все ок).
P.S. на своем тестовом сегодня проверить с разными версиями wine не могу - току нету
Re: Курощение nomachine клиента - за шаг до ...
Это у меня просто монитор слишком здоровый. Ларчик открывается просто: сейчас поведение таких недо-диалоговых окон приравнивается к меню (т.к. виндово-wm-ного заголовка не имеют). Для избежания двойной перерисовки при открытии в пределах клиентской области основного окна они не создаются и не контролируются клиентским wm. Поэтому вылезает такая гадость. Если же при открытии окно выходит за основное, то оно контолируется wm, и хрен 1с-ку свернешь, пока от него не избавишься.
Могу вернуть полный контроль wm за такими окнами. Тогда придется опять смотреть на быстродействие графики. Двойная отрисовка не должна вернуться по другим причинам. Но мне не понравилась тогда мелькание при открытии меню, и я не стал выключать этот метод.
По желанию выложу сборку, где отключено.
Upd: Да я и без желания щас ее выложу. Окно 1С-а как правило разворачивается на весь экран, и контроль - нужен.
Re: Курощение nomachine клиента - за шаг до ...
Это сборка. Насколько тормозная, судить вам.
А еще оказалось - я наглый лгун. 3797 тоже придется отозвать, т.к. она ушла после решения 3795.
И дергания календаря с калькулятором на нее уже не спишешь. Скорее всего, следствие моих художеств в nxwin. Придется еще раз посмотреть. Но слегка попозжа - не надо совершать все подвиги в один день, потом будет совсем нечего делать
Upd 13.04.09: Компромис достигнут, убрал, ищите ниже.
А еще оказалось - я наглый лгун. 3797 тоже придется отозвать, т.к. она ушла после решения 3795.
И дергания календаря с калькулятором на нее уже не спишешь. Скорее всего, следствие моих художеств в nxwin. Придется еще раз посмотреть. Но слегка попозжа - не надо совершать все подвиги в один день, потом будет совсем нечего делать
Upd 13.04.09: Компромис достигнут, убрал, ищите ниже.
Спасибо сказали:
Re: Курощение nomachine клиента - за шаг до ...
Из двух прошлых сборок получил одну. Описание проблемы, вынудившей выложить прошлую тормозную, находится здесь. В результате применения дедовского способа (проверки наличия заголовка) удалось "плохие" окошки идентифицировать и призвать к ответу, не трогая остальных. Им установлен контроль wm и модальность для избежания пропадания. Правда чем можно заниматься в 1с с модальным календарем и калькулятором, как-то не придумывается
Дергания при их перетаскивании пока остались. Корень зла в winPositionWindowMultiWindow(). Она не использует своих параметров и вычисляет позицию как-то странно - хоть правильно, но не вовремя. Как разберусь, каким способом ее отлаживать - перепишу.
Ловите r12.tmp7.
Upd 18.04.09: Протух, ниже.
Дергания при их перетаскивании пока остались. Корень зла в winPositionWindowMultiWindow(). Она не использует своих параметров и вычисляет позицию как-то странно - хоть правильно, но не вовремя. Как разберусь, каким способом ее отлаживать - перепишу.
Ловите r12.tmp7.
Upd 18.04.09: Протух, ниже.
Re: Курощение nomachine клиента - за шаг до ...
Повторно прошу, создавайте новые темы с вопросами по установке и настройке NX. Курощение - это получение новых возможностей клиента, доводка кода и тестирование. И материалы, лежащие здесь, ипользуются в этом деле весьма активно. Остальная инфа здесь объективно только мешает.
Вот если бы Ваш вопрос звучал: "С оригинальным клиентом все хорошо, а этот курицу не жарит и футбол не показывает", то это был бы вопрос по теме.
Если Вам не отвечают, то это либо означает, что появился очередной нетривиальный случай. Либо и скорее всего - информация, предоставленная Вами, недостаточна для дачи какого-то вразумительного ответа. Разве за исключением общей нотации, могущей задеть чувствие собственного достоинства вопрошавшего.
Re: Курощение nomachine клиента - за шаг до ...
Абалдеть. Как все здорово. Будем пользовать, спасибо!
Ведь это же прям конкретная бага, причем трудно находимая (ибо не должна проявляться в новых wm). Может если не патч, то хотя бы описание этого безобразия им в багзиллу накропать?
Ведь это же прям конкретная бага, причем трудно находимая (ибо не должна проявляться в новых wm). Может если не патч, то хотя бы описание этого безобразия им в багзиллу накропать?
Re: Курощение nomachine клиента - за шаг до ...
You are wellcome!
В баге ссылочку дал на описание происходящего. А winehq я боюсь - сурьезные они там все больно
Re: Курощение nomachine клиента - за шаг до ...
Ага, нужно. Даже из-за того, что если бы виндовый клиент умел сворачиваться в виндовый же трей, то мой патч "в лоб" этому бы помешал. Но это пока из разряда: "если бы у бабушки были токосъемники, это была бы не бабушка, а троллейбус"
Re: Курощение nomachine клиента - за шаг до ...
bsavelev писал(а): ↑11.04.2009 19:34
это будет лежать где-нить в районе http://updates.etersoft.ru/pub/Etersoft/RX...ft/3.3.0_14-18/
там же немного обновленный freenx, критика по которому ожидается с нетерпением.
все что соберётся, появится в течении этого дня
Прекрасный повод поблагодарить bsavelev-a и etersoft за то, что оперативно сделаны сборки nx для всех альтов, мандривы, убнты, федоры8. Спасибо!
Также прошу покритиковать freenx. Сам бы занялся, да весь в клиенте по уши. Все-же есть шанс дожать рутлес до юзабельности.
А еще и основную работу никто не отменял
Re: Курощение nomachine клиента - за шаг до ...
Уделил время дерганию и скачкам при перетаскивании по экрану окон 1с-ки. Проблема возникает только при перемещении проблемных окон, которым заголовки рисует не wm, а вайн. Все остальное таскается на просто отлично. И проблема опять выходит за рамки не только клиента, но и технологии NX. Есть разница, за что тащить - за нос или за ...другой атрибут. NX умеет и так, и этак. В итоге все опять против простого юзера.
Когда юзер тащит окно с wm-ным (локальным виндовым) заголовком, за него это делает винда, а терминальная прога ставится в известность о начале и завершении действия. Два события, потом подтверждение и рисование кэшированного содержимого. Это было "за нос".
А когда мы лишаем окно заголовка (его уже нарисовали за нас), то перетаскивание окна за якобы родной заголовок погонит в одну сторону поток событий от мыши, а в другую - ответное перемещение содержимого. Да оно все еще и жмется наверное, прореживанием.
Если вспомнить, что перетаскивание - процесс с обратной связью, визуальной, то на тонком канале и получится: это не окно за пределы экрана сигануло, а это юзер его туда затащил, только не успел увидеть, что творит.
Вот и написал сначала, что не фатально. А на самом деле - ппц полный присходит. Это мы тут м-а-асквичи: каналы толстые - в полный рост ходить можно, за кольцевой жизни нет,... и т.д. Вот и не сильно заметно. А даже на реальном ADSL уже должно скакать - мама не горюй. В общем получаем кучу дурного трафика с идиотским результатом.
Видимо и при перетаскивании внутренних окошек (документов, журналов...) можно при желании достичь похожего результата на тонком канале. Так?
Виновник безобразия известен. Да - это вайн! Кто бы мне сказал, почему он берет на себя работу wm по рисованию оформления окон? Да еще не всех (MDI+???).
Когда юзер тащит окно с wm-ным (локальным виндовым) заголовком, за него это делает винда, а терминальная прога ставится в известность о начале и завершении действия. Два события, потом подтверждение и рисование кэшированного содержимого. Это было "за нос".
А когда мы лишаем окно заголовка (его уже нарисовали за нас), то перетаскивание окна за якобы родной заголовок погонит в одну сторону поток событий от мыши, а в другую - ответное перемещение содержимого. Да оно все еще и жмется наверное, прореживанием.
Если вспомнить, что перетаскивание - процесс с обратной связью, визуальной, то на тонком канале и получится: это не окно за пределы экрана сигануло, а это юзер его туда затащил, только не успел увидеть, что творит.
Вот и написал сначала, что не фатально. А на самом деле - ппц полный присходит. Это мы тут м-а-асквичи: каналы толстые - в полный рост ходить можно, за кольцевой жизни нет,... и т.д. Вот и не сильно заметно. А даже на реальном ADSL уже должно скакать - мама не горюй. В общем получаем кучу дурного трафика с идиотским результатом.
Видимо и при перетаскивании внутренних окошек (документов, журналов...) можно при желании достичь похожего результата на тонком канале. Так?
Виновник безобразия известен. Да - это вайн! Кто бы мне сказал, почему он берет на себя работу wm по рисованию оформления окон? Да еще не всех (MDI+???).
Re: Курощение nomachine клиента - за шаг до ...
Я конечно может чего не прокачал, но мне кажется диагноз не верен. Т.е. бага действительно связанна с wm_state, но то, как она связана для меня не очевидно.
В wait_for_withdrawn_state вся катавасия происходит при, не просто наличии wm_state, а когда и до тех пор пока оно равно WithdrawnState:
Код: Выделить всё
while (data->whole_window && ((data->wm_state == WithdrawnState) == !set))
// set =false в нашем случае
Т.е. проблема, вроде, не в отсутствии wm_state, а в том, что его никто не изменяет при закрытии (и не понятно кто ставит, если это не nx), а это бага уже другого порядка и пока никак не локализована, так что писать про нее бесполезно.
Разубедите? Может не догнал чего?