Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Jan 22, 2020 10:21 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 445 posts ]  Go to page Previous 1 2 3 4 530 Next
Author Message
PostPosted: Thu Sep 16, 2010 11:02 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Может быть, не всем нужны иконки на рабочем столе.
Бороться с повторными запусками не так уж сложно. Проверка при запуске - а нет ли еще одного процесса с таким же именем? А для перезапуска использовать например параметр "--replace", как в *никсах. Сомневаюсь, что на это способен человек, не знающий, что именно он хочет получить.


Top
   
PostPosted: Thu Sep 16, 2010 11:59 am 
Sorcerer
Quote:
А если он упадет?

Не страшно - просто не будет перерисовываться фон.
Quote:
Одна хотелка по теме, если вдруг будет желание ее реализовать: подписи под иконками сделать длиннее, чем они могут быть сейчас. Длинные имена система поддерживает, а длинные названия программ - пока что нет :)

Это пожалуй самое простое из задуманного.
Quote:
Может быть, не всем нужны иконки на рабочем столе.

А кто нам мешает запускать процесс-сервер занимающийся работой с параметром отключающим загрузку иконок или вообще в INI файле прописать.

art_zh
Quote:
Еще раз проIMHUю, что менеджеру иконок - место в нулевом круге, а не в третьем.
Вынос его в юзерспейс прорубит еще одну дыру в системной защите.

Но если уж вы так решили, то надо по крайней мере

1) повысить его в звании до десктоп-менеджера, и

2) присвоить ему статус специального процесса (незакрываемого, неперезапускаемого и недуплицируемого).

Иначе будет бардак.

Фатального ничего нет, а то что ты предлагаешь требует значительной переделки ядра.
Если готов взяться за такую работу - то никто не запрещает, но чужие идеи желающих реализовывать нет.

Quote:
А если его сдуру закроют? :shock:

Абсолютно ничего - просто сервис отрисовки фона не будет работать и на фоне будут артефакты от других ранее нарисованных элементов.
Quote:
Или повесят второй (третий, десятый) ?

Можно сделать проверку на наличие процесса в памяти использовав уникальное название.


Top
   
PostPosted: Thu Sep 16, 2010 12:04 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
art_zh

Ну ладно, оконная система в монолитном ядре. Но менеджер иконок зачем в ring0 ? Правильно будет собрать @PANEL @ICON @RB в одно приложение и будет нам десктопный менеджер. И зачем ему в ядро ?


Top
   
PostPosted: Thu Sep 16, 2010 12:10 pm 
Serge wrote:
Правильно будет собрать @PANEL @ICON @RB в одно приложение и будет нам десктопный менеджер.

Зачем повторять путь Виндовс? :shock:
Пусть каждая утилита занимается своим делом. Десктопный менеджер это монструозная вещь.


Top
   
PostPosted: Thu Sep 16, 2010 12:12 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Есть простое решение проблемы с несколькими запусками или случайным закрытием десктопного менеджера. В ядре заводится строковая переменная с полным путём к менеджеру. Всё работает по принципу "кто первый встал, того и тапки". Приложение через set_background_thread() объявляет себя менеджером. Следующий вызов будут неудачным. Если менеджер упадёт или будет закрыт ядро его рестартует.


Top
   
PostPosted: Thu Sep 16, 2010 12:16 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Mario

Там функциональность близка, и вместе всё будет быстрее работать. Главное не превращать код в винегрет.


Top
   
PostPosted: Thu Sep 16, 2010 12:46 pm 
Serge
Quote:
Там функциональность близка, и вместе всё будет быстрее работать. Главное не превращать код в винегрет.

В таком случае тебе придется реализовать вывод и для самого верхнего слоя и сразу встает вопрос с приложениями рисующими на весь экран. zSea например не сможет тогда выводить в полноэкранном режиме (вернее сможет но панель будет всегда поверх), скринсейверы также не смогут. Нужен сверхвысокий слой и тот который за ним (этот второй будет для панели), остальные рисуют в обычном оконном стеке.


Top
   
PostPosted: Thu Sep 16, 2010 1:58 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Mario

Но сейчас ведь всё работает ? На крайний случай запускать панели в отдельных потоках.


Top
   
PostPosted: Thu Sep 16, 2010 2:23 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1380
Serge wrote:
Ну ладно, оконная система в монолитном ядре. Но менеджер иконок зачем в ring0 ?

Ядро сможет определить и обработать нажатие иконки
1)быстрее, 2)проще 3) безопаснее и 4)надежнее.
Если делегировать это дело приложению, придется так или иначе реализовать разбор оконного стека, обработку нажатия и отрисовку фона.

В принципе можно всё реализовать "в круге третьем" (sysfn09+полноэкранная графика это сделать позволяют), но это уже очевидный абсурд.
Предложенные тобой два новых вызова делегируют эти действия системе.

