[ros-dev] Change resolution in 1st stage installer (Patch to review)

Maarten Bosma maarten.paul at bosma.de
Fri Dec 23 12:29:03 CET 2005


In revision 20194 Brandon Turner changed to default resolution to 
800x600x16. Many people were not happy with it, especially GreateLord 
how has got a monitor that is capable of that resolution. On the other 
hand ReactOS looks way better in 800x600x16. Especially if we want to 
include photo wallpapers, it is a bad idea imo if the they won't work 
with the standard resolution.

It was GreatLord's idea to make it a option at 1st stage installer, that 
way the default can stay 800x600 but people with old monitors got a 
chance to choose 640x680. So here is the patch.


Maarten Bosma
-------------- next part --------------
Index: subsys/system/usetup/settings.c
===================================================================
--- subsys/system/usetup/settings.c	(revision 20296)
+++ subsys/system/usetup/settings.c	(working copy)
@@ -521,6 +521,66 @@
       return FALSE;
     }
 
+  /* Set the resolution */
+  // ToDo:
+  //  * get Driver Name into Path
+  PWCHAR Buffer;
+  if (!InfGetDataField(Context, 4, &Buffer))
+    {
+      DPRINT("InfGetDataField() failed\n");
+      return FALSE;
+    }
+  ULONG Width = wcstoul(Buffer, NULL, 0);
+  Status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE,
+				 L"\\Registry\\Machine\\System\\CurrentControlSet\\Hardware Profiles\\Current\\System\\CurrentControlSet\\Services\\VBE\\Device0", // FIXME: Do not hardcode driver name
+				 L"DefaultSettings.XResolution",
+				 REG_DWORD,
+				 &Width,
+				 sizeof(ULONG));
+  if (!NT_SUCCESS(Status))
+    {
+      DPRINT("RtlWriteRegistryValue() failed (Status %lx)\n", Status);
+      return FALSE;
+    }
+
+  
+  if (!InfGetDataField(Context, 5, &Buffer))
+    {
+      DPRINT("InfGetDataField() failed\n");
+      return FALSE;
+    }
+  ULONG Hight = wcstoul(Buffer, NULL, 0);
+  Status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE,
+				 L"\\Registry\\Machine\\System\\CurrentControlSet\\Hardware Profiles\\Current\\System\\CurrentControlSet\\Services\\VBE\\Device0", // FIXME: Do not hardcode driver name
+				 L"DefaultSettings.YResolution",
+				 REG_DWORD,
+				 &Hight,
+				 sizeof(ULONG));
+  if (!NT_SUCCESS(Status))
+    {
+      DPRINT("RtlWriteRegistryValue() failed (Status %lx)\n", Status);
+      return FALSE;
+    }
+
+  if (!InfGetDataField(Context, 6, &Buffer))
+    {
+      DPRINT("InfGetDataField() failed\n");
+      return FALSE;
+    }
+  ULONG Bpp = wcstoul(Buffer, NULL, 0);
+  Status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE,
+				 L"\\Registry\\Machine\\System\\CurrentControlSet\\Hardware Profiles\\Current\\System\\CurrentControlSet\\Services\\VBE\\Device0", // FIXME: Do not hardcode driver name
+				 L"DefaultSettings.BitsPerPel",
+				 REG_DWORD,
+				 &Bpp,
+				 sizeof(ULONG));
+  if (!NT_SUCCESS(Status))
+    {
+      DPRINT("RtlWriteRegistryValue() failed (Status %lx)\n", Status);
+      return FALSE;
+    }
+
+  /* Enable the right driver */
   if (!InfGetDataField(Context, 3, &ServiceName))
     {
       DPRINT("InfGetDataField() failed\n");
Index: bootdata/txtsetup.sif
===================================================================
--- bootdata/txtsetup.sif	(revision 20296)
+++ bootdata/txtsetup.sif	(working copy)
@@ -66,9 +66,10 @@
 halmp.dll    = 2,hal.dll
 
 [Display]
-;<id> = <user friendly name>,<spare>,<service key name>
-vga = "VGA Display",,Vga
-vbe = "VESA Display",,VBE
+;<id> = <user friendly name>,<spare>,<service key name>,<hight>,<width>,<bpp>
+vga = "VGA Display (640x680x8)",,Vga,640,480,8
+vbe_lowres = "VESA Display (640x680x8)",,VBE,640,480,8
+vbe = "VESA Display (800x600x16)",,VBE,800,600,16
 
 [Map.Display]
 ;<id> = <pnp id string>


More information about the Ros-dev mailing list