ARWINSS: новая реализация подсистемы win32

Обсуждаем ReactOS по-русски

Moderators: fog, fireball

hto
Developer
Posts: 2193
Joined: Sun Oct 01, 2006 3:43 pm

Post by hto »

В два раза?

arwinss-45630-dbg.7z — 33362 KB
bootcd-45606-dbg.7z — 38078 KB
Yaraslau
Posts: 430
Joined: Mon Sep 28, 2009 7:47 pm
Location: Беларусь/Belarus, ex-USSR
Contact:

Re:

Post by Yaraslau »

hto wrote:В два раза?

arwinss-45630-dbg.7z — 33362 KB
bootcd-45606-dbg.7z — 38078 KB
Да, именно в два раза. В своём комментарии выше я упомянул "образ" (т.е. файл в формате .iso). Архив записать на диск можно, но загрузиться нельзя. Поэтому интересует сравнение объёмов именно .iso

Например,
arwinss-45606-dbg.iso занимает почти 45 мегабайт, а обычный ReactOS LiveCD-45582.iso тянет на 151 мегабайт. Разница даже не в 2, а в три раза получается.

P.S. можно пошутить, что всего за 24 сборки разработчики так оптимизировали код Реактоса, что его объём уменьшился в 3 раза. :D Но это было бы утопией. :roll:
hto
Developer
Posts: 2193
Joined: Sun Oct 01, 2006 3:43 pm

Post by hto »

Например, arwinss-45606-dbg.iso занимает почти 45 мегабайт, а обычный ReactOS LiveCD-45582.iso тянет на 151 мегабайт.
аrwinss-*-dbg.iso — это BootCD, не LiveCD. Если вопрос заключается в том, почему распакованный образ LiveCD гораздо больше, чем BootCD, то ответ таков — на BootCD есть архив reactos.cab, а LiveCD содержит все файлы по отдельности.

В то же время, сжатый образ LiveCD меньше, чем BootCD, потому что используется лучший алгоритм сжатия, чем в reactos.cab.

Также, *-*-dbg.iso больше и медлительнее, чем *-*-rel.iso.
Yaraslau
Posts: 430
Joined: Mon Sep 28, 2009 7:47 pm
Location: Беларусь/Belarus, ex-USSR
Contact:

Re:

Post by Yaraslau »

hto wrote:аrwinss-*-dbg.iso — это BootCD, не LiveCD.
Спасибо, hto, теперь всё понятно. Я сначала не мог разобраться, потому что загрузка обоих вариантов (до подвисания) происходит без видимых отличий.
unxed
Posts: 220
Joined: Mon Aug 28, 2006 11:11 pm
Contact:

Re: Что за ветка arwinss?

Post by unxed »

Похоже, починили давний баг с перевернутыми битмапами.

Свежая сборка, как обычно, в первом посте треда.

Скриншоты
Commit by fireball on arwinss :: r45810 /reactos/subsystems/win32/win32k/gre/surfobj.c:
GetBitmapBits and SetBitmapBits should get/set bitmaps bits in a particular format described in MSDN, not in the format they are stored in internally. Reimplement them based on winex11.drv implementation. Could use some optimisation, but they are deprecated non time-critical functions. Thanks to Maarten Kroese for finding this problem. Fixes issue #28 in Arwinss wiki.
Кстати, на английском форуме родилась неплохая идея: вывешивать парами скриншоты одной и той же программы в последней официальной сборке reactos, и в arwinss. Таким образом можно будет наглядно продемонстрировать преимущества arwinss, и таки добиться, чтобы её приняли в основную ветку разработки. Вот первый пример, arwinss - внизу.
Last edited by unxed on Mon Mar 08, 2010 2:02 pm, edited 1 time in total.
unxed
Posts: 220
Joined: Mon Aug 28, 2006 11:11 pm
Contact:

Re: ARWINSS: новая реализация подсистемы win32

Post by unxed »

Свежая пачка скриншотов с ARWINSS:

http://40in.2g0.ru/reactos/arwinss_45813/moar/
Last edited by unxed on Thu Jul 29, 2010 4:25 am, edited 1 time in total.
unxed
Posts: 220
Joined: Mon Aug 28, 2006 11:11 pm
Contact:

