On Sat, Sep 02, 2017 at 04:46:21PM +0000, Klemens Nanni wrote:
> Currently `machine video 7' will always list all available modes just
> like `machine video' before setting mode 7. Since the screen is
> reset/cleared when setting the mode, listing them beforehand is
> hardly ever useful and rather looks like flickering.
> 
> This diff avoids the described behaviour and seperates things more
> strictly/clearly. `machine video 7' won't list anymore but keeps
> printing the current/new mode *after* resetting the screen now.
> 
> Otherwise behaviour and functionality stays unchanged. Successfully
> tested on two different amd64 ThinkPads.
> 
> Style nit: Lines are kept <73 columns now.
> 
> Comments? Feedback?
> 
> 
> Index: efiboot.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/amd64/stand/efiboot/efiboot.c,v
> retrieving revision 1.23
> diff -u -p -r1.23 efiboot.c
> --- efiboot.c 7 Aug 2017 19:34:53 -0000       1.23
> +++ efiboot.c 2 Sep 2017 16:35:37 -0000
> @@ -844,22 +844,25 @@ int
>  Xvideo_efi(void)
>  {
>       int      i, mode = -1;
> -     char    *p;
>  
> -     for (i = 0; i < nitems(efi_video) && i < conout->Mode->MaxMode; i++) {
> -             if (efi_video[i].cols > 0)
> -                     printf("Mode %d: %d x %d\n", i,
> -                         efi_video[i].cols, efi_video[i].rows);
> -     }
> -     if (cmd.argc == 2) {
> -             p = cmd.argv[1];
> -             mode = strtol(p, &p, 10);
> -     }
> -     printf("\nCurrent Mode = %d\n", conout->Mode->Mode);
> -     if (0 <= mode && mode < i && efi_video[mode].cols > 0) {
> -             EFI_CALL(conout->SetMode, conout, mode);
> -             efi_video_reset();
> +     if (cmd.argc >= 2) {
> +             mode = strtol(cmd.argv[1], NULL, 10);
> +             if (0 <= mode && mode < nitems(efi_video) &&
> +                 efi_video[mode].cols > 0) {
> +                     EFI_CALL(conout->SetMode, conout, mode);
> +                     efi_video_reset();
> +             }
> +     } else {
> +             for (i = 0; i < nitems(efi_video) &&
> +                 i < conout->Mode->MaxMode; i++) {
> +                     if (efi_video[i].cols > 0)
> +                             printf("Mode %d: %d x %d\n", i,
> +                                 efi_video[i].cols,
> +                                 efi_video[i].rows);
> +             }
> +             printf("\n");
>       }
> +     printf("Current Mode = %d\n", conout->Mode->Mode);
>  
>       return (0);
>  }
> 
Bump.

Reply via email to