#  Re: azot
vit01 (mira, 1) → Difrex  –  08:51:51 2016-05-18

Difrex> Например, у меня на федоре иксы через примерно час начинают отлупливать соединения от Azot, типа, слишком часто. Скорее всего надо один раз подключаться и работать в пределах этой сессии, но как это сделать - я не знаю.

Заглянул в исходники X.py из азота. Там такой интересный кусок кода:

====
def get_cursor_position():
while 1:
try:
data = display.Display().screen().root.query_pointer()._data

return {'x': data['root_x'], 'y': data['root_y']}
====


Смущает очень сильно, что ты инициализируешь объект display через display.Display() каждый запуск этой функции. Если учесть, что это происходит постоянно раз в секунду, я не удивляюсь, что иксам это сильно надоедает ;)

В примерах из документации по Xlib дисплей получают всего один раз и затем просто запрашивают у него нужные вещи.
На твоём месте я бы сначала просто получил root-объект, сохранил бы его где-нибудь и позже передавал в функцию.

У меня уже план есть по сабжу:

1. Переписать на python3
2. Убрать костыли и повысить производительность
3. Сделать опцию для ручного указания задержки в конфиге
4. Сделать автоматическую подгрузку конфига, чтобы в самый первый раз не вручную копировать

Если возражений не будет, то примусь за него.