Грамотный и вполне резонный подход.
Мне эти 2 вызова представляются двумя широченными шагами в направлении вноса всего иконного менеджера в ядро.
Все что я предлагаю - сделать третий, маленький шажок (необходимость в добавлении новых сисфункций при этом, очевидно, отпадёт сама собой).
А в третьем кольце оставить только редактор связей между иконкой, ее экранными координатами и строкой вызова соответствующей программы.

Serge wrote:
Правильно будет собрать @PANEL @ICON @RB в одно приложение и будет нам десктопный менеджер. И зачем ему в ядро ?

Дык я и не звал его в ядро.
Читай внимательней:
art_zh wrote:
Вынос его /иконного менеджера/ в юзерспейс прорубит еще одну дыру в системной защите.Но если уж вы так решили, то надо по крайней мере
1) повысить его в звании до десктоп-менеджера...

т.е. если уж зло неизбежно - тогда имеет смысл собрать @PANEL @ICON @RB в одно специальное приложение

Mario wrote:
то что ты предлагаешь требует значительной переделки ядра.
Если готов взяться за такую работу - то никто не запрещает, но чужие идеи желающих реализовывать нет.

Будет время - займусь. Сейчас есть задачи поважнее этой ерунды.

_________________
Узкий специалист подобен флюсу: полнота его - односторонняя.
Козьма Прутков


Top
   
PostPosted: Thu Sep 16, 2010 4:38 pm 
art_zh
На обсуждение "этой ерунды" потрачено тобой довольно много времени.
Зачем вообще тогда теряешь время влезая в детские песочницы? :lol:


Top
   
PostPosted: Thu Sep 16, 2010 4:52 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1380
потому что мне небезразлично, какой будет система завтра.

если замутил новую тему на пустом месте - постарайся хотя бы выслушать чужие аргументы.

если они тебе по барабану - делай как знаешь и никого не спрашивай.

(вариант: можешь не спрашивать только одного меня - принят к исполнению)


Top
   
PostPosted: Thu Sep 16, 2010 5:34 pm 
art_zh
Quote:
потому что мне небезразлично, какой будет система завтра.

Веришь или нет - ты не одинок. :lol:
Quote:
если замутил новую тему на пустом месте

Так ли пусто это место? Проблема есть и есть разные способы ее решения. Лично мой подход - максимальное удобство со стороны пользователя. Тебе как ты уже не раз заявлял - графическая система вообще по сути не нужна и в твоем случае это оправдано. Но ты ведь не один - у системы очень много обычных пользователей, которые хотят видеть обычную рабочую систему со всеми удобствами которые есть в других десктопных системах.
Quote:
постарайся хотя бы выслушать чужие аргументы.
если они тебе по барабану - делай как знаешь и никого не спрашивай.

1. Вообще-то я в своем посте первом вообще не спрашивал советов как мне делать - просил только с иконками помочь.
2. Я был достаточно вежлив и выслушивал чужое мнение, при этом я ничье мнение "ерундой" не называл.
3. При желании помочь мне с кодом я не отказываюсь от такой помощи, при желании исключительно покритиковать - мне такая помощь не сильно нужна. :)
Quote:
(вариант: можешь не спрашивать только одного меня - принят к исполнению)

Из минусов твоей реализации я сразу вижу один существенный - отсутствует гибкость. Чтобы изменить код и его логику придется менять ядро - и все заявления об максимальной надежности не оправдывают такой жесткой реализации. Мы от этого как раз стремимся уходить, максимально упрощая ядро.

З.Ы. Как однажды сказал один не последний человек в проекте "Мнение пишущего код всегда приоритетней мнения всех остальных".


Top
   
PostPosted: Thu Sep 16, 2010 6:56 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Набросал пока такой патч. Подмена слота работает, но вылезла новая проблема: все функции рисования делают отсечение по границам окна, что правильно, но мешает рисовать фон. Видимо одним напильником не обойтись и надо влезать в оконный стек.


Attachments:
File comment: патч для svn
bgr_patch1.txt [20.46 KiB]
Downloaded 92 times
Top
   
PostPosted: Thu Sep 16, 2010 7:45 pm 
Несколько не понял почему мешает? Есть же тип окна "Y=1 - только определить область окна, ничего не рисовать".

А вообще похоже придется таки выделять кусок памяти размером с экранную область.


Top
   
PostPosted: Thu Sep 16, 2010 8:54 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Mario

Такое окно, если сделать его на весь экран, при первом клике вылезет не первый план. И назад его не вернёшь. Здесь надо править код работы с оконным стеком, чтобы оно всегда оставалось внизу. Но я пока совершенно не въехал в его логику. Чего только люди не придумают, лишь бы не делать двусвязные списки.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 445 posts ]  Go to page Previous 1 2 3 4 530 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited