История изменений
Исправление Zubok, (текущая версия) :
Они скипают XTranslateCoordinates чтобы много раз вызвать Peek?
Нет, много раз вызвать XCheckTypedWindowEvent(), которая ищет в очереди событий нужные, удаляет их и возвращает их.
А Peek разве не тыкает сервер? Шило на мыло?
Нет, не тыкает. Это функция xlib работает на стороне клиента с очередью событий, которые уже пришли от сервера, но еще не обработаны. Очередь находится на стороне клиента. И XCheckTypedWindowEvent() тоже, кстати, на стороне клиента. Никаких запросов таких нет, roundtrips тоже нет, соответственно.
Они скипают XTranslateCoordinates чтобы много раз вызвать Peek?
Они скипают ConfigureNotify, и еще часто этот трюк применяется к Expose. Если начал резко дергать окно туда-сюда, то сервер тебе пришлет кучу событий ConfigureNotify (или Expose). Если выполнять их по мере прихода, то все промежуточные перерисовки будут выполняться шлейфом. Вот ты остановился, а окно все вслед за твоими изменениями перерисовывается или передает шлейфы новых координат. Суть в том, что, промежуточные события тупо удаляются, а берется только последнее. В данном случае последнее ConfigureNotify.
Исправление Zubok, :
Они скипают XTranslateCoordinates чтобы много раз вызвать Peek?
Нет, много раз вызвать XCheckTypedWindowEvent(), которая ищет в очереди событий нужные, удаляет их и возвращает их.
А Peek разве не тыкает сервер? Шило на мыло?
Нет, не тыкает. Это функция xlib работает на стороне клиента с очередью событий, которые уже пришли от сервера, но еще не обработаны. Очередь находится на стороне клиента. И XCheckTypedWindowEvent() тоже, кстати, на стороне клиента. Никаких запросов таких нет, roundtrips тоже ytn, соответсnвенно.
Они скипают XTranslateCoordinates чтобы много раз вызвать Peek?
Они скипают ConfigureNotify, и еще часто этот трюк применяется к Expose. Если начал резко дергать окно туда-сюда, то сервер тебе пришлет кучу событий ConfigureNotify (или Expose). Если выполнять их по мере прихода, то все промежуточные перерисовки будут выполняться шлейфом. Вот ты остановился, а окно все вслед за твоими изменениями перерисовывается или передает шлейфы новых координат. Суть в том, что, промежуточные события тупо удаляются, а берется только последнее. В данном случае последнее ConfigureNotify.
Исправление Zubok, :
Они скипают XTranslateCoordinates чтобы много раз вызвать Peek?
Нет, много раз вызвать XCheckTypedWindowEvent(), которая ищет в очереди событий нужные, удаляет их и возвращает их.
А Peek разве не тыкает сервер? Шило на мыло?
Нет, не тыкает. Это функция xlib работает на стороне клиента с очередью событий, которые уже пришли от сервера, но еще не обработаны. Очередь находится на стороне клиента. И XCheckTypedWindowEvent() тоже, кстати, на стороне клиента. Никаких запросов таких нет, Roundtrips тоже, соответсвенно.
Они скипают XTranslateCoordinates чтобы много раз вызвать Peek?
Они скипают ConfigureNotify, и еще часто этот трюк применяется к Expose. Если начал резко дергать окно туда-сюда, то сервер тебе пришлет кучу событий ConfigureNotify (или Expose). Если выполнять их по мере прихода, то все промежуточные перерисовки будут выполняться шлейфом. Вот ты остановился, а окно все вслед за твоими изменениями перерисовывается или передает шлейфы новых координат. Суть в том, что, промежуточные события тупо удаляются, а берется только последнее. В данном случае последнее ConfigureNotify.
Исходная версия Zubok, :
Они скипают XTranslateCoordinates чтобы много раз вызвать Peek?
Нет, много раз вызвать XCheckTypedWindowEvent(), которая ищет в очереди событий нужные, удаляет их и возвращает их.
А Peek разве не тыкает сервер? Шило на мыло?
Нет, не тыкает. Это функция xlib работает на стороне клиента с очередью событий, которые уже пришли от сервера, но еще не обработаны. Очередь находится на стороне клиента. И XCheckTypedWindowEvent() тоже, кстати, на стороне клиента. Никаких запросов таких нет, Roundtrips тоже, соответсвенно.
Они скипают XTranslateCoordinates чтобы много раз вызвать Peek?
Они скипают ConfigureNotify и еще часто этот трюк применяется к Expose. Если начал резко дергать окно туда-сюда, то сервер тебе пришлет кучу событий ConfigureNotify (или Expose). Если выполнять их по мере прихода, то все промежуточные перерисовки будут выполняться шлейфом. Вот ты остановился, а окно все вслед за твоими изменениями перерисовывается или передает шлейфы новых координат. Суть в том, что, промежуточные события тупо удаляются, а берется только последнее. В данном случае последнее ConfigureNotify.