diff --git a/reactos/ntoskrnl/inbv/inbv.c b/reactos/ntoskrnl/inbv/inbv.c index ef0faa03917..f498ddba6a6 100644 --- a/reactos/ntoskrnl/inbv/inbv.c +++ b/reactos/ntoskrnl/inbv/inbv.c @@ -407,38 +407,28 @@ VOID NTAPI InbvUpdateProgressBar(IN ULONG Progress) { - ULONG FillCount, Left = 0; + ULONG FillCount; /* Make sure the progress bar is enabled, that we own and are installed */ if ((ShowProgressBar) && (InbvBootDriverInstalled) && (InbvDisplayState == INBV_DISPLAY_STATE_OWNED)) { - /* Calculate the fill count */ - FillCount = InbvProgressState.Bias * Progress + InbvProgressState.Floor; - FillCount *= 18; - FillCount /= 10000; + FillCount = InbvProgressState.Bias * Progress * 121 + InbvProgressState.Floor; + FillCount /= 1000000; - /* Start fill loop */ - while (FillCount) - { - /* Acquire the lock */ - InbvAcquireLock(); + /* Acquire the lock */ + InbvAcquireLock(); - /* Fill the progress bar */ - VidSolidColorFill(Left + ProgressBarLeft, - ProgressBarTop, - Left + ProgressBarLeft + 7, - ProgressBarTop + 7, - 11); + /* Fill the progress bar */ + VidSolidColorFill(ProgressBarLeft, + ProgressBarTop, + ProgressBarLeft + FillCount, + ProgressBarTop + 12, + 11); - /* Release the lock */ - InbvReleaseLock(); - - /* Update the X position */ - Left += 9; - FillCount--; - } + /* Release the lock */ + InbvReleaseLock(); } } @@ -613,7 +603,7 @@ DisplayBootBitmap(IN BOOLEAN SosMode) /* Is the boot driver installed? */ if (!InbvBootDriverInstalled) return; - /* FIXME: TODO, display full-screen bitmap */ + /* Display full-screen bitmap */ Bitmap = InbvGetResourceAddress(5); if (Bitmap) { @@ -626,6 +616,9 @@ DisplayBootBitmap(IN BOOLEAN SosMode) else Top = (480 - BitmapInfoHeader->biHeight) / 2; InbvBitBlt(Bitmap, Left, Top); + + /* Set progress bar coordinates and display it */ + InbvSetProgressBarCoordinates(257, 352); } } diff --git a/reactos/ntoskrnl/inbv/logo/5.bmp b/reactos/ntoskrnl/inbv/logo/5.bmp index f0cce0e2fed..b074e829032 100644 Binary files a/reactos/ntoskrnl/inbv/logo/5.bmp and b/reactos/ntoskrnl/inbv/logo/5.bmp differ