Доступен выпуск библиотеки Louvre 1.2.0, предоставляющей компоненты для разработки композитных серверов на базе протокола Wayland. Библиотека берёт на себя выполнение всех низкоуровневых операций, включая управления графическими буферами, взаимодействие с подсистемами ввода и графическими API в Linux, и также предлагает готовые реализации различных расширений протокола Wayland. Созданный на базе Louvre композитный сервер, потребляет заметно меньше ресурсов и демонстрирует более высокую производительность, по сравнению с Weston и Sway. Код написан на языке С++ и распространяется под лицензией GPLv3. Обзор возможностей Louvre можно прочитать в анонсе первого выпуска проекта...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=60606
Что-нибудь уже есть на нём?
Пока нет.
Поэтому потребляет меньше ресурсов
>Код написан на языке С++ и распространяется под лицензией GPLv3.Уважуха.
Плюсую, островок адеквата в этом аду корпорастических MIT-ов и рекламных rust-ов
Не, ну плюсы это намного лучше дыряшки, но нафига gpl-рак - не понятно вообще.И чем тебе неугодила по настоящему свободная MIT лицензия?
Вот иксы все годы и до сих на MIT и при этом практически в каждом линукс дистре используются.
У тебя есть какие-то претензии к нему?
А что, было мало проприетарных заимствований открытых Иксов? Вот, например, во времена неускоренного XFree86 был такой Accelerated-X. Чую, что это скоммунизженный тот же XFree + поддержка аппаратного ускорения. Закрыто, а свободный проект с этого получил дырку от бублика. Вот вся ваша "истинная" свобода до копейки.
> а свободный проект с этого получил дырку от бубликаА свободный проект как был свободным, так и остался.
> Вот вся ваша "истинная" свобода до копейки.
Да, именно так. Ты свободен делать с кодом что хочешь. Хочешь выкладывай, хочешь продавай.
А не выкладывай все до последнего байта, а потом побирайся за копейки на корпопомойках, как это делают линуксойды.А ведь МИТ лицензия позволяет с̶т̶ы̶р̶и̶т̶ь̶ перелицензировать код под гплёй.
Но что-то не вижу очереди перелицензировать иксы...
Открытым он, конечно, остался. Вот только не получил, в своё время, полезной нужности.
Хаха, а ты думаешь кто-то просто так добавил бы аппаратное ускорение?)) Бесплатно?
Что-то же в то время писатели иксов его сами не запилили?)А так у тебя есть выбор - или ничего, или за деньги.
И это намного лучше чем выбор из "ничего"
А сильно в то время клепатели видеокарт предоставляли спеки? Спасибо AMD, что начали рушить эту стену недоступности. Первыми начали публикацию.Поправил: А так у тебя есть выбор - или ничего, или за деньги c бекдорами.
За деньги, может, ещё и ничего, но закрытому коду с рутовыми привилегиями нет доверия.
О, белки-истерички подтянулись))
Пруфы на бекдоры будут? Или как обычно?А открытый код от этого спасает? Ну, типа как с Bvp47?))
Или просто с CVE в файловой системе, которое там появилось ну 146% случайно?)
Тут вы упускаете одну деталь - "ну и где теперь ваш Accelerated-X?". Была куча проектов построенных на "возьмет бесплатное бесплатно, поработаем напильником, приделаем (если надо - сбоку) ништяки и налепим ценник". Что характерно, часто это были низко висящие фрукты, которые довольно быстро теряли конкурентное преимущество, особенно когда исходный продукт начинал развиваться в том же направлении.EDIT. "Except for providing some licenses to old customers using older graphics cards for which XiG has support that is compatible with OS kernel being used, XiG has ceased software development operations."
Аж до 2017 протянули.
Ну... он прожил гораздо дольше XFree86.
Их клиенты годами пользовались приложением, а люди заработали деньги.
Не вижу тут ничего плохого.
> Ну... он прожил гораздо дольше XFree86.
> Их клиенты годами пользовались приложением, а люди заработали деньги.
> Не вижу тут ничего плохого.Ну, Xfree86 видел последний релиз в 2008, у XiG самые свежие новости про Intel 965, это вроде как 2006 год. Так что вопрос. В режиме поддержки клиентов может и прожил дольше, но последняя версия 2.4 (когда вышла - неясно).
Что до ничего плохого - конечно ничего, но сделать большой бизнес им вряд ли удалось, слишком быстро их догнал обычный X.org.
А когда в иксах появился аналог?
Т.е. сколько лет юзеры могли пользоваться ускорением, пока в иксах его не было?
Если тебе оно нужно, то за это и денег можно заплатить.
> А когда в иксах появился аналог?
> Т.е. сколько лет юзеры могли пользоваться ускорением, пока в иксах его не
> было?
> Если тебе оно нужно, то за это и денег можно заплатить.AIGLX вошел в X.Org только в 2006-ом. До этого возможно патчами как-то решали вопрос. С играми все равно было довольно глухо, даже Sacred вышел лишь в 2009
> AIGLX вошел в X.Org только в 2006-ом.Спасибо.
Т.е. где-то с 1994 по 2006 люди пользовались продуктом, у которого не было альтернативы.
Неплохо, неплохо.
>> AIGLX вошел в X.Org только в 2006-ом.
> Спасибо.
> Т.е. где-то с 1994 по 2006 люди пользовались продуктом, у которого не
> было альтернативы.
> Неплохо, неплохо.Продолжая копания в истории однако выходит что "Silicon Graphics developed GLX as part of their effort to support OpenGL in the X Window System. In 1999 SGI released GLX under an open-source license, letting it be incorporated in XFree86 source code version 4.0 in 2000. From there, the code was inherited by the forked X.Org Foundation version of the X Window System X11R6.7.0."
А X11R6.7.0. это апрель 2004. Так что все это запутано, но акт остается - вся эта проприетарная тема начала сворачиваться после появления соответствующего функционала в голом опенсорсе, хотя XiG у давалось довольно долго конкурировать заметно лучшей производительностью.
> AIGLXЭто только для композитного режима, сам по себе indirect glx rendering работал и без AIGLX. Accelerated в слове AIGLX не гарантирует, например, Hardware Accelerated Indirect GLX Rendering, просто упрощает возможность использовать пиксмап окна в композитном режиме (к текстуре в opengl больше требований, чем к обычной картинке в X11; лежит оно не в той памяти, размер не кратен 2^n, формат может не совпадать и прочее).
P.S. Конкретно XiG выглядит как X-сервер с хорошо заточенными дровами. Вроде как ребята купили доки к видеочипам и сделали хорошие DDX-драйверы. Ускорение в опенсорсных DDX-драйверах имеется уже достаточно давно (года так с 96-го/98-го точно), несколько вариантов имеется (XAA/EXA/UXA/SNA Glamor еще отдельно можно выделить). OpenGL года так с 98-го/2000-го.
> А когда в иксах появился аналог?Надо по фичам идти. https://xig.com/Pages/Features/INDEX.html
Большинство из перечисленного в 2002-м на GeForce2MX работало прекрасно (всякие там вращения мониторов, TwinView, MultiSeat(через sharevts+PCI-видюха), ImageOverlays/XVideo, OpenGL). Многое из перечисленного видел и на дистрах конца 90-х, но тогда был недостаточно продвинутым линуксоидом и не совсем понимал что мне показывают и как оно работает.Кое-что до сих пор не реализовано:
> X Record/Playback)Recodrd ещё с горем пополам можно, а вот playback... если это то что я себе нафантазировал - даже сейчас так никто не умеет.
P.S. Обрати внимание, там x86 не был основной платформой! У DEC Unix, Solaris, SGI и т.д. был совсем другой мир.
Пермиссивка - зло! Копилефт - добро!
> Пермиссивка - зло! Копилефт - добро!Что же вы тогда пользуетесь злом???
А ну быстро выкинь иксы из своего дистра! И вообще все что не жопоэль!
О, почти ничего не останется? Links фигово открывает опеннёк и ты не можешь написать коммент в славу гну?
Ну так тебе надо больше стараться и распространять гнурак!
вообще там уже 2 месяца как перевели под MIT> License updated from GPLv3 to MIT
> вообще там уже 2 месяца как перевели под MITАхаха!
12yoexpert, ты был прав на 100%.
Автор таки оказался адекватом - перевел проект на нормальную лицензию.
Судя по истории, автор лицензию менял туда и обратно несколько раз https://github.com/CuarzoSoftware/Louvre/commits/main/LICENSE
> Не, ну плюсы это намного лучше дыряшки, но нафига gpl-рак - не
> понятно вообще.
> И чем тебе неугодила по настоящему свободная MIT лицензия?Тоже любопытно, зачем он наврал https://github.com/CuarzoSoftware/Louvre#MIT-1-ov-file
Не уважуха в 2024 году руками делать delete в коде и не юзать умные указатели. Будете потом выискивать уточки. Инфа 100%
>>Код написан на языке С++ и распространяется под лицензией GPLv3.
> Уважуха.Минусую типичного эксперта за искажение фактов. MIT license https://github.com/CuarzoSoftware/Louvre#MIT-1-ov-file
>библиотека для разработки композитных серверов на базе WaylandКак же это дико звучит. Вся суть фридесктопа в одном предложении.
Эй чувак, мы слышали что тебе нравятся серверы, поэтому мы написали библиотеку к серверу, чтобы ты жевал наш кактус, пока делаеш свой кактус.
Или взять
> Для дробного масштабирования задействован Wayland-протокол fractional-scale.Круто, вейланд предоставляет протокол! Эта либа заворачивает его в свой интерфейс и переходим по ссылке ... поддежка протокола только в Mutter и KWin :)
А как вам такой нейминг, привет от поколения php/wordpress программеров?
wp_fractional_scale_manager_v1
> Круто, вейланд предоставляет протокол! Эта либа заворачивает его в свой интерфейс и переходим по ссылкеТы не так понял. Протокол - это просто набор соглашений, оформленный в XML-файл, на основании которого генерится API. Оно сгенерится в любом случае и ты можешь посмотреть код, который генерит wayland-scanner. Поддержка композитором означает, что данный набор вызовов поддерживается композитором и ты его можешь использовать.
Louvre это и есть бибилиотека, представляющая высокоуровневую абстракцию (то что написано в описании). Т.е. аналог wlroots, ну или xcb для XOrg.
> поддежка протокола только в Mutter и KWin
На https://wayland.app отображены композиторы. Сабж НЕ композитор, а бибилиотека на которой его можно построить.
По аналогии там указан Sway, а не wlroots, на котором он базирован.
> Louvre это и есть бибилиотека, представляющая высокоуровневую абстракцию (то что написано в описании). Т.е. аналог wlroots, ну или xcb для XOrg.xcb в большинстве своем это тоже автоматически нагенеренные библиотеки из xml'ок. То, что делают wlroots/mir-server/louvere, по сути является частью иксов в иксах (код, обвязывающий DRM/KMS/GBM, libinput, etc).
> xcb в большинстве своем это тоже автоматически нагенеренные библиотеки из xml'ок. То,
> что делают wlroots/mir-server/louvere, по сути является частью иксов в иксах (код,
> обвязывающий DRM/KMS/GBM, libinput, etc).Согласен. Спасибо за уточнение.
И сколько их ещё будет? И сколько из них будут доделаны? Это как разработка ядра через xml "протоколы" с 10 реализациями.
В СПО слишком много несогласных друг с другом сторон, так что советую расслабиться и наблюдать за процессом с удовольствием и попкорном
А разве это плохо?
Посмотри сколько существет ДЕ, дистрибутивов, разных версий утилит (написанных на десятке языков).
Опенсорс это всегда про велосипедостроение.
И это хорошо - тк нет монополии и есть конкуренция.
Тем временем в винде даже прога написанная под WinNT 3.1/Win32s может с некоторыми оговорками (во времена Win2k/XP появились проблемы с правами) быть запущена под Win11. А в линухе до сих пор царит зоопарк велосипедов.
Я на 6.1 запускаю прогу, соьранную для 2.6.x. Правда с прогой идёт glibc нужной версии, но все равно работает
Это настолько редкость, что почти сказка)
В 99,9% остальных случаях, такого чуда нет. Ибо твоя прога не линукс вей и вообще должна быть удалена))) Ну по мнению линуксятников, которые борятся за идею, а не за продукт. Коих большинство
>Тем временем в винде даже прога написанная под WinNT 3.1/Win32s может с некоторыми оговоркамиТ. е. можно взять GUI от древней NT или 98 и запустить на этой вашей 11 вместо стандартного? Круто! Вот только что ни новая версия этой вашей Винды, так вечно плач юзеров по поводу нового неудобного гуя. С чего бы это?
А в линухе разве иначе?
Новая версия Гнома - плач что дополнения и темы сломали.
Новая версия кед - плач что падает и что все серое на сером, еще более серое чем в прошлой версии.
Новая версия гтк - плач что темы сломали и что пол проги переписывать надо.
Новая версия ядра - плач что что-то отвалилось, напр. дрова невидии.Лучше покажи где в линухе нет плача и нытья...
> А в линухе разве иначе?
> Новая версия Гнома - плач что дополнения и темы сломали.
> Новая версия кед - плач что падает и что все серое на
> сером, еще более серое чем в прошлой версии.
> Новая версия гтк - плач что темы сломали и что пол проги
> переписывать надо.
> Новая версия ядра - плач что что-то отвалилось, напр. дрова невидии.
> Лучше покажи где в линухе нет плача и нытья...А в линухе, если баттхёрт от гнумокед и гтккультей, то есть выбор этим не пользоваться в отличии от...!
А что по поводу невидии, так это не проблемы линуха, это проблемы ССЗБ, которые продолжают заносить на очередную куртку хуангу, несмотря на то, чото хуанг-овцы пилювать хотели на линух с высокой кучи курток хуанга.
Да можно. Не так давно на 10ке запускал свою прогу собранную в nt4 26 лет назад. Не без глюков с русским языком, но работает. Но есть программы написанные с хаками для 95 винды, которые ужо 2k не работали. Но в целом поддержка старья под виндой более чем хорошая.
>Да можно. Не так давно на 10ке запускал свою прогу собранную в nt4 26 лет назад.Вот только речь шла совсем не о том.
У Винды ГУИ не отдельная программа которую можно взять.
Информирую, чтобы больше не позорился
Ну-ка, ну-ка, расскажи дружок, как без проблем на Вынь11 запустить игрухи с GFWL? А таких было вагон и маленькая тележка..
Сравнил графическую подсистему с давно мёртвым сервисом, к которому привязаны игры. Равные ведь вещи.
Линух - это мир open source, если перешедшие с Венды ещё не поняли. И он не ориентирется на бинарную совместимость. Здесь в почёте совместимость на уровне исходников.
> Здесь в почёте совместимость на уровне исходников... которой тоже нет.
Поэтому попердолься при сборке, накати пару патчей, найди нужную версию компилятора, жлибы, остальных либ, разреши парочку конфликтов и может быть оно запустится.
затоникакввинде! (с)
Но если вам надо какввенде, почему не остались на ней?
Просто берешь Nix и горя не знаешь.
ты еще забыл добавить, всех кто пытается этот порочный круг поломать! Сообщество хейтит и делает по максимум, чтобы этого не существовало!
там... неоднозначно
Под вайном будет скорее всего работать лучше.
Если Wayland - это протокол, то почему мы имеем настолько большое количество реализаций? Кто-то хочет два пробела в коде, кто-то четыре и никак иначе?
Разные языки
Разные лицензии
Разные подходы
Разные доп.фичи
Пусть они схлестнутся в смертельной битве и победить самый крутой!Почему-то вас не смущает что существует столько DE, васянодистров и т.д.
> Почему-то вас не смущает что существует столько DE, васянодистров и т.д.Васянодистры строятся из одних и тех же совместимых компонентов но в разных комбинациях. Фрагментация совсем про другое.
QT и GTK не достаточно самобытны и несовместимы, чтобы их считать фрагметацией?
А ведь еще есть Motif, LessTif, wxWidgets и тд.Так что фрагметация уже есть.
Она просто пронизывает опенсорс - тк если тебе что-то не нравится, ты форкаешь и делаешь лучше (ну, по крайней мере пытаешься)))
> QT и GTK не достаточно самобытны и несовместимы, чтобы их считать фрагметацией?Да. Даже пытались делать совместимые темы между фреймворками и совместимость через порталы (filepicker-ы и т.д.). Ну, как бы это фрагментация, но не такая серьезная.
> А ведь еще есть Motif, LessTif, wxWidgets и тд.
Первые два - мертвечина, а wxWidgets работает через другой backend - GTK.
> Если Wayland - это протокол, то почему мы имеем настолько большое количество реализаций?Потому что разработчики Wayland-а - токсичные подонки и идиоты, которые не осилили даже согласовать единые протоколы, ни запилить единую реализацию сервера (как в иксах) или фреймворк для реализации DE. За предложения сделать десктопные фичи (например скринкастинг) можно словить бан (https://gitlab.freedesktop.org/wayland/wayland/-/issues/233#...), поэтому кроме иксов ничего рабочего так и не придумали. Wayland - это эпичный высер построенный на анти-паттернах к которому сбоку прикручены костыли в виде порталов и Pipewire, чтобы хоть как-то работало. Разработчики Wayland-а ведут себя как ЦК Партии, а его адепты готовы оправдать любое деpьмо, лишь бы не как в иксах. Проект уже полудохлый, но его как-то пытаются пиарить и допиливать, но получается одно Г, а допиливать будут вечно, потому что такую фрагментацию можно мейнтейнить бесконечно. Вон иксы - уже готовый проект, их даже не трогают почти.
Wayland это не один протокол, сратая кучка этих протоколов. Кроме того их там еще и версионируют и кое где уже их там под 6 версий нарисовалось. И вот ты такой веселый пришел в этот мир играть с окошкем, а тебе сразу странслируй протокол, собери библиотеки привязки и из заурядного создать поверхность для рисования уже нужно изрядно погемороится.В целом на этом можено было бы и завершить, но приходит какой-то васян говорит что под его нужы нужно развернуть монитор на 23 градуса и добавить 5 курсоров мышки и перерабатывает почти все протоколы находя в них фундаментальный нгедостаток.
Идея на мой взгляд в том что нет какого-то стандартизироуюещго органа или организации.
самое забавное что библиотека уже есть, но они пилят еще одну. Видимо у той есть "фатальный недостаток"
Есть две (!) библиотеки. wlroots и libweston.Но нам рассказывают, что у этой меньше потребление ресурсов.
Вообще-то никто запрещает запилить свой композитор или требуемые к нему библиотеки. Свои независимые композиторы есть у KDE, GNOME, Enlightenment. Louvre достойный конкурент библиотекам libweston и wlroots.
Вот только зачем? Когда есть иксы, где ты знаешь что в твоём DE будет полная совместимость со всеми приложениями и даже компонентами других DE. Wayland-сервера - это же просто зоопарк несовместимых реализаций.
>Wayland-сервера - это же просто зоопарк несовместимых реализаций.Протокол один на всех. И все, кто реализует композитные сервера и приложения должны строго следовать Протоколу. Создатели Протокола не обязаны реализовывать графические "свистоперделки" и прочие хотелки пользователей. Обращайтесь с этими вопросами к разработчикам DE и WM.
> Протокол один на всех. И все, кто реализует композитные сервера и приложения должны строго следовать Протоколу.Это полнейшая х-ня, достаточно посмотреть https://wayland.app/protocols/ чтобы это понять, где отлично видно как сервера Wayland-а реализуют одни и те же вещи индивидуально, создавая фрагментацию, причём самый продвинутый сервер по всей видимости у KDE.
> Создатели Протокола не обязаны реализовывать графические "свистоперделки" и прочие хотелки пользователей.
Ну тогда они идут сами знаете куда вместе со своим вяленным калом.
> Обращайтесь с этими вопросами к разработчикам DE и WM.
И создавайте фрагментацию на десктопе. 10 из 10.
Даже фрагментация это лучше, чем монополия хорг.
У нас и так есть фрагментация по тулкитам, так что не вижу ничего плохого.
Любители "один ликукс, один фуррир, один хорг" пусть сидят на старых версиях.
> Даже фрагментация это лучше, чем монополия хоргНе лучше даже и близко. Кричали что фрагментация в Xorg, а получили то же самое только умноженное на кол-во Wayland серверов.
> У нас и так есть фрагментация по тулкитам, так что не вижу ничего плохого.
Фрагментация по тулкитам меркнет на фоне фрагментации Wayland-серверов. Два тулкита - это уже плохо, но люди придумывают механизмы, чтобы как-то всё унифицировать и срезать углы, а Wayland делает ровно наоборот.
> Любители "один ликукс, один фуррир, один хорг" пусть сидят на старых версиях.
Как раз Wayland и создавался под эту идею, только: "Одна ОС, Один GNOME", под который Wayland изначально и делался, поэтому дизайн такой и парашный: все фичи дисплейного сервера прибиты к DE гвоздями, а остальные DE пусть делают что хотят, партия вам разрешила.
> Даже фрагментация это лучше, чем монополия хорг.Просто шедеврально, как дайвёрсити инклюзив каша в голове прогрессирует во все поля!
Получаем дивный новый мир, где любому дегенеративному мнению фриков рукоплескают и улыбаются, прося добавки градуса бреда и неадекватности! Неосодом с Гоморрою наперевес, мне вот интересно только доколе ещё ждать, пока эта цвиилизация фриков себя угробит?!
Мне только жвль, что в этот раз накроет по ходу весь шарик и не пересидеть катаклизьмы в укромном месте, настолько разросся этот рак ¯\_(ツ)_/¯
> вот интересно только доколе ещё ждать, пока эта цвиилизация фриков себя
> угробит?!Valve последний якорь. У них какие-то части Steam помимо Proton на Иксы завязаны. Wine 9 вполне достаточно для игр поддерживает Wayland. То есть остался год-два, когда управляющие разработкой ПО и раздающие ЦУ и ЕБЦУ на Опеннет фрики столкнуться с фактом существования монополии (или картеля Wintel/RHBM + SteAMD) и маргинальных дистрибутивов, где что-то из окаменелостей удаётся собрать.
Ну и к чему привело отсутствие фрагментации Иксы? Нагромоздили все в одну кучу что невозможно разобраться и переделать под современные реалии.
> Нагромоздили все в одну кучу что невозможно разобратьсяС чего вы это взяли?
> и переделать под современные реалии
Ничего переделывать не надо, в иксах уже есть все современные фичи, кроме может новомодного HDR, который на винде через жопу работает.
> Ну и к чему привело отсутствие фрагментации Иксы? Нагромоздили все в одну
> кучу что невозможно разобраться и переделать под современные реалии.Не невозможно разобраться, просто современным смузи-кдерам лень вникать в чужой код и не хватает компетенций, называйте вещи своими именами пожалуйста!
Это бич соврменного смузи-кодинга - "не хочу вникать в то, что было до нас, это всё равно луддизм олдовых бородачей, там всё на сложном и ужасном си, ничивонипанятна!..", то ли дело лабать DE всяким крапом для вэбни, созданным для отсталых инвалидов ума.
Какие смузи? Хватит придумывать. Сами разработчики иксов не хотят его разрабатывать дальше, более того разработчики иксов участвуют в разработке вайланда.
А что там с wlroots и как там с multi pointer?А разгадка одна, xlib и xcb.
> А разгадка одна, xlib и xcb.xcb лучше, но документацию ему нужно сделать нормальную.
>> А разгадка одна, xlib и xcb.
> xcb лучше, но документацию ему нужно сделать нормальную.Первое дельное предложение от фаната. Поддерживаю. Сделай.
А зачем миру так много композиторов?
Чтобы удовлетворить потребности самых искушенных меломанов.
А не возникнет ли такая же ситуация как с дистрибьютерами Linux дистрибутивов?
В целом их много и все какие-то свои, но в общем и целом все они так себе.
Иксы были одни и они так себе.
Bitset? Реально? Всегда поражался с людей что вкорчевывают его везде даже если он сто лет там не сдался. Сколько КБ озу они сэкономили если скажем открыть для простоты подсчёта 100 окон (никто в жизни столько не использует, но мы ведь особенные). 100 окон, скажем структура из 10 полей в каждой enum на 3 записи. Кто готов подсчитать? Предположу что целых 3КБ, ладно 4КБ со всеми memory alignment.А теперь запустите любое питон приложение, которое в трее показывает вам погоду, или индикатор блютуса, ещё чего, видите там 50 МБ то-то и оно. Про современные графические "центры приложений" лучше вообще забыть, там 500мб+ на старте и выше. Одна единственная пяти секундная gif анимация видосика или мемасика в телеграмме или браузере кушает под 10мб озу. А они целых 4 КБ сэкономили!!!
Я не понял, где там экономится память. Цели заявлены - удобная работа с флагами. Вопрос, почему названо bitset. Ну, наверное, потому что автор из Чили, а 640 слов в Бейсик Инглиш хватит всем.* Unlike `std::bitset`, LBitset functions are designed to modify and retrieve bit states using flags rather than indices, which are ideally
* defined within an enum.template <class T>
class Louvre::LBitset
{
using Flag = typename std::conditional<
std::is_enum<T>::value,
typename std::underlying_type<T>::type,
T
>::type;...
private:
Flag m_flags;
};...
enum ChangesToNotify : UInt16
{
NoChanges = 0,
BufferSizeChanged = 1 << 0,
BufferScaleChanged = 1 << 1,
BufferTransformChanged = 1 << 2,
DamageRegionChanged = 1 << 3,
OpaqueRegionChanged = 1 << 4,
InputRegionChanged = 1 << 5,
SourceRectChanged = 1 << 6,
SizeChanged = 1 << 7,
VSyncChanged = 1 << 8
};LBitset<ChangesToNotify> changesToNotify;
Вот это идёт первым членом в LPRIVATE_CLASS(LSurface) https://github.com/CuarzoSoftware/Louvre/blob/047a86659cc2a3...
Следом 32-х разрядный LBitset. Что бы экономить память, надо сортировать от большего к меньшему. В связи с чем возникают другие вопросы...
https://github.com/CuarzoSoftware/Louvre/blob/main/src/lib/c... нигде, обычные списки для хранения указателей, он не хранит их копии, что разумно, тогда нафига ему битсет, я бы использовал обычный enum и не страдал садомазо.
Подобные вещи в будущем типичные источники проблем и уязвимостей, достаточно взглянуть на любую GNU библиотеку на языке Си, там что не разработчик то кадр, tar, gnupg и прочие, я многих из них читал исходный код и могу на 100% заявить что переписав их все на современном C++ без Си линукс как десктоп был в _разы_ лучше потому что пришли новые разработчики, но нет, нафига делиться кормушкой FSF с другими.
Но теперь у нас есть rust да, язык для таких же садомазо-нутых наркоманов. Лично, я жду carbon-lang, но понаблюдав кое-то время за ними на гитхабе и в дискорде пришел к выводу что еще лет 10 пройдет минимум, там у них проблемы важнее, самоидентификация, ЛГБТ, she/her под аватаркой мужчины ну вы поняли.
enum всё же изначально ориентирован на создание перечислений, а не набора флагов. Членов enum с именами вида BufferSizeAndScaleChanged не нашёл, зато вижуstateFlags.check(ViewportIsScaled | ViewportIsCropped)
и
stateFlags.remove(ViewportIsCropped);
stateFlags.remove(ViewportIsScaled);так что вроде подходит и bit-field вместо "голого" enum, если уж так хочется сэкономить место под bool.
С одной стороны автор пишет непонятно зачем обёртку, которая вызовет недоумение сишников, и вот такие геттеры-сеттеры:
size.setW(srcRect.w()); // эти два где-то вызываются раздельно?
size.setH(srcRect.h()); //
stateFlags.add(ViewportIsScaled);а с другой стороны повсюду голые указатели. Например, мне не хочется вникать, уместны ли были там смартпоинтеры и зачем макрос LPRIVATE_CLASS меняет семантику class на struct (первой строкой там public:). По-моему, плюсы создавались с целью как раз вот такое свести к минимуму. Получается - вот пример, почему C++ вызывает неодобрение, тогда как дело не в языке.
Могу предположить что это все для удобства библиотеки, как раз чтобы разработчики в стиле Си не реализовывали одно и то же дважды и подозреваю на желание сделать PIMPL. С другой стороны если не использовать преимущество плюсов в виде ООП то получится очередное GTK.
Так вот pimpl вносит дополнительную косвенность и при этом обычно говорят "лишний указатель - разумная цена за ряд преимуществ", а не "мы снизили потребление памяти за счёт хранения полусотни бит". И Очень Опасная Парадигма потому так и названа, что её подчас принимаются применять ко всему подряд, а не только к тем объектам, меж которыми обмен сообщениями естественен. В случае тех прямоугольников кажется, что можно было менять сразу оба размера, поскольку когда есть два отдельных "метода", например я могу протупить и забыть написать вызов одного из них, или даже вызвать два одноимённых подряд - ищи потом эту опечатку в одной букве, подсунутой автодополнением.)
У плюсов по сравнению с Rust и прочими есть преимущество и оно достаточно объективно, то есть не зависит от чьего-то мнения: существует стандарт и несколько реализаций трансляторов. Что даёт некие гарантии и относительную независимость от трендов в фондах. Когда мне надо было драйвер для Windows на Си++, я никого не спрашивал и просто это делал несмотря на "невозможно" в DDK, и другие так делали. В Linux наблюдается занятная картина - тут вроде бы полная свобода, но почему-то религия не позволяет.