pc, pc64: set *bootscreen= when framebuffer changes
add bootscreenconf(VGAscr *) function, that is called whenever the framebuffer configuration is changed by devvga. that way, we can pass the current setting of the framebuffer to the new kernel when using /dev/reboot.
This commit is contained in:
parent
27445c5768
commit
1f3c43c017
|
@ -329,6 +329,7 @@ vgactl(Cmdbuf *cb)
|
||||||
|
|
||||||
case CMtextmode:
|
case CMtextmode:
|
||||||
screeninit();
|
screeninit();
|
||||||
|
bootscreenconf(nil);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case CMsize:
|
case CMsize:
|
||||||
|
@ -357,6 +358,7 @@ vgactl(Cmdbuf *cb)
|
||||||
deletescreenimage();
|
deletescreenimage();
|
||||||
if(screensize(x, y, z, chan))
|
if(screensize(x, y, z, chan))
|
||||||
error(Egreg);
|
error(Egreg);
|
||||||
|
bootscreenconf(scr);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case CMactualsize:
|
case CMactualsize:
|
||||||
|
|
|
@ -586,7 +586,7 @@ bootmapfb(VGAscr *scr, ulong pa, ulong sz)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* called early on boot to attach to framebuffer
|
* called early on boot to attach to framebuffer
|
||||||
* setup by bootloader or firmware.
|
* setup by bootloader/firmware or plan9.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
bootscreeninit(void)
|
bootscreeninit(void)
|
||||||
|
@ -665,3 +665,23 @@ bootscreeninit(void)
|
||||||
scr->cur->enable(scr);
|
scr->cur->enable(scr);
|
||||||
cursoron();
|
cursoron();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* called from devvga when the framebuffer is setup
|
||||||
|
* to set *bootscreen= that can be passed on to a
|
||||||
|
* new kernel on reboot.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
bootscreenconf(VGAscr *scr)
|
||||||
|
{
|
||||||
|
char conf[100], chan[30];
|
||||||
|
|
||||||
|
conf[0] = '\0';
|
||||||
|
if(scr != nil && scr->paddr != 0)
|
||||||
|
snprint(conf, sizeof(conf), "%dx%dx%d %s %#p %d\n",
|
||||||
|
scr->gscreen->r.max.x, scr->gscreen->r.max.y,
|
||||||
|
scr->gscreen->depth, chantostr(chan, scr->gscreen->chan),
|
||||||
|
scr->paddr, scr->apsize);
|
||||||
|
|
||||||
|
ksetenv("*bootscreen", conf, 1);
|
||||||
|
}
|
||||||
|
|
|
@ -149,6 +149,9 @@ extern int screenaperture(int, int);
|
||||||
extern Rectangle physgscreenr; /* actual monitor size */
|
extern Rectangle physgscreenr; /* actual monitor size */
|
||||||
extern void blankscreen(int);
|
extern void blankscreen(int);
|
||||||
|
|
||||||
|
extern void bootscreeninit(void);
|
||||||
|
extern void bootscreenconf(VGAscr*);
|
||||||
|
|
||||||
extern VGAcur swcursor;
|
extern VGAcur swcursor;
|
||||||
extern void swcursorinit(void);
|
extern void swcursorinit(void);
|
||||||
extern void swcursorhide(void);
|
extern void swcursorhide(void);
|
||||||
|
|
Loading…
Reference in a new issue