XPWM (XP Window Manager)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 18:22, 27 октября 2017.
XP Window Manager
Windows 3.11 workspace.png
Screenshot Window Manager
Разработчики: Microsoft corporation
Выпущена: 25 October 2001 года; 18 years ago (2001-10-25)
Состояние разработки: finished
Написана на: C
Операционная система: Windows XP
Размер дистрибутива: 4521 Kb
Тип ПО: компонент Microsoft Windows
Веб-сайт microsoft.com/ru-ru

Менеджер окна стека также называемый плавающим оконным менеджером - это оконный менеджер, который рисует все окна в определенном порядке, позволяя им перекрываться, используя технику, называемую алгоритмом живописца[1]. Все оконные менеджеры, которые допускают перекрытие окон, но не являются компоновщиками оконных менеджеров, считаются стековыми менеджерами окон, хотя, возможно, не все используют точно такие же методы. Другие диспетчеры окон, которые не считаются стековыми оконными менеджерами, - это те, которые не позволяют перекрывать окна, которые называются диспетчерами оконных окон.

Оконный менеджер стеком позволяет окнам перекрываться, рисуя их по одному. Укладка или перерисовка по отношению к алгоритму живописца относится к рендерингу каждого окна как изображения, окрашенного непосредственно над рабочим столом и над любыми другими окнами, которые могут быть уже нарисованы, эффективно стирая области, которые покрыты[2]. Обычно процесс начинается с рабочего стола и продолжается путем рисования каждого окна и любых дочерних окон от начала до конца, пока, наконец, не будет выведено окно переднего плана. Порядок, в котором окна должны быть сложены, называется их z-порядком.

Ограничения

Стэкинг - относительно медленный процесс, требующий перерисовки каждого окна один за другим, от самого заднего и самого внешнего до самого большого и самого внутреннего. Многие управляющие окна стека не всегда перерисовывают фоновые окна. Другие могут обнаружить, когда требуется перерисовать все окна, так как некоторые приложения запрашивают укладку, когда их выход изменился[3]. Повторное штабелирование обычно выполняется при вызове функции оконному менеджеру, который выборочно перерисовывает окна по мере необходимости. Например, если фоновое окно выведено на передний план, только это окно нужно будет перерисовать.

С диспетчером стекового окна, когда приложение не отвечает на запросы, оно может сохранить содержимое другого окна, первоначально показанного над ним.

 Известный недостаток укладки в том, что когда окна окрашиваются друг в друга, они фактически заканчивают стирание предыдущего содержимого той части экрана, которую они покрывают. Эти окна должны быть перерисованы, когда они отображаются на переднем плане, или когда видимые части изменяются. Когда окно изменилось или его позиция на экране изменилась, диспетчер окон обнаружит это и может повторно собрать все окна, требуя, чтобы каждое окно перерисовывалось и передавало свое новое представление менеджеру окон до того, как оно будет нарисовано . Когда приложение перестает отвечать на запросы, оно может быть не в состоянии перерисовать себя, что иногда приводит к тому, что область внутри рамки окна сохраняет изображения других окон, когда она выводится на передний план. Эта проблема обычно наблюдается в Windows XP и ранее, а также в некоторых диспетчерах окон X Другим серьезным ограничением, которое затрагивает почти всех менеджеров окон стека, является то, что они часто сильно ограничены в степени, в которой интерфейс может быть ускорен графическим процессором (GPU), и очень мало можно сделать по этому поводу.

Как избежать ограничений

Некоторые технологические достижения позволили уменьшить или устранить некоторые из недостатков укладки. Одним из возможных решений ограниченного наличия аппаратного ускорения является обработка отдельного переднего плана как отдельного случая, что делает его отличным от других окон[4].

Это не всегда требует перепроектирования диспетчера окон, поскольку переднее окно нарисовано последним в известном месте на экране и не покрывается другими окнами. Поэтому его можно легко изолировать на экране после его рисования. Во-первых, поскольку мы знаем, где находится переднее окно, когда растр экрана достигает графического оборудования, область, занимаемая передним окном, может быть легко заменена ускоренной текстурой[5].

Однако, если диспетчер окон также может предоставить приложению обновленное изображение того, как выглядел экран до того, как было выведено переднее окно, но после того, как все другие окна были открыты, открываются новые возможности. Это позволило бы одному окну на переднем плане казаться полупрозрачным, используя предыдущее изображение как фильтр текстуры на конечном выходе. Это стало возможным в Windows XP с программным обеспечением, включенным во многие видеокарты NVidia GeForce, а также из сторонних источников с использованием аппаратного наложения текстур. Еще одним способом уменьшения ограничений укладки является использование аппаратного наложения и хроматирования. Так как видеооборудование может рисовать на экране исходящих, то отображается окно, содержащее известный цвет, который позволяет видео аппаратуре обнаруживать, какие части окна отображаются и должны быть нарисованы. Используя этот метод, можно добавить 3D и 2D ускоренное видео и анимацию в окна[6].

