Как разделить подключение дисплея Wayland между несвязанными частями кода - PullRequest
0 голосов
/ 01 марта 2019

В настоящее время я пишу библиотеку, которая может использоваться клиентским программным обеспечением wayland.Предполагается, что библиотека в основном не зависит от клиентского инструментария (в настоящее время только Qt, но другие инструментарии с поддержкой Wayland также должны иметь возможность использовать его).Для этого требуется только указатель wl_display, передаваемый в процедуру инициализации, которая извлекается из инструментария GUI.После завершения инициализации библиотека должна работать без контакта с инструментарием, чтобы сделать его совместимым с несколькими инструментами.

Проблема возникает, когда моей библиотеке требуется пара глобальных прокси объектов (т. Е. * 1004).*).Библиотека использует пользовательский wl_registry для привязки пользовательских прокси к требуемым глобальным объектам.Однако с точки зрения сервера все прокси-серверы для этих объектов эквивалентны.Когда события, содержащие прокси-объекты объекта, отправляются сервером, они могут содержать ссылку на прокси-сервер инструментария или библиотеки.Это приводит к проблемам, потому что нет простого способа их дифференцировать.Когда инструментарий получает такие события, он вслепую предполагает, что пользовательские данные прокси-сервера принадлежат инструментарию, и использует их, даже если полученный прокси-сервер принадлежит моей библиотеке.

Есть ли способ примирить такие несвязанныекод, или такое использование выходит за рамки библиотеки / протокола Wayland, и я должен изменить свое решение?

1 Ответ

0 голосов
/ 18 марта 2019

Разработчик Qt Wayland здесь.

Когда инструментарий получает такие события, он вслепую предполагает, что пользовательские данные прокси-сервера принадлежат инструментарию, и использует их, даже если прокси-сервер, к которому он получилмоя библиотека.

Вы уверены в этой части?Когда вы привязываетесь к глобальному, вы создаете новый прокси-объект, я не понимаю, как инструментарий может узнать об этом ... Или вы говорите об аргументах в событиях, посылаемых глобальными переменными.Т.е. wl_pointer.set_cursor и тому подобное?Было бы неплохо, если бы вы могли быть более конкретными о том, что идет не так ...

...