OberonCore https://forum.oberoncore.ru/ |
|
DIA: BlackBox Component Builder 1.6 + GTK2 https://forum.oberoncore.ru/viewtopic.php?f=134&t=3535 |
Страница 1 из 6 |
Автор: | Евгений Темиргалеев [ Понедельник, 15 Август, 2011 14:00 ] |
Заголовок сообщения: | Re: Первая итерация |
Иван Денисов писал(а): Я попробую поработать над HostMenus.Loop чтобы 100% проц не загружался. Вы ведёте журнал изменений?
|
Автор: | Иван Денисов [ Понедельник, 15 Август, 2011 19:17 ] |
Заголовок сообщения: | Re: Первая итерация |
Евгений Темиргалеев писал(а): Вы ведёте журнал изменений? Стараюсь цветом выделять правки, и добавляю комментарии, когда чувствую, что это необходимо, но журнал не веду. Там цветом выделено много от старых правщиков, также. Могу вести вверху писать, что и когда сделал, думаю Вы правы, так будет удобнее, если процесс пойдет.
|
Автор: | Иван Денисов [ Среда, 17 Август, 2011 08:56 ] | |||
Заголовок сообщения: | Итерация 2 | |||
Сделал петлю, но она не очень работала из-за неточного системного времени в LinLibc.clock(), вернул как было, НО починил сборку мусора! там кто-то убрал DEC(gc). Обнаружил, когда возникают ошибки при нажатии клавиш, это Код: HostMenus.OpenApp gtk_key_snooper_install() как то неверно работает обработчик нажатия клавиш. После его комментирования проблема пропала, вьюшки сохраняются, документы, проект можно создавать, компилировать и выполнять полностью в версии Линукс теперь, также работает вырезать вставить, но из-за отсутствия обработки клавиши CTRL этим сложно пользоваться!Выяснил, что Pango сделан но не до конца, не хватает хедров в Gtk2Gtk и рисуются сейчас шрифты неправильно, просто какой-то шрифт по умолчанию. Каким образом делали эти хедеры Gtk2? Вопрос автоматической хедерогенерации открыт. Сделал запуск графического приложения при запуске, в качестве демо вьюшки Текущая версия репозитория доступна в случае каких либо дальнейших коммитов так: Код: git clone ssh://USERNAME@git.molpit.ru/home/git/linproj YOURFOLDER
cd YOURFOLDER git reset --hard bb5a8bed8fcb0fe879a4f9ff6544fb2d8147284d
|
Автор: | Info21 [ Среда, 17 Август, 2011 09:47 ] |
Заголовок сообщения: | Re: Итерации |
Бурный прогресс Это кто ж такой редиска сборщик мусора поломал? |
Автор: | Иван Денисов [ Среда, 17 Август, 2011 17:27 ] |
Заголовок сообщения: | Re: Итерации |
Info21 писал(а): Это кто ж такой редиска сборщик мусора поломал? Я бы тоже хотел знать кто автор релиза BlackBox_Linux_V20050512_gtk2, который Вы мне прислали. Там самый свежий порт хедров GTK2 на КП, поэтому хотелось бы знать как это делают люди знающие?
|
Автор: | Евгений Темиргалеев [ Среда, 17 Август, 2011 19:48 ] |
Заголовок сообщения: | Re: Итерации |
Иван Денисов писал(а): Там самый свежий порт хедров GTK2 на КП, поэтому хотелось бы знать как это делают люди знающие? По-моему, качественное портирование хедеров --- дело ручное. Везде свой стиль, на сях извратиться по-всякому можно. Но под конкретный стиль --- можно подстроиться:- во-первых, использовать полуавтоматику (если надо --- есть перевод enum-ов) - во-вторых, если сишные заголовки генерятся автоматом (вроде на форуме это говорили про Gtk-е), то их точно можно автоматом и конвертировать. |
Автор: | Евгений Темиргалеев [ Четверг, 18 Август, 2011 10:27 ] |
Заголовок сообщения: | Re: Итерация 2 |
Иван Денисов писал(а): НО починил сборку мусора! там кто-то убрал DEC(gc). "там" это где? Хотелось бы посмотреть это место Kernel в нашей ветке.
|
Автор: | Иван Денисов [ Четверг, 18 Август, 2011 15:18 ] |
Заголовок сообщения: | Re: Итерация 2 |
Евгений Темиргалеев писал(а): Иван Денисов писал(а): НО починил сборку мусора! там кто-то убрал DEC(gc). "там" это где? Хотелось бы посмотреть это место Kernel в нашей ветке.Это место находится в HostMenus.Loop, там есть переменная gc и она никак не уменьшается в петле, хотя должна. И из-за этого не вызывается Kernell.Collect и сборки мусора не происходит. |
Автор: | Info21 [ Четверг, 18 Август, 2011 15:28 ] |
Заголовок сообщения: | Re: Итерации |
Иван Денисов писал(а): Я бы тоже хотел знать кто автор релиза BlackBox_Linux_V20050512_gtk2, который Вы мне прислали. Там самый свежий порт хедров GTK2 на КП, поэтому хотелось бы знать как это делают люди знающие? Мне Оминк выдали нечто, потом руку чуть-чуть приложил Трурль, но что он мог бы испортить сборку мусора -- совершенно невероятно.
|
Автор: | Евгений Темиргалеев [ Четверг, 18 Август, 2011 16:28 ] |
Заголовок сообщения: | Re: Итерация 2 |
Иван Денисов писал(а): Евгений Темиргалеев писал(а): Иван Денисов писал(а): НО починил сборку мусора! там кто-то убрал DEC(gc). "там" это где? Хотелось бы посмотреть это место Kernel в нашей ветке.P.S. Ещё одно подтверждение необходимости (для коллективной работы) подробного описания изменений в сопровождаем/дорабатываемом стороннем коде от на каждый чих вида: зачем? где? что? |
Автор: | Иван Денисов [ Четверг, 18 Август, 2011 17:00 ] |
Заголовок сообщения: | Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2 |
Да, может Омник специально убрали это на время, откуда знать, просто теперь этот сборщик (который был в исправности), вызывается, а раньше не вызывался. Так будет правильнее сказать. Собственно работа над проблемным местом — Loop. |
Автор: | Евгений Темиргалеев [ Четверг, 18 Август, 2011 20:20 ] |
Заголовок сообщения: | Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2 |
Иван Денисов писал(а): Собственно работа над проблемным местом — Loop. А нельзя ли этот Loop распилить и убрать, раз он для Gtk не естественен? Виндовый схематично:Код: WHILE ОжидатьИПолучитьСобытие(событие) DO Какие события: клавиатура, мышь, таймер и вроде всё. У GLUT как и Gtk свой главный цикл. Для отработки событий там задаются их обработчики, т.е. для GLUT можно было бы попробовать так:Обработать(событие) END Код: PROCEDURE ОбработчикМыши (x, y: INTEGER; ....); Loop соответственно GLUT-й крутится. Или в ББ-м Loop кроме обработки событий ещё какие-то нюансы?
VAR событие: Событие BEGIN Сформировать событие от мыши Обработать(событие) END Обработчик Мыши; PROCEDURE ОбрабочикКлавиатуры ... PROCEDURE ОбработчикТаймера ... |
Автор: | Иван Денисов [ Четверг, 18 Август, 2011 23:52 ] |
Заголовок сообщения: | Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2 |
Хорошая идея, попробовать вклиниться в петлю Gtk, сейчас она не вызывается и процесс крутится блэкбоксом самим. Недостатки: А. В серверной версии так же проблема и она не решена... Б. Хотелось бы, чтобы и без гуя GTK среда крутила ServicesActions и собирала мусор |
Автор: | Иван Денисов [ Пятница, 19 Август, 2011 00:00 ] | ||
Заголовок сообщения: | commit a7e4ad3224aec43137c516a8f38f865c347161de | ||
Резюме правок:
2. исправлен HostDialog.GetOK и HostDialog.Close 3. Добавлена загрузка HostMechanisms и теперь работает конструктор форм Предлагаемые сейчас независимые направления совместной работы:
2. HostMenus.Loop, задача придумать организацию прерываний или любой другой вариант, но не зависящий от GTK 3. Обработка нажатий клавиш HostMenus 4. Обработка мыши HostMenus 5. Доработка radioButton HostCFrames На неделю начиная с сегодня работать по этому направлению не буду, поэтому если кто-то хочет продвинуться по выделенным направлениям или любым другим, и выложить правки в репозиторий, то конфликтов не будет.
|
Автор: | Trurl [ Пятница, 19 Август, 2011 08:09 ] |
Заголовок сообщения: | Re: Итерация 2 |
Евгений Темиргалеев писал(а): P.S. Ещё одно подтверждение необходимости (для коллективной работы) подробного описания изменений в сопровождаем/дорабатываемом стороннем коде от на каждый чих вида: зачем? где? что? А еще хорошо бы иметь описание, как оно ваще работает. Иван Денисов писал(а): Это место находится в HostMenus.Loop, там есть переменная gc и она никак не уменьшается в петле, хотя должна. И из-за этого не вызывается Kernell.Collect и сборки мусора не происходит. 1. Вообще, вызывать Kernell.Collect из главного цикла необходимости нет. Это - некая эвристика, попытка сместить сборку мусора в периоды ожидания действий пользователя. 2. Обратите внимание на процудуру MenuSelect. 3. Если вставить DEC(gc) в HostMenus.Loop, сборщик мусора будет вызываться каждые 100 нажатий на клавишу/движений мышкой, что мне лично представляется несколько излишним. |
Автор: | Trurl [ Пятница, 19 Август, 2011 08:21 ] |
Заголовок сообщения: | Re: Итерация 2 |
Иван Денисов писал(а): рисуются сейчас шрифты неправильно, просто какой-то шрифт по умолчанию. Deja vu Trurl писал(а): GTK2 несколько разочаровал. Вроде, под виндовсом кое-как заработало. Попробовал запустить это дело на линухе - все тексты рисуются одним шрифтом. На FreeBSD - та же петрушка.
После некоторых экспериментов выяснил, что gdk_font_from_description возвращает один и тот же указатель. Еще через некоторое время догадался заглянуть в исходники. Код: GdkFont * gdk_font_from_description_for_display (GdkDisplay *display,PangoFontDescription *font_desc) { g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); g_return_val_if_fail (font_desc != NULL, NULL); return gdk_font_load_for_display (display, "fixed"); } Это у них называется "an approximation of the Pango font". |
Автор: | Иван Денисов [ Пятница, 19 Август, 2011 18:07 ] |
Заголовок сообщения: | Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2 |
Trurl писал(а): . Вообще, вызывать Kernell.Collect из главного цикла необходимости нет. Это - некая эвристика, попытка сместить сборку мусора в периоды ожидания действий пользователя. Тут вы немного неправы, сейчас HostMenus.Loop - главная петля в каркасе, она вызывается только один раз и крутит все в том числе сборку мусора, но сделана она через WHILE без прерываний и поэтому молотит 100% проц.3. Если вставить DEC(gc) в HostMenus.Loop, сборщик мусора будет вызываться каждые 100 нажатий на клавишу/движений мышкой, что мне лично представляется несколько излишним. Trurl писал(а): Обратите внимание на процудуру MenuSelect. Вот за это спасибо. От туда ее можно запросто убрать, она там теперь не имеет смысла, а gcCycles увеличить до 1000 или 10000 чтобы пореже очистка происходила, сейчас она работает в режиме почти непрерывного времени.Про панго шрифты. Да Вы правы, описания шрифтов требуется делать на панго полностью не используя Gdk и Gtk про это они и в документации пишут. |
Автор: | Иван Денисов [ Четверг, 01 Сентябрь, 2011 02:04 ] |
Заголовок сообщения: | commit: 2bda4870f9682013aee9d4d47702e1aeb552c1a0 |
В ядро Lin версии добавлен Call и Signature из BB1.6rc6 что позволило заменить полностью старый Meta на Meta из BB1.6rc6, и убрать зависимость от старой подсистемы Std, теперь Std полностью из версии 1.6rc6. Итак Lin версия сейчас заключена в подсистемах: Host Lin Gtk2 System Все остальное от bb1.6rc6.7z с сайта оберонкора без изменений абсолютно. Свои изменения я пишу в секции DONE в начале модуля и сами правки выделяю синим цветом. |
Автор: | Иван Денисов [ Воскресенье, 11 Сентябрь, 2011 10:29 ] |
Заголовок сообщения: | Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2 |
Кто-то делал клон? Если нет, то причина в том, что нужно выложить в SNV на oberoncore проект (нет возможности/желания/времени использовать git) или никто не нашел для себя задачи, которую хотел бы решить, чтобы сделать вклад в перенос? Есть ли желающие работать вместе над проблемой переноса дальше? |
Страница 1 из 6 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |