Page 2 of 21

Re: Netsurf

Posted: Sat Jun 01, 2013 9:31 pm
by SoUrcerer
Если коротко: библиотеки из /dependencies должны быть помещены в папку с menuetlibc, затем все зависимые библиотеки (libdom, libnsfb и так далее) должны быть скомпилированы через make-файлы в папках src. Получится куча объектников, из этих o-файлов должны быть удалены файлы lib.o, а сами объектники должны быть помещены в соответствующие a-библиотеки. Со временем я сделаю нормальную систему сборки, пока что так. Обратите внимание, что большинство либ зависит от libwapcaplet, поэтому заголовочные файлы из папки include должны быть доступны компилятору для сборки библиотек.
После сборки библиотек их нужно отправить в lib из menuetlibc, и можно приступать к сборке netsurf. Нужно пройтись по каждой папке, и выполнить соответствующие make-файлы, это (опять же) должно дать кучу o-файлов. Эти файлы нужно поместить в netsurf/objs (там уже есть все нужные бинарники), и затем в папке netsurf/objs запустить make.all. В итоге должен получиться рабочий бинарник.
Обратите внимание на netsurf/objs/divdi3.c, sprintf.c и stubs.c. По странным причинам, мой gcc не желает использовать divdi3 и sprintf, которые есть в libgcc и libc, поэтому я использую опен-сурсные исходники. На других компьютерах всё может быть иначе. В stubs.c содержатся "затычки", весьма грубые. Вполне возможно, что netsurf при прокрутке падает из-за этих самых затычек.
Особый интерес должен вызывать файл netsurf/framebuffer/gui.c, это файл, содержащий main()-функцию для netsurf, и делающий первичные настройки. Менять размер окна, опции по умолчанию (размеры тулбара и т.п.), пути ("/hd0/1/res/:/tmp9/1/netsurf:res/") здесь. Здесь же меняется target для отрисовки окна (ram, sdl, vnc, что-то ещё).
В папке netsurf/framebuffer хранятся заголовочные файлы для ttf - можно поменять имя шрифта по-умолчанию, добавить ещё шрифтов. По идее, можно добавить много шрифтов, но не помещать в папку netsurf/res все, но я не пробовал.

В libnsfb в папке surface/sdl.c хранится код, ответственный за непосредственно отрисовку и обработку событий. Поломанное двоеточие следует искать именно там. На основе sdl.c можно построить код нативного интерфейса для framebuffer, это не должно быть очень сложно. Сейчас в sdl.c должна быть отключена параллельная обработка событий. За одно в той же папке в tests/ есть несколько интересных демок, в том числе tinysvg - при вкомпилированной поддержке libtinysvg она способна смотреть SVG. Но эту libtinysvg я не портировал, так как она зависит от libxml2 (или зависела раньше).

В папке libercurl хранятся затычки для curl, они дерьмовые, и, пожалуй, раз у нас новые сокеты, нужно сделать нормальные net/socket.h и netinet.

Вообще, это референсная версия. По-хорошему, нужно
а) Скачать самые-самые свежие исходники (эти протухли на пару месяцев)
б) Портировать libcurl в Колибри для newlib
в) Собрать netsurf для newlib с нативным интерфейсом
г) ???
д) PROFIT!!!

Re: Netsurf

Posted: Sat Jun 08, 2013 1:40 am
by SoUrcerer
Тестовый бинарник с поддержкой downloader и событий мыши. Очередь событий и таймауты не работают, так что фризы наличествуют - но уже намного меньше, а так же иногда мышь может заклинить в режиме прокрутки страницы. Основные фризы из-за событий сети. Так как downloader сохраняет всегда в один файл, несколько копий его запускать нельзя, и приходится ждать, пока он завершится. Всё это время перерисовку делать нельзя, так как "умный" netsurf решит, что в системе есть многопоточность, и запустит еще десяток downloader'ов.
Напомню, требуется для работы папка /res - она может быть теперь на hd0/1, bd0/1 и tmp9/1. В этой папке должен быть шрифт sans.ttf. Вывод русских букв отлично работает. Ввод букв - вообще никаких не работает.