Re: ARWINSS: новая реализация подсистемы win32

Post by unxed »

Новые образы ARWINSS смотрите здесь:
http://www.reactos.org/forum/viewtopic.php?f=2&t=8004

или здесь:
http://arwinss.com/builds/
Last edited by unxed on Mon Apr 26, 2010 11:39 am, edited 1 time in total.
unxed
Posts: 220
Joined: Mon Aug 28, 2006 11:11 pm
Contact:

Re: ARWINSS: новая реализация подсистемы win32

Post by unxed »

Решил составить список изменений в ARWINSS, потому что не очень удобно просматривать каждый раз весь список коммитов. Может быть, кому-то ещё пригодится.

Большая часть коммитов идёт от fireball'а, в противном случае я указываю авторство.

47054 (by khornicek)
[WIN32K]
Bring support from RLE compressed bitmaps from trunk.
Merge the 4bpp and 8bpp decompress functions to one generic function to avoid code duplication and to reduce code complexity.
Fixes missing icons in Wordpad toolbars, missing reactos logo bitmap in shell about dialog and more.

47034
- SWM: Create clipping region in a shorter way for SwmDc (previously due to passing NULL in rcBounds parameter to RosGdiSetDeviceClipping it was not really fully initialized). Should fix issues with copying contents of a moving window.

47015
- RosGdiCreateDC: Remove transformation objects from DC. All needed transformations are performed in usermode (additional bonus is that we remove part of floating point operations done in kernelmode). See issue #5237 for more details.

47014
- WINENT.DRV: Remove bit copying, it's a job of SWM.
- SWM: Create a screen DC, and copy window's contents when changing position (significantly faster than doing it from winent.drv, not to say that doing so without interaction with a window manager is not possible).
- SWM: Invalidate areas after changing moving a window or changing its size.
- GDIOBJ: Add a missing space for code beautification. See issue #5237 for more details.

47013
- RosGdiCreateDC: Make sure DC is not tied to any window.

47012
- Initialize SWM after DC implementation init. Doesn't change anything now, but it's more logical because SWM is higher level of abstraction than DCs, palette and other low-level things.

47002
- Properly convert region coordinates in SwmInvalidateRegion. This gives a substantial visibility improvement: now windows properly repaint themselves when changing focus.

47001 (by gschneider)
- [WIN32K] pLogPen cannot be NULL (static buffer), check pExtLogPen instead

46999
- Target mouse events to a corresponding window. Fixes issues like inability to click radiobuttons, move resolution slider in desk.cpl, etc. See issue #5214 for more details.

46993
- Merge 46959, fixes arwinss-in-trunk booting.

46919
- Sync up to Wine-1.1.43.

46914
- Get rid of the last hardcoded screen size.
- Remove unnecessary function declaration. See issue #5304 for more details.

46872
- Enable clipped text output. Solves issues like caption text being printed outside of window's caption when window is being made too small.

46871
- Add a clipping region cache to the usermode DC structure and use it in SetDeviceClipping calls instead of creating an empty region all the time. Speed increase and also it's needed for further text output improvements.

46861
- Grab a USER lock when entering timer worker routines, fixes race conditions (were exhibited by user32_winetest msg)

46827
- A user server inside the win32k should have its own error state and must not change thread's last error! Implement this by using a global_error variable, having in mind that handling a server request is an atomic operation.
- Number of winetest failures is dramatically reduced.

46778
- Copy whole window bits when moving a window, SWM's job. Fixes "repainting" issues when moving a window.

46773
- Temporarily comment out freeing the message queue at thread termination. Fixes "hangs" after exiting any application.

46772
- Code cleanup: remove unnecessary PTHREADINFO/PPROCESSINFO casts, reduce diff to the original code, make the code smaller by querying the current thread info only once per function.

46772
- Code cleanup: remove unnecessary PTHREADINFO/PPROCESSINFO casts, reduce diff to the original code, make the code smaller by querying the current thread info only once per function.

46759
- Store a handle to the idle event, not just a pointer to the event object in a per process structure.
- Dereference and properly close idle event object when terminating a process.

46756
- Finally implement timeout removal from the old desktop when setting a new one for the process.

