Не работает мышь после "выясняю, а может кто уже?"

Здесь можно сообщить о найденных багах в Far.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Не работает мышь после "выясняю, а может кто уже?"

Post by NightRoman »

Пока не баг репорт, а прощупывание ситуации...

Кто-нибудь сталкивался с тем, что после некоторых операций (пока вычисляю каких, а может кто уже?) в Фаре вдруг перестает откликаться мышь? Прокрутка элементов не работает, кликом не меняется текущий элемент панели и т.п. Происходит не часто, но эдак раз в день сталкиваюсь. Кто-то испытывал подобное?

Фар3, последние сборки (но может так и давно, но я недавно Фар3 пользую).
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Не работает мышь после "выясняю, а может кто уже?"

Post by DrKnS »

Ищи плагин, запускающий что-то консольное и не восстанавливающий за собой предыдущий consolemode.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Не работает мышь после "выясняю, а может кто уже?"

Post by NightRoman »

DrKnS wrote:Ищи плагин, запускающий что-то консольное и не восстанавливающий за собой предыдущий consolemode.
consolemode - это что, можно подробнее или линк в мсдн какой? Плагин-то может и мой, но без него я это.. работать не могу :)
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Не работает мышь после "выясняю, а может кто уже?"

Post by DrKnS »

http://msdn.microsoft.com/en-us/library ... 86033.aspx

Конкретно - кто-то теряет ENABLE_MOUSE_INPUT.
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Re: Не работает мышь после "выясняю, а может кто уже?"

Post by t-rex »

DWORD InMode=0, OutMode=0, ErrMode=0;
GetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), &OutMode);
GetConsoleMode(GetStdHandle(STD_ERROR_HANDLE), &ErrMode);
GetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), &InMode);

чёта там запускаем


SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), OutMode);
SetConsoleMode(GetStdHandle(STD_ERROR_HANDLE), ErrMode);
SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), InMode);
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Не работает мышь после "выясняю, а может кто уже?"

Post by NightRoman »

Спасибо за наводки. То, что это мой плагин причастен - сомнений вроде нет. Но вот выловить пока не получается, где это происходит. Немного настораживает то, что ничего с этим не менялось в плагине с переходом с 2-ки на 3-ку. В Фар2 проблем не было, в Фар3 есть. Ну ладно, куда копать, вроде ясно, буду постепенно локализовать ситуацию, это дело времени.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Не работает мышь после "выясняю, а может кто уже?"

Post by NightRoman »

Делением тестов пополам проблему вычленил. Если в PowerShellFar запускать cmd /c, например, такие команды

Code: Select all

cmd /c echo Sorry mouse.
cmd /c dir
то мышь перестает работать. Также перестает работать Ctrl+C, заметил прям сейчас, пока копировал сюда куски кода. Буду думать, как лечить. Но все-таки, в Фар2 нет таких проблем. Точно это в плагине нужно подкручивать? Это ведь в каждом таком плагине и случае тогда надо приседать. Раньше было не надо..
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Не работает мышь после "выясняю, а может кто уже?"

Post by NightRoman »

Обернул OpenW сохранением/восстановлением режимов. Проблема ушла. Но точно это надо делать в плагине?

Надо так надо, тогда пойду и в других местах так делать, ибо PSF может дергаться на любое событие Фара где угодно, и любой вызываемый PowerShell код может вызвать cmd /c или подобное. Все же в Фар2 такие приседания были не нужны, потому и есть сомнение (не утверждение), что все в порядке в кухне. Кривые плагины или то, что они вызывают, вероятно, всегда будут находиться (причем иногда не сразу в процессе разработки и отладки), почему из-за этого должна отключаться мышь в Фаре? Разве Фар не может, получив управление и приготовившись получать свои события, обеспечить режимы консоли, которые эти свои события позволяют? Фар2 мог, или там что-то принциально по-другому было, что теперь нельзя?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Не работает мышь после "выясняю, а может кто уже?"

Post by DrKnS »

Разве Фар не может, получив управление и приготовившись получать свои события, обеспечить режимы консоли, которые эти свои события позволяют?
Не может - плагины могут менять режим и в отдельных нитях, что отловить невозможно.
Фар2 мог, или там что-то принциально по-другому было, что теперь нельзя?
Far 1-2 "мог", делая setconsolemode, грубо говоря, на каждое нажатие клавиши.
Это достаточно неоптимально, поэтому теперь всё сами, да.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Не работает мышь после "выясняю, а может кто уже?"

Post by NightRoman »

Ясно, политика понята. Но жаль, лишняя головная боль и потенциальные проблемы у пользователей из-за нерадивых плагинописателей.

А неоптимально было - это как? Никто не жаловался. Или надоело это кодить все время? Тоже резон, конечно.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Не работает мышь после "выясняю, а может кто уже?"

Post by NightRoman »

DrKnS wrote:
Разве Фар не может, получив управление и приготовившись получать свои события, обеспечить режимы консоли, которые эти свои события позволяют?
Не может - плагины могут менять режим и в отдельных нитях, что отловить невозможно.
Просто размышляю, а не критикую - это соображение, наверное, все же натянутое (но интересны возражения, если есть). Навряд ли плагины будут этим заниматься в фоне (зачем?), а если будут то: 1) это нехорошо и это надо пресекать (просто не будут плохиша пользовать, пока не пофиксен); 2) а теперь чем лучше, если такие плохиши вдруг есть? только еще хуже теперь, раньше хоть иногда Фар сам мог себя подремонтировать, а теперь точно нет.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Не работает мышь после "выясняю, а может кто уже?"

Post by NightRoman »

Проанализировав расклад для PowerShellFar, пришел к выводу, что ничего лучшего не остается, кроме как обернуть практически все экспортируемые функции автоматическим сохранением и восстановлением режима консоли, так как заставлять пользователя заморачиваться над этими пустяками в скриптах PowerShell или модулях Фарнет - не дело.

В итоге тесты отработали за то же самое время и никаких тормозов нигде не наблюдаю. Но выглядит это все как-то некрасиво. Почему это Фар сам не делает, как он уже делал раньше, мне так и не понятно. Фар был непотопляем плагинами в таких пустяках. А теперь плагины должны помнить об этих мелочах, избегать потопления. Усложнять жизнь плагинам - регрессия, имхо.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Не работает мышь после "выясняю, а может кто уже?"

Post by NightRoman »

DrKnS wrote:Far 1-2 "мог", делая setconsolemode, грубо говоря, на каждое нажатие клавиши.
Это достаточно неоптимально, поэтому теперь всё сами, да.
Было удобно. Неоптимально - это преувеличено, как показал практический опыт (проверено именно на каждое нажатие клавиши и даже более). Сделайте, пожалуйста, как было в Фар2, если это не сложно, от этого будет только польза.
User avatar
HaRT
Moderator
Posts: 10863
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Не работает мышь после "выясняю, а может кто уже?"

Post by HaRT »

Пока доводы NightRoman'а звучат весьма убедительно: польза для стабильности очевидна, а вред с точки зрения производительности не выявлен.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Не работает мышь после "выясняю, а может кто уже?"

Post by NightRoman »

Кроме того, в Фаре это будет оптимальнее сделано, чем в плагине, ибо Фару нужно только установку своих режимов делать, а плагину сначала нужно делать сохранение текущего режима (лишняя работа по сравнению с Фаром) и только потом восстановление.
Post Reply

Return to “Глюки и баги”