viernes, 29 de octubre de 2010

News: Yarotows integrado en el Trunk

features
Hace un par de días hablábamos de Yarotows y de algunas de las bondades que traía bajo el brazo.

Los problemas que quedaban por resolver ya han sido resueltos y ahora podemos descubriros todas las novedades que trae esta reescritura/implementación.

En estos momentos nos encontramos testeando los cambios y seguramente nos encontraremos con algunas regresiones, si deseais colaborar solo teneis que instalar la versión 0.3.12 (que no tiene Yarotows) y comparar el comportamiento con la última revisión de ReactOS (que si la lleva). Si encontraís diferencias, dejad un comentario indicando el bug que habeís encontrado. Ya nos encargaremos nosotros de reportarlo :)


Sigue leyendo si quieres conocer todas las novedades…


Las reescrituras


Como ya comentamos ( ver ), Yarotows es una mezcla de reescrituras e implementaciones de nuevas características en el subsistema Win32.
Las reescrituras realizadas son:
  • Reescritura del “Locking de Dispositivos”, necesario para cambiar la resolución de pantalla de manera dinámica.
El “Locking” es un concepto bastante complejo, básicamente cuando un dispositivo está siendo usado es bloqueado para evitar que sea usado por el Sistema Operativo. Esto no solo ocurre con los dispositivos hardware propiamente dicho, sino tambien con otros conceptos de software, como evitar acceder a una zona de memoria restringida o que está siendo usada para evitar corrupciones de memoria.
  • Reescritura del manejo de funciones Eng para conseguir un código mas limpio y compatible.
Las funciones “Eng” son aquellas que se encargan de pintar superficies y apenas existe documentación sobre las mismas.
  • Reescritura del manejo de código DIB.
Un DIB es un un formato usado para definir bitmaps independientes del dispositivo en varias resoluciones distintas. El propósito de los DIBs es permitir que los bitmaps puedan ser pasados de un dispositivo a otro (de ahí lo de “independiente”).
  • Reescritura de la creación y eliminación de DC.
Ahora la eliminación y la limpieza de DC se realiza mediante callbacks. Ya no perdemos objetos DC al terminar un proceso como hacíamos antes.
Un DC es un Device Context (“Contexto de dispositivo”) ,una estructura de datos de Windows que contiene información sobre los atributos de dibujado de un dispositivo como una pantalla o una impresora. Lógicamente no todas las pantallas son iguales, algunas usan una resolución 800x600, otras son 1024x700, unas son monocromas, otras a color…todo esto lo tiene que conocer el SO para “adaptarse” a las características del mismo. Lo mismo entre impresoras.
El proceso (simplificadamente) es crear un objeto CDC, dibujar y luego destruirlo. Ahora lo hacemos bajo demanda.
Las implementaciones (nuevo código)

  • Implementar la api LDEVOBJ.
Esta APIs ( o funcion ) es la responsable de cargar DLLs (drivers de visualización, drivers de fuentes, layout de teclados…
  • Implementar PDEVOBJ
Un PDEVOBJ representa un dispositivo físico y es el componente principal para manejar multiples dispositivos de representación.
  • Implementación de cambio de resolución de manera dinámica
Ahora podemos cambiar de resolución y de colores en “caliente”. Mas info aqui.
  • Implementación de funciones de mapeo ENG
  • Mejora el código BRUSH y XLATE eliminado varios viejos Hacks.
  • Mejora del código de representación de iconos.

7 comentarios:

  1. Eso significa que para la proxima versión no tendremos que esperar casi un año?

    ResponderEliminar
  2. excelente, probare alguna de las nuevas versiones entonces....

    ResponderEliminar
  3. Pues la he probado y en la segunda fase de la instalación tras la descarga del instalador gecko de wine peto en afd.sys.
    Pantallazo AZUL.

    ResponderEliminar
  4. A mi me paso lo mismo que anónimo, pero en las revisiones anteriores, estas revisiones ya no descargan a Gecko (O sea, aparece la pantalla de descargando, pero no avanza.). Tuve pantallazos azules cuando instalé e inicie Mozilla Firefox, testeé el sistema en Virtual Box. Un saludo.

    ResponderEliminar
  5. Eso es un bug, reportalo!

    ResponderEliminar
  6. Acabo de hacerlo aqui , hay gente que esta en el proyecto que si el blog , ya lo puede comentar. Tambien para algo comento el pantallazo azul que ademas sucede en AFD.sys

    ResponderEliminar