The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Инициатива по бойкотированию Wayland"
Отправлено n00by, 04-Ноя-20 17:59 
>>> сравнивать изначально сдизайненый для сетевой прозрачности протокол и прибитый гвоздями
>> То есть по дизайну подразумевается вариант, что именно клиент берёт на себя
>> задачу отождествления окон с локальными данными (в частности указателями), я правильно
>> понял?
> это данные клиента — он об этом и заботится.

Дык о чём и речь, что надо позаботиться. Если кто привык к другой ОС, где для этого есть специальный вызов, он скажет, что Wayland проще X11.

> никто, впрочем, не
> запрещает прикрепить оный указатель как значение свойства. малоосмысленно, но можно.

Я вот тут не знаю, надо смотреть код, как этот поинтер внутри... сериализуется в строку или два 32-х разрядных значения, нет ли там UB. Точнее, лучше даже не смотреть, а просто так не делать.

>> Ну Вы же сами пишете, что свойства, которые важны _для_сервера_ это другое,
> где? я такого не писал.

В предыдущем ответе https://www.opennet.ru/openforum/vsluhforumID3/122311.html#286
"сравнивать изначально сдизайненый для сетевой прозрачности протокол и прибитый гвоздями к локалхосту протокол".
Исходно смысл несколько шире, вывод я сам сделал.

> серверу вообще наплевать, какие свойства к окну
> прикреплены.

Серверу может и наплевать на всё, кроме XCB_CW_CURSOR, а той штуке, которая рисует заголовок окна интересны некоторые _MOTIF_WM_HINTS, или же _NET_WM_NAME.

>> что использовать те свойства для хранения данных, которые имеют смысл только
>> для клиента -- не стоит.
> это вопрос конкретных применений. всё равно у софта сложнее приветмира есть структура
> данных об окне — в которой и хранятся данные, очень специфичные
> для кода приложения. идея лепить указатель на это в специально выделеные
> системой слоты (что и делает `SetWindowLong()`) — такая себе. никакого механизма
> резервирования этих слотов нет, так что минное поле.

Так в SetWindowLongPtr как раз и отправляют указатель на ту структуру. При получении сообщения сообщения вытаскивают и далее по указателю с данными и работают.

>>> p.s.: фанаты XCB — скажите, вы реально упарываетесь по BDSM?
>> А что, у этой штуки есть фанаты?
> ну используют же её зачем-то. кроме как большой любви к BSDM —
> я других причин особо не вижу.

Я наугад выбрал несколько софтин (mpv и что-то ещё), везде оказалась XLib. XCB пришлось поискать, сразу же находится Qt.

>> И вообще был удивлён ситуацией: интерфейс разработан давно, но документация в
>> незавершённом состоянии.
> потому что далеко не всем нравится программировать на уровне протокола иксов.

По-моему, такие берут GTK, Qt и тому подобное (ой, про Electron забыл). Кто сунется ниже, тому уже все кошки чёрные.

> разработчики
> иксов это отлично понимали, и сделали xlib. а потом пришли Стильные
> Современные Молодёжные, и оказалось, что деды были глупые, надо совсем не
> так. как и происходит почти всегда в подобных ситуациях — отчего-то
> Новое Стильное и так далее решение взлетать не очень торопится.

Ну вообще да, раздел "зачем нужно XCB" практически калька с Wayland, только без "без тиринга". То есть можно провесть аналогию и на её основании попробовать строить прогноз развития. Однако, Wayland немножко дальше чем XCB продвинулся.

>> При том что якобы XCB уже заменила XLib (она и заменила
> да как-то не особо. вон, у меня xlib вполне наличествует. и софт
> её активно использует. что-то не очень с заменой сложилось, как я
> посмотрю.

Так то xlib вроде как есть, но если приглядеться, то это немного не xlib:


/*
* XCloseDisplay - XSync the connection to the X Server, close the connection,
* and free all associated storage.  Extension close procs should only free
* memory and must be careful about the types of requests they generate.
*/

int
XCloseDisplay (
    register Display *dpy)
{
    register _XExtension *ext;
    register int i;

    if (!(dpy->flags & XlibDisplayClosing))
    {
        dpy->flags |= XlibDisplayClosing;
        for (i = 0; i < dpy->nscreens; i++) {
            register Screen *sp = &dpy->screens[i];
            XFreeGC (dpy, sp->default_gc);
        }
        if (dpy->cursor_font != None) {
        XUnloadFont (dpy, dpy->cursor_font);
        }
        XSync(dpy, 1);  /* throw away pending events, catch errors */
        /* call out to any extensions interested */
        for (ext = dpy->ext_procs; ext; ext = ext->next) {
        if (ext->close_display)
            (*ext->close_display)(dpy, &ext->codes);
        }
        /* if the closes generated more protocol, sync them up */
        if (X_DPY_GET_REQUEST(dpy) != X_DPY_GET_LAST_REQUEST_READ(dpy))
        XSync(dpy, 1);
    }
    xcb_disconnect(dpy->xcb->connection);
    _XFreeDisplayStructure (dpy);
    return 0;
}


 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру