Изменения в оконной подсистеме KolibriOS

Kernel-side graphics support
  • Интересно как в эту модель укладываются полноэкранные приложения - например, игры...
  • Вероятно, что или они выбирают уровень WLEVEL_ABOVEALL, или в ядре (драйвере) появляются функции, с использованием которых все графические функции выключаются для остальных приложений и оставляются только для текущего, а само окно помещается и висит всё время на переднем плане. В принципе, в Windows драйвер воспринимает OpenGL/DirectX окно, развёрнутое на весь экран, как отдельный случай и что-то там изменяет для ускорения отрисовки.
  • mike.dld
    События лучше делать в виде структур. Это упростит программирование на C. И на асме если занять 4 регистра придётся ставить pushad что не улучшает код.
    По событиям у меня уже есть наработки, хотел занятся ими после курсоров.
  • 1. WLEVEL_BELOWALL [-2] - окна, всегда находяшиеся под всеми другими окнами; используется для программы десктопа, и только для неё
    2. WLEVEL_BOTTOMMOST [-1] - окна, всегда находяшиеся под обычными окнами и всеми их перекрывающими; используется для десктоповых виджетов
    Если интересно, могу сказать, что происходит с десктопом в винде. Есть собственно окно десктопа, его оконный цикл находится в недрах ядра (для NT-семейства - win32k.sys). Есть окно Explorer'а, оно находится внизу всех окон и при активации не перекрывает остальные окна, потому что Explorer вызвал специальную функцию SetShellWindow из user32.dll. Наконец, иконки и контекстное меню рабочего стола представляют собой часть десктопа и управляются тем же потоком от explorer.exe.
  • В принципе, часть из того что ты написал я знал, но даже если бы я знал всё - не стал бы оглядываться на Windows. Мы и так уже пытаемся всеми силами сделать из Менуета Колибри, зачем теперь делать из Колибри Виндовс? Формулировка, возможно, несколько неправильная, но в принципе релизация предложенная мной возможно является даже более широкой, чем в Windows. В любом случае, это лишь предложение для обсуждения. И при твоём подходе в виде функции, и при моём без этой дополнительной функции (точнее, функция будет но она просто будет устанавливать уровень) возможность создания одинаково функционального десктопа никуда не пропадает.
  • А я не предлагаю подход как в Windows. Я просто информирую, как это сделано там.
  • Мне интересно, а панель и меню будут входить в десктоп? Просто уже пару дней над ними бьюсь, а тут такой разговор возник... ;)
  • >Мне интересно, а панель и меню будут входить в десктоп? Просто уже пару дней над ними бьюсь, а тут такой разговор возник...

    Я вот тоже думаю над тем,как реализовать панели в Колибри. Ведь панель должна работать и в окне, и за его пределами(если размер меню превышает размер окна или вложенные меню выходят за предел окна).Причём, чтобы небыло миганий,необходимо перерисовывать не окно,а только подменю панели(стрирать старое и рисовать новое в новом месте).
    Как реализовать рисование тиких меню пока не совсем понятно.То,что с приоритетами надо всё связать - это понятно. А вот как сделать рисование меню - через прямой доступ к графике или как-то по другому.Пока не понятно как.
  • andrew_programmer
    Меню придётся рисовать напрямую. Сохранять экран как для курсоров а потом востанавливать.
  • >Меню придётся рисовать напрямую

    Всмысле через селектор gs реализовать доступ к экрану ?

    >Сохранять экран как для курсоров а потом востанавливать.

    А делать это должна библиотека, которую вызывает программа или ядро(версия с ядром ка-то не очень) ?
  • Если рисовать меню только в окне то можно и через gs. Но если меню должно выходить за рамку окна то надо менять display_data иначе другие программы будут затирать меню. Так что без ядра не обойтись.
  • Если получится сделать такую систему окон то меню будет особым типом окна. Программа создает меню. Система сохраняет эркан и display_data и модифицирует display_data под меню. Когда программа закрывает меню система востанавливает display_data и экран. Похоже на классы окон со стилем CS_SAVEBITS в Win.
  • Мда, чем дальше в лес, тем толще партизаны - это же надо до такой степени усложнить систему...
  • иначе система никак... не усложнишь здесь, в другом месте вылезет боком
  • Who is online

    Users browsing this forum: No registered users and 5 guests