crypt of decay - кстате [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

кстате [Jun. 15th, 2015|11:35 am]
Previous Entry Add to Memories Tell A Friend Next Entry
новое (ну, относительно) модное поветрие делать double buffering в гуях я считаю извращением и пораженческими настроениями. стразики и переливчики тоже, кстати. мне вообще по нраву гуй «в стиле NeXT» — как в Window Maker. мои тулкиты примерно так и выглядят, я оттуда безжалостно внешность сдираю. и да, никакого double buffering для этого не надо, а надо просто спокойно рисовать.

и ещё кстате: в текущем тулките я приблизился к мечте авторов иксов наиболее плотно. изначально, напомню, бродили такие идеи, что при отваливании икс-сервера, а потом поднятии снова программа должна не тупо падать, а спокойно ждать и переподключаться, воссоздавая свой ебальник «как было».

так вот, в новых гуях я злобно разделил стадии «создать виджет», «настроить виджет», «создать иерархию виджетов», «хуйнуть это всё в X11». стадии вызываются явно, «за кулисами» ничего не делается. и, натурально, виджет имеет всю информацию, чтобы спокойно пересоздать себя, когда dpy сменился. может, ради шутки, и встрою такую опцию. в принципе, там кода-то — сбросить кэш цветов и шрифтов, да рассказать виджетам, что они unrealized (то бишь, присвоить полю X11.Window значение None). и всё, можно заново делать XOpenDisplay(), как будто ничего не было.

есть мнение, что такой уберфичей не обладает ни один из современных модных гигакрутых тулкитов. гыгы.
Linkmeow!

Comments:
From:[info]tzirechnoy.livejournal.com
Date:June 15th, 2015 - 10:54 am
(Link)
А пиксмапов вообще нет?
[User Picture]
From:[info]ketmar
Date:June 15th, 2015 - 11:04 am
(Link)
на самом деле при создании виджета можно сказать, что он пиксмап хочет, и спокойно рисовать тудыть. обработчик expose достаточно умный, чтобы это увидеть и блитнуть грязную часть. с точки зрения рисовалки — у неё есть GC и Drawable, а что уж в них будет — окно или пиксмап — большинству кода по барабану.
[User Picture]
From:[info]ketmar
Date:June 15th, 2015 - 11:06 am
(Link)
а про загрузку картинок и прочего… это вот один специальный класс «картинка» и требует больше всего заботы. и то только в том случае, если он динамически создан — а в большинстве случаев динамически созданые пиксмапы, как я писал, просто back buffers, которые можно тупо пересоздать.

в принципе, владелец картинки по правилам тулкита обязан реагировать на событие «картинка, которой я владею, требует регенерации». считается, что если на это событие никто не реагирует, то тулкит вправе тупо пересоздать пиксмап с теми же размерами и считать, что картинка отрегенерирована.
[User Picture]
From:[info]ketmar
Date:June 15th, 2015 - 11:10 am
(Link)
p.s. фича тулкита в том, что после стадии realize (т.е. выплёвывания всего в X11) никакие изменения, окромя косметических, в иерархию уже вносить нельзя. т.е. ты можешь двигать виджеты, менять размеры, но не можешь добавлять или убирать. то же самое относится к пиксмапам, которыми кто‐то обязан владеть.

почему? потому что при вызове realize владелец неизбежно получает событие «регенерировать пиксмап», и обязан уметь это делать столько раз, сколько надо. так архитектурно получилось, и это отлично ложится на пересоздание.

собственно, фича «realize-unrealize-modify-realize» была запланирована изначально. просто я не сразу заметил, что если в неё добавить «emergency mode» — то есть, насильственный unrealize, то можно спокойно пережить смену икс‐сервера.
From:[info]tzirechnoy.livejournal.com
Date:June 15th, 2015 - 02:16 pm
(Link)
Вообще -- мило, конечно.
From:(Anonymous)
Date:June 15th, 2015 - 03:08 pm
(Link)
А твой тулкит будет работать под Mir?
[User Picture]
From:[info]ketmar
Date:June 15th, 2015 - 03:39 pm
(Link)
всяким говном не интересуюсь. есть X11. больше ничего нет.
From:(Anonymous)
Date:June 15th, 2015 - 04:27 pm
(Link)
А разве в будущем на линуксе X11 останется? Главный начальник сказал, что перейдут на Mir.
[User Picture]
From:[info]ketmar
Date:June 15th, 2015 - 04:42 pm
(Link)
я знать не знаю, кто у тебя там главный начальник. и мне это совершенно неинтересно.
From:(Anonymous)
Date:June 15th, 2015 - 04:44 pm
(Link)
Марк Шатлворт главный в убунте, разве не он?
[User Picture]
From:[info]ketmar
Date:June 15th, 2015 - 04:58 pm
(Link)
меня‐то отчего должно волновать, что там происходит в бубунте и кто там у них главный?
From:(Anonymous)
Date:June 15th, 2015 - 05:00 pm
(Link)
А что, бывает другой линукс?
From:(Anonymous)
Date:June 16th, 2015 - 12:30 am
(Link)
бля, сука, тебя даже не потроллишь
From:[info]tzirechnoy.livejournal.com
Date:June 15th, 2015 - 07:21 pm
(Link)
И да, я вообще не представляю, как работать без double buffering. То есть оно мерцает при скорости отрисовки менее 100fps. Я понимаю, что у тебя пока что быстрее, но...
[User Picture]
From:[info]ketmar
Date:June 15th, 2015 - 07:35 pm
(Link)
какие сто фпс, куда, зачем? если тулкит перерисовывается с такой скоростью, автор тулкита ебанарий.
[User Picture]
From:[info]ketmar
Date:June 15th, 2015 - 07:36 pm
(Link)
в смысле — нужна быстрая графика? создал opengl-окно и ебошь, хуле дел‐то. а тулкиту зачем интенсивно рисоваться — не ясно. ну, может моргнёт, кода восстанавливает перекрытую часть окна. да и хуй с ним.
From:[info]tzirechnoy.livejournal.com
Date:June 16th, 2015 - 01:40 pm
(Link)
В смысле -- если тулкит неуспевает отрисовывать за 1/100 с, то получается мерцание всякое.
[User Picture]
From:[info]ketmar
Date:June 16th, 2015 - 02:58 pm
(Link)
так надо ж аккуратно рисовать зачем же рисовать, потом стирать, потом опять рисовать… контролы — они несложные. строки рисуем сразу фоном. пустые места — если есть — бережно докрашиваем прямоугольниками. остаются мелочи вроде фокусных рамочек, что действительно рисуется очень быстро и совершенно не мешает.
[User Picture]
From:[info]ketmar
Date:June 16th, 2015 - 02:58 pm
(Link)
«с фоном».
[User Picture]
From:[info]pizelks
Date:June 16th, 2015 - 02:20 am
(Link)
Window Maker вообще гениальный. Наверное, самый гениальный WM ever. Кстати, Unity носит отчётливо его черты, только с перделками и свистелками.
[User Picture]
From:[info]ketmar
Date:June 16th, 2015 - 02:29 am
(Link)
а сразу и не скажешь, что его, тащемта, спиздили с некстов… потому что кто те нексты видел?