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.