САПР на Lazarus

Планы, идеология, архитектура и т.п.

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

Re: САПР на Lazarus

Сообщение zub » 04.09.2017 16:46:37

Проблема в доступе к памяти а не в математике, к томуже математика вся на моей стороне, из easylazfreetype я беру только контура глифов, безье считаю сам. Да и с отображением букв проблем никаких нет

Добавлено спустя 8 часов 37 минут 12 секунд:
2 дня коту под хвост изза дурацкого устройства EasyLazFreeType. Он при своей финализации уничтожает все что в нем прокешировано:
Код: Выделить всё
finalization

  if FreeTypeInitialized then
  begin
    TT_Done_FreeType;
    FreeTypeInitialized := false;
  end;

end.

после этого классы TFreeTypeFont не могут быть униичтожены - некоторые элементы (а может и все) их FGlyphTable уничтожаются повторно. Все созданые TFreeTypeFont нужно уничтожать до финализации EasyLazFreeType.
Мой FontManager ниче о форматах шрифтов поддерживаемых программой не знает, и uses EasyLazFreeType не делает... если сделать такой усес то проблемы нет - EasyLazFreeType будет финализирован гарантировано позже FontManager со всеми его загружеными TFreeTypeFont.
Но блин без uses EasyLazFreeType внутри FontManager компилятор почемуто упорно финализирует EasyLazFreeType раньше FontManager как бы я не тосовал цепочки uses. Придется делать патчик на EasyLazFreeType позволяющий позже убивать TFreeTypeFont.
Си не фонтан, а его тупой перевод на паскаль и попытка завернуть в классы - вообще говно((

Добавлено спустя 24 минуты 13 секунд:
https://bugs.freepascal.org/view.php?id=32371
чудес как всегда небывает))
zub
долгожитель
 
Сообщения: 2134
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение MylnikovDm » 05.09.2017 09:02:03

А зачем ты вообще уничтожаешь объекты класса TFreeTypeFont, если их должен уничтожать EasyLazFreeType?
Или ты свои объекты класса TFreeTypeFont создаёшь? Так это не правильно. Ты должен получить готовый объект, который тебе создаст EasyLazFreeType, который его потом и уничтожит.
Другое дело, что у них нет системы оповещения о том, что объект уничтожен, чтобы у себя, если что, ссылки поправить. Но в данном случае это не критично, поскольку созданные объекты класса TFreeTypeFont до завершения работы программы модулем EasyLazFreeType не уничтожаются.
MylnikovDm
новенький
 
Сообщения: 71
Зарегистрирован: 15.02.2007 21:26:10
Откуда: Челябинск

Re: САПР на Lazarus

Сообщение zub » 05.09.2017 10:46:47

Их не уничтожает EasyLazFreeType, их нужно уничтожать самостоятельно. Но при "классическом" использовании они будут уничтожены до финализации EasyLazFreeType, и проблема незаметна
zub
долгожитель
 
Сообщения: 2134
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение MylnikovDm » 05.09.2017 11:14:50

Значит придётся уничтожать FontManager руками из процедуры закрытия приложения, а не в секции finalization модуля.
MylnikovDm
новенький
 
Сообщения: 71
Зарегистрирован: 15.02.2007 21:26:10
Откуда: Челябинск

Re: САПР на Lazarus

Сообщение zub » 05.09.2017 11:23:54

Очень не хотелось бы, темболее патч в багрепорте решает проблему.

Добавлено спустя 2 часа 54 минуты 35 секунд:
Вроде патч приняли, извиняюсь за переполох
zub
долгожитель
 
Сообщения: 2134
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение Лекс Айрин » 05.09.2017 16:50:02

У меня залился.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3923
Зарегистрирован: 19.02.2013 16:54:51

Пред.

Вернуться в Разработки на нашем сайте

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

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

Рейтинг@Mail.ru