Xlib, почему перестало работать CopyFromParent ?

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Xlib, почему перестало работать CopyFromParent ?

Сообщение Cheb » 24.01.2016 17:15:37

Стал поднимать свой старый код - там в вызове XCreateWindow() в паре мест стояли CopyFromParent, как во многих примерах из инета.
В фпц 2.4 во времена оны компилировалось, в 2.6.4 обломило с Error: Incompatible type for arg no. 10: Got "ShortInt", expected "PVisual"
Заменил с бубном на вроде нужные конкретные значения - прога падает, BadMatch на невинной XInternAtom() ниже по течению.
И непонятно, что делать. То ли я обновляя код поломал, то ли из-за того, что я фпц 2.6.4 накатил тупо копированием на убунту, не обновлявшуюся с 2011, то ли ещё что :(

Буду рад, если кто нибудь ткнёт носом в *работающий* пример создания X11 + OpenGL окна на паскале , или подскажет, как вообще избавиться от этого тухлого X11 (обязательна поддержка OpenGL или OpenGL ES, переключения полноэкранный/оконный на лету и поддержка планшетов для рисования с чувствительностью к нажиму под линукс32/64 и под Raspberry Pi 2 (Raspbian 8))
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Xlib, почему перестало работать CopyFromParent ?

Сообщение Mirage » 26.01.2016 01:44:11

Работающий пример, писан с нуля с помощью этой книжицы.
Модуль CEXWindowApplication он как раз про инициализацию X11.
В CEOpenGL4Renderer то, что относится к X11 обрамлено {$IFDEF XWINDOW}...{$ENDIF}
CopyFromParent в XCreateWindow() вроде кушает...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Xlib, почему перестало работать CopyFromParent ?

Сообщение Cheb » 26.01.2016 21:48:58

Спасибо за ссыль! :D

Покопался немного. CopyFromParent = 0;, а параметр требует указатель. В сях, насколько мне известно, присваивать указателю 0 естественное дело, а в паскале типизация строже - заругался, что 0 - это нифига не nil. Возникает естественный вопрос: почему раньше компилировалось? Похоже, уши торчат из режима компиляции. Раньше весь проект был mode delphi, а в какой-то момент я его переиначил на mode objfpc из-за того что позарез понадобилась перезагрузка операторов.

Доберусь до убунтовой машины - попробую передать NIL вместо CopyFromParent, посмотрю, что получится.
Последний раз редактировалось Cheb 27.01.2016 02:51:04, всего редактировалось 1 раз.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Xlib, почему перестало работать CopyFromParent ?

Сообщение Mirage » 26.01.2016 23:17:08

Да, параметр AVisual там PVisual, т.е. указатель и в режиме Delphi передача CopyFromParent работает. Хотя он 0. Можно скастить к поинтеру.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Xlib, почему перестало работать CopyFromParent ?

Сообщение Cheb » 27.01.2016 12:21:49

ПОДТВЕРЖДЕНО. Передача NIL вместо CopyFromParent спасла ситуацию, никакой левый вижуал ниоткуда выковыривать не нужно, убрал лишние навороты в коде, добавленные чтобы выковырять его из GLX - и всё сразу заработало.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34


Вернуться в Free Pascal Compiler

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

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

Рейтинг@Mail.ru