46755
- Add thread termination cleanup (destroying windows, freeing a message queue, dereferencing its desktop).

46753
- Create and use idle_event as expected by Wine. It creates idle_event for every gui process (TODO: investigate if CUI process in ReactOS should have it).
- Rewrite get_process_idle_event handler in a NT way.

46752
- Import process.s from wineserver, clean it up to contain only ported get_process_idle_event handler. Not included into the build now.

46715
- Sync up to Wine-1.1.42.

46322
- Sync up to Wine-1.1.41.

45981 (by Maarten Kroese)
- Apply same Marlett-font charset fix to the system menu drawing.
- Also slightly adjust symbol's position. (Should be sent upstream).

45949
- Sync up to Wine-1.1.40.
- winent.drv: Since GetObject doesn't report negative height for topdown bitmaps anymore, rely on information from bmi. In future, it should be fixed to just provide a boolean topdown flag to the kernelmode GDI driver counterpart.

45810
- GetBitmapBits and SetBitmapBits should get/set bitmaps bits in a particular format described in MSDN, not in the format they are stored in internally. Reimplement them based on winex11.drv implementation. Could use some optimisation, but they are deprecated non time-critical functions. Thanks to Maarten Kroese for finding this problem. Fixes issue #28 in Arwinss wiki.

45808
- GreSetDIBits: Don't leak a surface lock in case parameters check fails.
- GreSetDIBits: Add a (now commented out) optimisation for directly copying bits if source and target bitmaps parameters closely match. Based on a similar winex11.drv optimisation in this function.

45689
- Merge 45687:45688 by Maarten Kroese. Fixes issues with context menus in ReactOS Explorer.

45678 (by Maarten Kroese)
UITOOLS95_DrawFrameCaption improvements:
- Change FIXED_PITCH to DEFAULT_PITCH (because Marlett is not a fixed pitch font).
- Change from SYMBOL_CHARSET to DEFAULT_CHARSET, it's correct according to MSDN, because SYMBOL_CHARSET implies that it can fall back to another font, but that is never what we want.
- FW_NORMAL to FW_DONTCARE.
- This patch should be sent to Wine, however their Marlett font hides these problems.

45651
- Sync up to Wine-1.1.39.

45630
- Merge 45011: "avoid warning messages on Explorer startup when missing configuration files".
Last edited by unxed on Wed Apr 28, 2010 3:59 pm, edited 3 times in total.
NOX86
Posts: 164
Joined: Tue Jun 20, 2006 12:21 pm

Re: ARWINSS: новая реализация подсистемы win32

Post by NOX86 »

unxed, мне кажется что такой подход к восполнению информации о РОС очень даже уместен, НО!
Может стоит передавать лишь краткое содержание изменений _своими словами_ дополняя ссылками на CIA? Не думаю что простая копипаста имеет смысл, тем более на английском.
unxed
Posts: 220
Joined: Mon Aug 28, 2006 11:11 pm
Contact:

Re: ARWINSS: новая реализация подсистемы win32

Post by unxed »

NOX86 wrote:unxed, мне кажется что такой подход к восполнению информации о РОС очень даже уместен, НО!
Может стоит передавать лишь краткое содержание изменений _своими словами_ дополняя ссылками на CIA? Не думаю что простая копипаста имеет смысл, тем более на английском.
Я больше для себя делал - никому ведь не мешает, надеюсь? И, кстати, это не простая копипаста (или покажи мне способ сделать лог коммитов только одной конкретной ветки автоматически).

Зачем делал? Удобно смотреть в одном месте, в каком из коммитов что появилось - помогает при тестировании. Скажем, в багзиллу лучше писать не "поломалось вот это", а "поломалось вот это после вот такого коммита".

Но идею обзоров на русском (в духе "Activity summary" на английском форуме) я одобряю. Возможно, даже готов этим заняться (по arwinss, по крайней мере - в последнее время эта подсистема интересует меня больше всего). Посмотрим, что по времени будет. В любой случае, перед ближайшим обзором нужно посмотреть свежую сборку, а её ещё не выложили.
NOX86
Posts: 164
Joined: Tue Jun 20, 2006 12:21 pm

