Open gsutre opened 12 years ago
The problem also occurs when the framebuffer console is displayed, at boot, on an external VGA monitor. When the X server exits, the external monitor displays a still image with a few colored dots (and the internal panel is disabled).
(The command mentioned in the issue #11 was run to make sure that console is restored on the external monitor.)
For the record, the following patch does not help. The patch makes sure that the video mode is restored as is. Also, the patch clears the flags field (which is not zero according to some tests) before the INT 10h call.
--- intel_driver.c 2012-10-23 14:04:22.000000000 +0200
+++ intel_driver.c 2012-11-03 12:21:53.000000000 +0100
@@ -1614,7 +1614,7 @@
intel->int10->cx =
intel->int10->dx = 0;
xf86ExecX86int10(intel->int10);
- intel->int10Mode = intel->int10->bx & 0x3fff;
+ intel->int10Mode = intel->int10->bx /* & 0x3fff */;
xf86DrvMsg(scrn->scrnIndex, X_PROBED,
"Console VGA mode is 0x%x\n", intel->int10Mode);
} else {
@@ -2683,8 +2683,9 @@
/* Use int10 to restore the console mode */
int10->num = 0x10;
int10->ax = 0x4f02;
- int10->bx = intel->int10Mode | 0x8000;
+ int10->bx = intel->int10Mode /* | 0x8000 */;
int10->cx = int10->dx = 0;
+ int10->flags = 0;
xf86ExecX86int10(int10);
}
}
Note: with this patch, for a framebuffer console with the default VESA video mode (640x480x8), the X log shows:
Console VGA mode is 0x4101
On a Core i5 laptop, the framebuffer console (genfb(4)) is not restored when the X server exits. Instead, a still image with vertical dotted lines is displayed. The X server can be launched again from the console (by typing startx blindly), and the display gets back as expected (under X).
On an older i386 laptop (915GM), everything works fine.
dmesg
X log