OSDev

для всех
Текущее время: 13 ноя 2018, 07:46

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 21 июл 2007, 04:39 

Зарегистрирован: 26 апр 2007, 15:35
Сообщения: 366
Откуда: Saint-Petersburg
Так как раньше не я касался этой темы, возникли вопросы ;)
Как лучше реализовать GUI? Какие минимальные функции должен предоставлять видеодрайвер?

То-ли надо делать отдельно процесс, отвечающий за создание образов окон, перемещение, различные события (WM?) и использующий функции видеодрайвера, работающего вне WM. То-ли видеодрайвер должен быть частью WM(?).
Может, кто-нибудь разбирался с программированием под X.org? Как там это реализовано? (да-да, я знаю, X.org не WM ;)) Или может под что-то другое?

/me пошел искать мануалы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июл 2007, 12:54 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1197
legos, я над реализацией GUI задумываюсь пока только в том плане, как это может максимально быстро работать в моей системе. Пока остановился на идее связки GUI-сервер/приложение-оболочка - весь вывод должен осуществляться в графическом контексте оболочки, а использование GUI-сервера помимо выполнения им его основных функций обусловлено максимально быстрой передачей данных между адресными пространствами "приложения-клиента" и приложения-оболочки, хотя возможно получится это сделать исключительно с помощью IPC.

P.S. Понятие "сервер" я использую совсем в другом смысле, нежели тот, что закладывается в него в микроядре. У меня так называется то, что осуществляет сервис через дополнительный программный обработчик, который может быть зарегистрирован в системе. Сейчас это реализовано через дополнительные программные прерывания (диапазон 0x64 - 0xFF). Так есть идея Linux-сервера (0x80), а также GUI-сервера. Системные вызовы - это фактически обращение к серверу ядра. Способ обращения к серверу в рамках конкретной системы всегда единообразен в отличии, например, от обращения к функциям вирт. устройств.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июл 2007, 20:57 

Зарегистрирован: 06 май 2007, 15:10
Сообщения: 141
Если гуй будет рисовать окна в обычном традиционном смысле, то там должны быть
1. API для сворачивания окна в заголовок aka WinRoll,
2. притягивание и выравнивание окошек к краям и между собой,
3. включение StayOnTop для любого отдельного окна по желанию.
4. что-то востанавливающее размеры окон по шаблону (Left, Right, Centre, 800x600...)toggle window, LeftToRight, Cascade... etc.
Изображение
Либо традиционные схемы virtual десктопов, как в KDE... однако штук 4 (alpha, beta, gamma, delta) вполне хватит, никто 50-60 не использует :)

Дрон бы сказал, почему только четыре? Надо 10000 :)

Недопустимо это пускать на самотёк, чтоб потом все делали это как получится, это часть 'системы' и должно быть сразу.
Тут можно бы создать wiki таблицу функций, обсудить заранее и проголосовать интересующимся народом.
Так как в одиночку можно и забыть чего...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 июл 2007, 22:07 

Зарегистрирован: 06 май 2007, 15:10
Сообщения: 141
Ещё одно замечание...
Часто встречается один баг почти во всех приложениях.
Когда используется Stay On Top в главном окне программы, как правило все остальные забываются,
и что мы имеем? Например, открылся плеер и стоит он зе топ. При попытке открыть эквалайзер, он оказывается позади программы, тоже самое любые другие окна, настроек и т.п. Уже не раз видел такое.
Вообщем дочерние окна должны наследовать свойства родительских в этом случае!
:P


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB