Re: Trying to build Xvesa KDrive (with scalable font support.)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Jun 18, 2005 at 01:42:51PM -0700, x nooby wrote:
>Hi David,
>
>> You can either set DefaultFontPath in your host.def
>> to change the compiled-in
>
>I got the Xvesa server working by specifying the
>correct font path inside the host.def.  The device is
>now able to initialize the VESA VGA screen, and
>display text and graphics properly.  Thanks for this
>help!
>
>The Xvesa server I built with the 4.5.0 sources seems
>to have one bug:  when I switch from X to the console
>using CTRL-ALT-F1, it hangs when I try to switch back
>to X using ALT-F5 (5 is the GUI session). 
>
>The screen displays the background window panes of the
>wxWidgets-based application, but it does not re-draw
>graphic images or text.  After it hangs, the video is
>locked up and the keyboad dies a few keystrokes later.
>
>I'm currently Googling for a solution, and trying some
>things.  For example, I just tried a completely stock
>host.def with no changes other than my fixed font path
>- but it still hung when I tried to come back from
>console mode.
>
>Any suggestions for making the Xvesa program survive
>going to console mode and back?

This can be fixed by setting the keyboard fd to non-blocking before
attempting to flush pending key strokes:


Index: linux/keyboard.c
===================================================================
RCS file: /home/x-cvs/xc/programs/Xserver/hw/tinyx/linux/keyboard.c,v
retrieving revision 1.1
diff -u -r1.1 keyboard.c
--- linux/keyboard.c	2 Jun 2004 22:43:01 -0000	1.1
+++ linux/keyboard.c	19 Jun 2005 00:38:16 -0000
@@ -77,6 +77,12 @@
 #include <termios.h>
 #include <sys/ioctl.h>
 
+#ifdef FNONBLOCK
+#define NOBLOCK FNONBLOCK
+#else
+#define NOBLOCK FNDELAY
+#endif
+
 extern int  LinuxConsoleFd;
 
 static const KeySym linux_to_x[256] = {
@@ -449,6 +455,7 @@
     struct termios nTty;
     unsigned char   buf[256];
     int		    n;
+    int		    flags;
 
     ioctl (fd, KDGKBMODE, &LinuxKbdTrans);
     tcgetattr (fd, &LinuxTermios);
@@ -467,6 +474,9 @@
     /*
      * Flush any pending keystrokes
      */
+    flags = fcntl (fd, F_GETFL);
+    flags |= NOBLOCK;
+    fcntl (fd, F_SETFL, flags);
     while ((n = read (fd, buf, sizeof (buf))) > 0)
 	;
     return fd;


David
-- 
David Dawes                                     X-Oz Technologies
www.XFree86.org/~dawes                          www.x-oz.com
_______________________________________________
XFree86 mailing list
XFree86@xxxxxxxxxxx
http://XFree86.Org/mailman/listinfo/xfree86

[Index of Archives]     [X Forum]     [Xorg]     [XFree86 Newbie]     [IETF Announce]     [Security]     [Font Config]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux Kernel]

  Powered by Linux