OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 26 Апрель, 2024 13:52

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Реакция ББ на клик мыши
СообщениеДобавлено: Среда, 28 Июнь, 2006 13:01 

Зарегистрирован: Четверг, 24 Ноябрь, 2005 17:05
Сообщения: 5
В ББ, при нажатии и удерживании кнопки мыши происходит полная загрузка процессора. Можно ли эту проблему как то решить ?
Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 28 Июнь, 2006 14:19 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 18:08
Сообщения: 76
И правда...... :o


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реакция ББ на клик мыши
СообщениеДобавлено: Среда, 28 Июнь, 2006 14:50 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Engiren писал(а):
Можно ли эту проблему как то решить?


А проблема-то хоть в чём состоит?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реакция ББ на клик мыши
СообщениеДобавлено: Среда, 28 Июнь, 2006 15:24 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1429
Сергей Губанов писал(а):
А проблема-то хоть в чём состоит?


Дело в следующем. В некоторых случаях ББ вместо того чтобы нормально обрабатывать сообщения начинает опрашивать мышь на предмет её местоположения. Хорошо бы вообще удалить Input у Ports.Rider и Ports.Frame. :evil:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 29 Июнь, 2006 13:25 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ну да, если компоненту необходимо интерактивно реагировать на мышь, то он по TrackMsg входит в цикл опроса мыши.
Есть способ без этого обойтись, он был предложен в BlackBox Mailing List и основывается на использовании Services.Action. Однако точно решение сейчас не помню, а архив рассылки дома. Вечером посмотрю...

В принципе, в цикле опроса можно давать WinApi.Sleep где-то на 20мс...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 29 Июнь, 2006 15:11 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Илья Ермаков писал(а):
Ну да, если компоненту необходимо интерактивно реагировать на мышь, то он по TrackMsg входит в цикл опроса мыши.
Есть способ без этого обойтись, он был предложен в BlackBox Mailing List и основывается на использовании Services.Action. Однако точно решение сейчас не помню, а архив рассылки дома. Вечером посмотрю...

В принципе, в цикле опроса можно давать WinApi.Sleep где-то на 20мс...


Достаточно сделать слип даже на 1 мс - загрузка процессора сразу упадет почти до нуля.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 29 Июнь, 2006 16:29 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1429
Илья Ермаков писал(а):
Ну да, если компоненту необходимо интерактивно реагировать на мышь, то он по TrackMsg входит в цикл опроса мыши.

А вот лучше бы он не входил. :(

Цитата:
В принципе, в цикле опроса можно давать WinApi.Sleep где-то на 20мс...

Ах, если бы дело было только в этом...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 29 Июнь, 2006 19:35 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Вот кое-что из Mailing List по поводу этой проблемы... Во-первых, чтобы выполняющиеся в фоне Actions не замораживались, нужно вызывать Services.actionHook.Step. Во-вторых, есть уже упомянутый Sleep.

The solution to this indeed is to call Services.actionHook.Step during a
timed loop.
This procedure exactly does the stepping of the background tasks
(Services.Actions) and works fine while being called on command level also.
(It should not be called by Actions, however!)
(Well, let me also clarify that this is my understanding of the module
Services and not a documented feature.)

How come you didn't try this yourself after having suggested it in xyBoss3?

Note that by adding such a call in HostPorts.Input followed by a conditional
Kernel.Sleep and having Services.actionHook.Step a little bit more robust
towards calls from anywhere (even Actions) any BB system becomes much more
responsive and won't do any excess CPU heating while tracking the mouse,
e.g. making a text selection ;)

Regards
Marco Ciot


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 22 Май, 2007 15:32 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Alexey Veselovsky писал(а):
Достаточно сделать слип даже на 1 мс - загрузка процессора сразу упадет почти до нуля.


В 1.6-rc5 так и сделано. :(

Попробуйте на форме в режиме редактирования выделить контролы рамкой ...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB