XCreateWindow дает идентификатор окна, который конфликтует с уже существующим окном - PullRequest
3 голосов
/ 02 марта 2009

Я создал программу, которая создает окно, используя XCreateWindow. Это прекрасно работает в моей системе и во многих других, но во многих случаях вызывает несколько странных проблем. например полученный от него идентификатор конфликтует с идентификатором терминала, с которого запускается программа. В одном таком случае gnome-терминал также имеет идентификатор окна 0x2400001 (родительский элемент является корневым), а идентификатор окна моей программы также равен 0x2400001 (его родительский элемент также является корневым). Любые предложения, что может пойти не так?

Ответы [ 3 ]

0 голосов
/ 16 мая 2009

Xserver создает уникальный непрозрачный идентификатор для каждого окна. Метод, который вы используете для идентификации идентификатора окна, вероятно, неправильный.

Ваш вопрос является признаком другой проблемы. Какую проблему вы действительно пытаетесь решить?

0 голосов
/ 22 марта 2012

В дополнение к другим ответам: запустите xwininfo -root -all (см. Его справочную страницу для получения дополнительной информации). Проверьте идентификатор окна терминала gnome и идентификатор окна вашего приложения.

0 голосов
/ 02 мая 2009

Идентификаторы окон, вероятно, уникальны только в каждом подключении к X-серверу (т. Е. Разные процессы, подключающиеся к X-серверу, могут получить один и тот же идентификатор окна, а X-сервер использует идентификатор окна AND И соединения для внутреннего разделения). *

Я думаю, что X не дает никаких обещаний по поводу идентификатора окна, например они уникальны для разных процессов или чего-либо еще, поэтому лучше не пытаться использовать их для каких-либо других целей.

Я не удивлюсь, увидев реализации X, которые просто возвращают последовательные числа в качестве идентификаторов окон, начиная с одного и того же значения (например, 1) для каждого соединения, что объясняет ваш опыт, например, первое окно в каждом клиенте, похоже, имеет тот же идентификатор окна в этой реализации X.

...