Как протестировать сеть:
1) Запустить netsurf http://мойсайтик.ру
2) открыть CPU и board
3) при первых признаках зависания downloader убить его - беспощадно
Из-за этого может быть неправильная инфа считана вместо таблиц стилей и т.п., но это временные неудобства. Имейте в виду, что на форуме из примерно 30 файлов downloader виснет на 7-8, так что загружать страницу придется долго.

Re: Netsurf

Posted: Sat Jun 08, 2013 2:10 am
by SoUrcerer
А вот и немного поправленная версия с поддержкой Content-Type по содержимому. Часть картинок, тем не менее, может не отображаться (битые, что ли).

Re: Netsurf

Posted: Sat Jun 08, 2013 10:10 am
by SoUrcerer
SoUrcerer wrote:Напомню, требуется для работы папка /res - она может быть теперь на hd0/1, bd0/1 и tmp9/1. В этой папке должен быть шрифт sans.ttf.
Я выразился совсем не ясно:
требуется папка /res/, с содержимым, как в первом архиве, но еще и sans.ttf вдобавок.

Добавляю архив, в котором и новый netsurf, и нужная папка.

Re: Netsurf

Posted: Sat Jun 08, 2013 5:18 pm
by Mario_r4
Вот теперь работает. Проверил на ревизии 3543 - до слияния транка с новым сетевым стеком. Было трудно... но я убил всех дауновлоадеров и увидел наш форум. На последней ревизии 3627 не работает, так как даунылоадеры превратились в камикадзе -суицидников.

Вопрос - почему программа жрет много процессора? Может mcall 10 поможет?

Re: Netsurf

Posted: Sat Jun 08, 2013 5:53 pm
by SoUrcerer
Программа жрет много процессора по двум причинам:
1) Netsurf использует довольно интересную систему событий - с очередью. Поэтому события Колибри нужно переводить в события Netsurf. Так, для Колибри любое изменение мышки - одно событие, а для Netsurf - разные. Фактически, мне приходится отслеживать отпускание мыши, и так далее. Еще более интересными являются множественные таймеры очереди событий.
В общем, чтобы эта хрень работала максимально быстро, у меня там check_for_event вместо очереди событий. В итоге часть событий до программы не доходит (отпускание мыши, например), но оно хотя бы не замирает посреди считывания файла из-за сброса таймера очереди.
В общем, будет поправлено, но чуть позже.
2) Как я говорил, нельзя использовать несколько downloader одновременно. Поэтому в момент открытия файла по сети netsurf ожидает завершения процесса downloader. Мне приходится останавливать обработку событий netsurf, чтобы умный браузер не открыл еще пару потоков скачивания :)

В общем, я сейчас попробую работу с сетью на новой сборке через свой fetcher - и если заработает, то я выпилю downloader, и можно будет скачивать файлы ресурсов в несколько потоков.

Re: Netsurf

Posted: Tue Jun 11, 2013 6:49 pm
by ppk-center
я улучшил иконки (сделал ярче)

Re: Netsurf

Posted: Tue Jun 11, 2013 6:56 pm
by SoUrcerer
Спасибо, пока что нет возможности их проверить - в netsurf эти png компилируются внутрь программы.

Re: Netsurf

Posted: Tue Jun 11, 2013 7:32 pm
by ppk-center
а вшить их туда никак нельзя?

Re: Netsurf

Posted: Tue Jun 11, 2013 7:44 pm
by SoUrcerer
Нужно переконвертировать png в c-файлы при помощи GIMP, с сохранением всех параметров - и тогда можно

Re: Netsurf

Posted: Tue Jun 11, 2013 7:58 pm
by ppk-center
про какие параметры вы говорите

Re: Netsurf

Posted: Tue Jun 11, 2013 8:27 pm
by SoUrcerer
http://websvn.kolibrios.org/filedetails ... hrobber0.c - должен получиться такой формат

Re: Netsurf

Posted: Fri Jun 21, 2013 5:46 pm
by ppk-center
а вообще у text-based browser классический вид может быть от NetSurf взять только движок а всё остальное как в textbrowser

Re: Netsurf

Posted: Fri Jun 21, 2013 8:07 pm
by SoUrcerer
Можно такое сделать, только некогда.

Re: Netsurf

Posted: Sat Jun 22, 2013 7:44 pm
by ppk-center
но это самый оптимальный вариант