Page 12 of 30

Re: Icon - менеджер иконок рабочего стола

Posted: Mon Jun 17, 2013 11:47 pm
by Mario_r4
GerdtR wrote:Ну да. Кстати понял, чего такой слишком сильный прирост занимаемой ОЗУ. Я библиотеку загрузил дополнительную, box_lib. Вот она забирает.
Библиотека находится в разделяемой памяти, которая общая для всех приложений, так что не смертельно в целом. Единственно при инициализации идет потеря дополнительных 4 Кб, для каждого проведшего инициализацию потока, потому происходит запись на страницу, где хранятся указатели некоторых внешних функций. К сожалению один из разработчиков по своему незнанию сделал так и решил не исправлять в дальнейшем (ну, кто нынче какие-то жалкие 4 Кб считает?) и библиотека утратила полную реентерабельность с физической точки зрения. Хотя прикладному программисту все это до фени конечно.

Re: Icon - менеджер иконок рабочего стола

Posted: Tue Jun 18, 2013 5:32 pm
by GerdtR
Пашет!!!! Всё, теперь иконки нормально можно таскать. Ещё пару мелких правок, подгонку координат и будет всё супер. Ну толком ещё не тестил, но вот пробная версия готова.

Re: Icon - менеджер иконок рабочего стола

Posted: Tue Jun 18, 2013 7:18 pm
by IgorA
Mario_r4 wrote:К сожалению один из разработчиков по своему незнанию сделал так и решил не исправлять в дальнейшем (ну, кто нынче какие-то жалкие 4 Кб считает?) и библиотека утратила полную реентерабельность с физической точки зрения.
Не будем говорить кто но все знают что это был слоненок :|
Вообще любые библиотеки которые используют функцию lib_init не реентерабельны, это касается не только box_lib.
GerdtR в твоем коде эта функция не вызывается:

Code: Select all

import  box_lib,\
        edit_box_draw,'edit_box',\
        edit_box_key,'edit_box_key',\
        edit_box_mouse,'edit_box_mouse'
Так что пока можешь по этому поводу не беспокоится.

Re: Icon - менеджер иконок рабочего стола

Posted: Tue Jun 18, 2013 7:19 pm
by Leency
Как ты это реализовал - через курсор? Хочу такое же в Eolite'e.

Re: Icon - менеджер иконок рабочего стола

Posted: Tue Jun 18, 2013 8:06 pm
by Serge
GerdtR
Отлично сделано !
Современное железо поддерживает курсоры размером 64x64 (АМД ещё умеет и масштабировать в два раза, получается максимальный размер спрайта 128х128) . Надо будет сделать поддержку больших курсоров в ядре, а то в 1920х1080 всё слишком мелкое.

Re: Icon - менеджер иконок рабочего стола

Posted: Tue Jun 18, 2013 9:18 pm
by Mario_r4
GerdtR wrote:Пашет!!!! Всё, теперь иконки нормально можно таскать. Ещё пару мелких правок, подгонку координат и будет всё супер. Ну толком ещё не тестил, но вот пробная версия готова.
Забавно видеть, как замораживается Gears - хотя на самом деле он продолжает работать.
У меня только одно замечание по программе - не нашел как посмотреть путь запуска для уже существующих иконок. В общем нужно допилить немного менеджер иконок и можно заливать, альтернативным ICON. Старый пока лучше не удалять, даже если в ночные сборки будет прописан новый.

Re: Icon - менеджер иконок рабочего стола

Posted: Tue Jun 18, 2013 11:16 pm
by GerdtR
Mario_r4, изменять иконки можно кликнув по ней правой кнопкой -> Свойства. На правую кнопку почти двойное меню. Если по иконке, то можно менять и удалять, если мимо, то можно только добавлять.
Leency, да, через курсор. Алгоритм такой: как только начинается сдвиг иконки, то создаётся поток с прозрачным окно на весь экран(решил не держать окно постоянно). Этот поток устанавливает нужный курсор и не принимает сообщений, а завершается, как только условная переменная(у меня MovingActiv) становится = 0(перед запуском потока она устанавливается в 1). При завершении курсор удаляется(ну и автоматом устанавливается стандартный). А первоначальный поток просто следит за зажатой мышью и в случай отпускания кнопки приравнивает MovingActiv 0. А дальше главный поток уже читает координаты и т. д. . В icon.asm взгляните на код после метки MovingIcon, а поток окна с курсором в Moving.Inc(в первой процедуре основное, вторая для вычисления иконки, а остальное старый хлам :) Ещё не чистил, но в код это всё равно не включается).
Serge, огромное спасибо за идею. Жду увеличенный курсор, у меня код готов к переходу на любой размер иконок(это моя первоначальная идея была, сделать легко изменяемый размер иконок).
IgorA, я использовал dll.inc. В нём же вроде бы автоматом вызывается lib_init?
Вот выкладываю безглючную ;) версию. Пожалуй её уже можно добавлять в ночную сборку.

Re: Icon - менеджер иконок рабочего стола

Posted: Tue Jun 18, 2013 11:24 pm
by Mario_r4
GerdtR
Кстати забыл упомянуть, что предыдущая версия опять крешилась, когда отсутствовал icons.dat

Re: Icon - менеджер иконок рабочего стола

Posted: Tue Jun 18, 2013 11:34 pm
by GerdtR
А у меня без icons.dat нормально работает. По крайней мере самая новая. Вы лог при ошибке скиньте.

Re: Icon - менеджер иконок рабочего стола

Posted: Tue Jun 18, 2013 11:41 pm
by Mario_r4
GerdtR wrote:А у меня без icons.dat нормально работает. По крайней мере самая новая. Вы лог при ошибке скиньте.
Там был PageFault.

Re: Icon - менеджер иконок рабочего стола

Posted: Tue Jun 18, 2013 11:42 pm
by GerdtR
Мне нужен eip

Re: Icon - менеджер иконок рабочего стола

Posted: Tue Jun 18, 2013 11:56 pm
by Mario_r4
GerdtR wrote:Мне нужен eip
Возможно был глюк, но теперь не падает. Проверил и текущую и предыдущую версии - обе запускаются без icons.dat, но ничего не рисуют.

Re: Icon - менеджер иконок рабочего стола

Posted: Wed Jun 19, 2013 12:07 am
by GerdtR
И не должен. Иконки же не созданы. Он хоть их создавать позволяет? Ну как положено работает?
А у меня ещё чуть правленая вылетела с ядром в VirtualBox. Без файла icons.dat, правда, но надо разбираться.

Re: Icon - менеджер иконок рабочего стола

Posted: Wed Jun 19, 2013 12:11 am
by Mario_r4
GerdtR wrote:Он хоть их создавать позволяет? Ну как положено работает?
Да, в меню пункт добавить работает.

Re: Icon - менеджер иконок рабочего стола

Posted: Wed Jun 19, 2013 12:14 am
by GerdtR
Ну тогда всё хорошо. Выловлю этот последний(опять хи) баг.