Библиотека находится в разделяемой памяти, которая общая для всех приложений, так что не смертельно в целом. Единственно при инициализации идет потеря дополнительных 4 Кб, для каждого проведшего инициализацию потока, потому происходит запись на страницу, где хранятся указатели некоторых внешних функций. К сожалению один из разработчиков по своему незнанию сделал так и решил не исправлять в дальнейшем (ну, кто нынче какие-то жалкие 4 Кб считает?) и библиотека утратила полную реентерабельность с физической точки зрения. Хотя прикладному программисту все это до фени конечно.GerdtR wrote:Ну да. Кстати понял, чего такой слишком сильный прирост занимаемой ОЗУ. Я библиотеку загрузил дополнительную, box_lib. Вот она забирает.
Icon - менеджер иконок рабочего стола
-
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Пашет!!!! Всё, теперь иконки нормально можно таскать. Ещё пару мелких правок, подгонку координат и будет всё супер. Ну толком ещё не тестил, но вот пробная версия готова.
- Attachments
-
-
icon.zip (38.49 KiB)Downloaded 183 times
-
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Не будем говорить кто но все знают что это был слоненок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'Как ты это реализовал - через курсор? Хочу такое же в Eolite'e.
Из хаоса в космос
GerdtR
Отлично сделано !
Современное железо поддерживает курсоры размером 64x64 (АМД ещё умеет и масштабировать в два раза, получается максимальный размер спрайта 128х128) . Надо будет сделать поддержку больших курсоров в ядре, а то в 1920х1080 всё слишком мелкое.
Отлично сделано !
Современное железо поддерживает курсоры размером 64x64 (АМД ещё умеет и масштабировать в два раза, получается максимальный размер спрайта 128х128) . Надо будет сделать поддержку больших курсоров в ядре, а то в 1920х1080 всё слишком мелкое.
Забавно видеть, как замораживается Gears - хотя на самом деле он продолжает работать.GerdtR wrote:Пашет!!!! Всё, теперь иконки нормально можно таскать. Ещё пару мелких правок, подгонку координат и будет всё супер. Ну толком ещё не тестил, но вот пробная версия готова.
У меня только одно замечание по программе - не нашел как посмотреть путь запуска для уже существующих иконок. В общем нужно допилить немного менеджер иконок и можно заливать, альтернативным ICON. Старый пока лучше не удалять, даже если в ночные сборки будет прописан новый.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Mario_r4, изменять иконки можно кликнув по ней правой кнопкой -> Свойства. На правую кнопку почти двойное меню. Если по иконке, то можно менять и удалять, если мимо, то можно только добавлять.
Leency, да, через курсор. Алгоритм такой: как только начинается сдвиг иконки, то создаётся поток с прозрачным окно на весь экран(решил не держать окно постоянно). Этот поток устанавливает нужный курсор и не принимает сообщений, а завершается, как только условная переменная(у меня MovingActiv) становится = 0(перед запуском потока она устанавливается в 1). При завершении курсор удаляется(ну и автоматом устанавливается стандартный). А первоначальный поток просто следит за зажатой мышью и в случай отпускания кнопки приравнивает MovingActiv 0. А дальше главный поток уже читает координаты и т. д. . В icon.asm взгляните на код после метки MovingIcon, а поток окна с курсором в Moving.Inc(в первой процедуре основное, вторая для вычисления иконки, а остальное старый хлам
Ещё не чистил, но в код это всё равно не включается).
Serge, огромное спасибо за идею. Жду увеличенный курсор, у меня код готов к переходу на любой размер иконок(это моя первоначальная идея была, сделать легко изменяемый размер иконок).
IgorA, я использовал dll.inc. В нём же вроде бы автоматом вызывается lib_init?
Вот выкладываю безглючную
версию. Пожалуй её уже можно добавлять в ночную сборку.
Leency, да, через курсор. Алгоритм такой: как только начинается сдвиг иконки, то создаётся поток с прозрачным окно на весь экран(решил не держать окно постоянно). Этот поток устанавливает нужный курсор и не принимает сообщений, а завершается, как только условная переменная(у меня MovingActiv) становится = 0(перед запуском потока она устанавливается в 1). При завершении курсор удаляется(ну и автоматом устанавливается стандартный). А первоначальный поток просто следит за зажатой мышью и в случай отпускания кнопки приравнивает MovingActiv 0. А дальше главный поток уже читает координаты и т. д. . В icon.asm взгляните на код после метки MovingIcon, а поток окна с курсором в Moving.Inc(в первой процедуре основное, вторая для вычисления иконки, а остальное старый хлам
Serge, огромное спасибо за идею. Жду увеличенный курсор, у меня код готов к переходу на любой размер иконок(это моя первоначальная идея была, сделать легко изменяемый размер иконок).
IgorA, я использовал dll.inc. В нём же вроде бы автоматом вызывается lib_init?
Вот выкладываю безглючную
- Attachments
-
-
icon.zip (38.43 KiB)Downloaded 179 times
-
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
GerdtR
Кстати забыл упомянуть, что предыдущая версия опять крешилась, когда отсутствовал icons.dat
Кстати забыл упомянуть, что предыдущая версия опять крешилась, когда отсутствовал icons.dat
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
А у меня без icons.dat нормально работает. По крайней мере самая новая. Вы лог при ошибке скиньте.
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Там был PageFault.GerdtR wrote:А у меня без icons.dat нормально работает. По крайней мере самая новая. Вы лог при ошибке скиньте.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Мне нужен eip
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Возможно был глюк, но теперь не падает. Проверил и текущую и предыдущую версии - обе запускаются без icons.dat, но ничего не рисуют.GerdtR wrote:Мне нужен eip
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
И не должен. Иконки же не созданы. Он хоть их создавать позволяет? Ну как положено работает?
А у меня ещё чуть правленая вылетела с ядром в VirtualBox. Без файла icons.dat, правда, но надо разбираться.
А у меня ещё чуть правленая вылетела с ядром в VirtualBox. Без файла icons.dat, правда, но надо разбираться.
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Да, в меню пункт добавить работает.GerdtR wrote:Он хоть их создавать позволяет? Ну как положено работает?
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Ну тогда всё хорошо. Выловлю этот последний(опять хи) баг.
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Who is online
Users browsing this forum: No registered users and 11 guests