Re: ARWINSS: новая реализация подсистемы win32

Post by NOX86 »

Дада я как раз про "Activity summary".
Всосать арвинс коммиты можно например так, написать протенький парсер (хотя бы даже на js) или (как это я делаю) использовать поиск в фидридере (в моём случае - opera)
Почему не просто выборка касающаяся только arwinss:
1. Я думаю, все кто интересуются так или иначе смотрят лог коммитов.
2. Занимает _очень много_ места на странице.
3. Коротенький обзор лучше читаем; если же надо больше информации или какие-то изменения пропустил - идём и копаем код.
Короче я предлагаю писать коротенькие субьективные заметки по шаблону:
"Сделали это это и это в этой ревизии.
Проверил, работет ... Мне понравилось...
Не понравилось... Собираюсь проверить."
unxed
Posts: 220
Joined: Mon Aug 28, 2006 11:11 pm
Contact:

Re: ARWINSS: новая реализация подсистемы win32

Post by unxed »

В двух словах: в ревизии 47054 добавили поддержку растровых изображений, сжатых алгоритмом RLE. Это должно починить отсутствовавшие графические элементы в интерфейсах многих приложений (проблемы наблюдались в audiocatalyst, openoffice setup, java setup, nero setup, wordpad и т.д. - но не факт, что все они были вызваны именно этой причиной, так что нужно проверять). Также несколькими ревизиями ранее вроде как окончательно починили перемещение и изменение размеров окон. Ждем свежей сборки, чтобы проверить и закрыть соответствующие баги, если и правда починили.

UPD: Посмотрел, потестил. Отсутствовавшие элементы интерфейса действительно появились в wordpad и winamp. В некоторых других местах (openoffice setup, jre setup, nero setup) проблема "чёрных квадратов" всё ещё присутствует. Перерисовка окон при перемещении стала работать куда лучше - теперь редко-редко какой-нибудь мусор на экране остаётся.

Разумеется, обнаружилась и пачка новых багов. Например, окно winamp перерисовывается криво, если его вытащить за пределы экрана (баг 5322). Меню "пуск" открывается под активным окном, а не поверх всех (баг 5326). Черные квадраты остались в части приложений (баг 5324). У некоторых иконок некорректный фон (баг 5323). Ну и ещё по мелочи.

Закрыты баги: про отсутствие картинки в программе установки ArtWeaver'а (баг 5219), про отстутствие иконок в WordPad и других программах (баг 5216), про перерисовку окон при перемещении и изменении размеров (баг 5237).

PS: Похоже, в эксплорере reactos имеется баг, в результате которого при перемещении окна эксплорера (именно во время движения окна) не перерисовываются области экрана, которые были под окном. Если отпустить окно или просто перестать его двигать - всё перерисовывется корректно. В других программах такого не наблюдается, так что я склонен считать это багом эксплорера, а не arwinss. Впрочем, это особо не мешает.

PPS: Ещё закрыл баг, связанный с обрезанием текста в окне установки flashget (5227), так как в ревизии 47054 текст уже не обрезается. Тем не менее, в этом окне всё ещё проявляется другая проблема: в arwinss наблюдаются некоторые проблемы с хинтингом шрифтов (кроме обычного начертания шрифта Tahoma), а в шрифте Tahoma полужирное начертание работает только на кеглях 8 и 9 пунктов. Я решил, что пора вынести эти проблемы в отдельный баг, так что теперь он будет под номером 5327.
Last edited by unxed on Wed Apr 28, 2010 11:26 pm, edited 3 times in total.
NOX86
Posts: 164
Joined: Tue Jun 20, 2006 12:21 pm

Re: ARWINSS: новая реализация подсистемы win32

Post by NOX86 »

Отлично :!:
Antony
Posts: 22
Joined: Fri Nov 11, 2005 11:19 am
Location: Russia
Contact:

Re: ARWINSS: новая реализация подсистемы win32

Post by Antony »

unxed wrote:Свежий скриншот: excel 97
Увидел на скриншоте графический баг. второй ряд кнопок перекрывается в районе кнопок: заливки, цвета шрифта и обрамления.
Post Reply

Who is online

Users browsing this forum: No registered users and 12 guests