Выпуск новостей ReactOS #52 |
- Statistics
- Participants
- Translate into Russian
- Translation result
- Translated in draft, editing and proof-reading required.
Ещё работа над Win32
Timo Kreuzer продолжает свои попытки сделать подсистему Win32 более корректной, [в рамках этих усилий] в последнее время работая над функциями SetWindowExtEx и SetViewpointExtEx. Первым шагом было перенести их из win32k, где эти операции изначально производились, в gdi32, где они должны производиться. У Jim'а Tabor'а уже был на месте код, который их реализовывал, но им требовались исправления. Хотя они всё ещё не завершены, Timo исправил некоторые из ошибок. [Эти] Две функции существуют для установки размеров контекста устройства, соответственно для окна и вьюпорта. Окно - набор логических координат, в которых [некто] указывает GDI рисовать, в то время как вьюпорт - набор координат устройства, в которые транслируются логические координаты, когда изображение на самом деле выводится на экран. Есть разные способы отображения логических координат на координаты устройства, зависящие от используемого режима. Timo исправил некоторые режимы, но изотропный режим в данный момент сломан. Изотропия требует, чтобы вертикальные и горизонтальные размеры были одинаковы. Приложение, которое раскрывает [в значении "разоблачает"] проблему - редактор ресурсов в Visual Basic 6.
Jim Tabor тоже был занят [в значении "не сидел сложа руки"], пытаясь исправить структуру ThreadInfo, которая в свою очередь исправит таймеры, которые исправят меню и другие проблемы с рисованием, и в конце-концов исправят проблему, из-за которой нужно двигать мышкой, чтобы скачивать страницы в Firefox. Это отличный пример того, как проблемы в одном компоненте могут иметь каскадный эффект и выливаться в долго не исправляемые [буквально - "долгоиграюще", "долго остающиеся"] ошибки, поскольку проблема с Firefox'ом известна уже как минимум год. Другой результат этой ошибки - меню в GIMP'е неправильно отрисовываются, а сам GIMP падает при определённых обстоятельствах. Сама проблема вовлекает в себя тот факт, что таймеры сохраняются в очереди сообщений, тогда как вообще-то они должны сохраняться в фиксированном списке. Адрес очереди в данный момент находится в ClientThreadInfo, но адреса, где должны были бы храниться таймеры, также хранятся [и] в другом месте. Это второе место на самом деле имеет правильный адрес [т.е. находится по правильному адресу], но поскольку адрес в ClientThreadInfo неправильный, получается несоответствие, вызывающее ошибку режима пользователя и завершение приложения.
Поддержка отладки
Почти два года прошло с первого упоминания WinDBG, а разработчики всё ещё работают над ним. Ряд проблем не даёт WinDBG функционировать корректно под ReactOS, и Stefan Ginsberg и Timo Kreuzer независимо работали над находящимися под вопросом компонентами. Stefan наткнулся на ошибку в HAL и KDCOM, которая вовлекает в себя KdComPortInUse. Он определён в HAL, но по причине компилятора [???] он был определён неправильно. Его использование затем было хакнуто в KDCOM, но конфигурационная опция в RBuild удаляет этот хак. Stefan включил эту опцию, и как следовало ожидать, что-то сломалось. К несчастью, даже после исправления определения, остальная часть KDCOM всё ещё недостаточно полна чтобы WinDBG мог функционировать. Вместо этого приходится копировать KDCOM из Windows Server 2003. Это приводит к тому, над чем сейчас работает Timo.
В данный момент ReactOS использует нечто под названием kdbg, который просто перенаправляет отладочный текст в любой терминал, соединённый с первым последовательным портом. С другой стороны, Windows использует KDCOM для отладочного ввода/вывода и обладает гораздо более сложным отладочным протоколом. Сам KDCOM - это библиотека, используемая для вывода отладочной информации через последовательный порт, из ядра в WinDBG. Как часть портирования под x64, Timo переписывал KDCOM. Исходная версия в транке была очень древней, а для соединения с WinDBG ReactOS'у требовалась [версия] как минимум совместимая с 2003. Вообще-то есть несколько реализаций KDCOM, но Timo весьма убеждён, что все они были разработаны методом прямого реверс-инжиниринга. Поэтому она написал свой с нуля используя [опубликованные] онлайн заметки и немного чёрноящичества с данными, которые входят и выходят. Пока что написанный Timo KDCOM позволяет WinDBG соединяться, дезассемблировать, читать память, и другие вещи, которые должен делать отладчик. Однако это всё существует в ветке для x64, и Timo ещё не пытался перенести это назад в транк.
FOSDEM
Проект ReactOS будет присутствовать на FOSDEM как обычно и несколько разработчиков будут занимать будку [т.е. стэнд ReactOS на FOSDEM]. Поскольку в Европе так много разработчиков [ReactOS], им гораздо проще собраться на этой конференции нежели другим. Разработчики, которые планируют посетить [FOSDEM] - это Andrew Greenwood, Aleksey Bragin, Stefan Ginsberg, KJK::Hyperion, Colin Finck и Pierre Schweitzer. Так что обязательно загляните и скажите привет, и возьмите ReactOS CD, пока они не закончились.
