summaryrefslogtreecommitdiff
path: root/sys/src/9/pc/devvga.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@centraldogma>2011-08-23 05:33:51 +0200
committercinap_lenrek <cinap_lenrek@centraldogma>2011-08-23 05:33:51 +0200
commite54222fb0df35c9738947a6757dde09bf361a576 (patch)
tree57bd0f64687c09724326d3ec45f2c1bc98043b53 /sys/src/9/pc/devvga.c
parent1af6c6df32df945b930de31972f003c068a7f6cc (diff)
implement vesa screenblanking (issue #36)
Diffstat (limited to 'sys/src/9/pc/devvga.c')
-rw-r--r--sys/src/9/pc/devvga.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/src/9/pc/devvga.c b/sys/src/9/pc/devvga.c
index f1ecba8e9..10875f450 100644
--- a/sys/src/9/pc/devvga.c
+++ b/sys/src/9/pc/devvga.c
@@ -277,8 +277,13 @@ vgactl(Cmdbuf *cb)
for(i = 0; vgadev[i]; i++){
if(strcmp(cb->f[1], vgadev[i]->name))
continue;
- if(scr->dev && scr->dev->disable)
- scr->dev->disable(scr);
+ if(scr->dev){
+ if(scr->dev->disable)
+ scr->dev->disable(scr);
+ scr->fill = nil;
+ scr->scroll = nil;
+ scr->blank = nil;
+ }
scr->dev = vgadev[i];
if(scr->dev->enable)
scr->dev->enable(scr);
@@ -352,6 +357,8 @@ vgactl(Cmdbuf *cb)
error("drawinit: no gscreen");
if(scr->dev && scr->dev->drawinit)
scr->dev->drawinit(scr);
+ hwblank = scr->blank != nil;
+ hwaccel = scr->scroll || scr->fill;
vgascreenwin(scr);
resetscreenimage();
cursoron(1);