Полноэкранное видео также можно рассматривать как способ избежать ограничений, наложенных укладкой. Полноэкранный режим временно приостанавливает необходимость управления окнами, позволяя приложениям иметь полный доступ к видеокарте. Ускоренные 3D-игры под Windows XP и ранее полностью полагались на этот метод, так как эти игры не могли бы играть в оконном режиме. Однако технически этот метод не имеет ничего общего с оконным менеджером и просто является средством его замены[7].

Гибридные оконные менеджеры

Некоторые оконные менеджеры могут обрабатывать окно переднего плана совершенно другим способом, косвенно отображая его и отправляя свой результат на видеокарту для добавления в исходящий растр. Хотя эта техника может быть реализована в рамках некоторых менеджеров окон стекирования, она технически скомпонована, так как переднее окно и растровый экран обрабатываются одинаково, так как два окна будут находиться в оконном менеджере компоновки.

Как описано выше, у нас может быть доступ к немного более ранней стадии укладки, где переднее окно еще не было нарисовано. Даже если он будет позднее вычерчен и установлен на видеокарту, его все равно можно просто полностью заменить на аппаратном уровне слегка устаревшей версией, а затем создать композитный файл, даже не нарисуя в исходном месте окно. Это позволяет сделать окно переднего плана прозрачным или даже трехмерным.

К сожалению, взаимодействие с объектами вне исходной области переднего плана также может быть невозможно, так как диспетчер окон не сможет определить, что видит пользователь, и будет пропускать такие щелчки мышью, чтобы все программы занимали эти области экрана во время Последнее событие стекирования[8].

X Window System

Многие диспетчеры окон в X Window System обеспечивают функциональность окна стека:

  • 4Dwm
  • 9wm
  • AfterStep
  • amiwm
  • awesome
  • Blackbox
  • ctwm
  • cwm
  • Enlightenment
  • Fluxbox
  • FLWM
  • FVWM
  • FVWM95
  • Goomwwm
  • Hackedbox
  • IceWM
  • JWM
  • MWM
  • olwm
  • Openbox
  • PekWM
  • PLWM
  • Sawfish
  • swm
  • tvtwm
  • twm
  • Window Maker
  • WindowLab
  • wm2

Microsoft Windows

Microsoft Windows 1.0 отображала окна с помощью диспетчера оконных окон. В Windows 2.0 он был заменен менеджером окон стека, который позволял перекрывать окна. Microsoft держала оконного менеджера окон через Windows XP, что создавало серьезные ограничения на его способность отображать аппаратное ускорение контента внутри обычных окон. Хотя технически возможно производить некоторые визуальные эффекты с помощью стороннего программного обеспечения. Начиная с Windows Vista новый оконный менеджер компоновки по умолчанию используется в совместимых системах.

Источники

  1. Stacking window manager // Wikipedia [2009-2017] Дата обновления: 17.04.2017. URL: https://en.wikipedia.org/wiki/Stacking_window_manager (дата обращения: 22.10.2017)
  2. Picking a Window Manager in Linux // Engadget [2017-2017]. Дата обновления: 23.06.2017. URL: https://www.engadget.com/2012/10/30/how-to-picking-a-window-manager-linux/ (дата обращения: 22.10.2017)
  3. Painter's Algorithm // medialab [2015-2016]. Дата обновления: 12.12.2016. URL: http://medialab.di.unipi.it/web/IUM/Waterloo/node67.html (дата обращения: 22.10.2017)
  4. Nvidia GeForce Tweak Guide // tweakguides [2016-2017]. Дата обновления: 14.07.2017. URL: http://www.tweakguides.com/NVFORCE_8.html (дата обращения: 22.10.2017)
  5. Desktop Window Manager // microsoft [2017-2017]. Дата обновления: 11.05.2017. URL: https://msdn.microsoft.com/en-us/library/aa969540(VS.85).aspx (дата обращения: 22.10.2017)
  6. The Xerox Alto // toastytech [2016-2017]. Дата обновления: 23.06.2017. URL: http://toastytech.com/guis/alto3.html (дата обращения: 22.10.2017)
  7. Xerox Star // toastytech [2017-2017]. Дата обновления: 30.04.2017. URL: http://toastytech.com/guis/star.html (дата обращения: 22.10.2017)
  8. GEM 1.1 // toastytech [2017-2017]. Дата обновления: 16.08.2017. URL: http://toastytech.com/guis/gem11.html (дата обращения: 22.10.2017)