Regarding: sunffb driver can fail because it tests the return value of a -void-
procedure during ScreenInit
Email: [EMAIL PROTECTED]
------------------------------------------------------------
XFree86 Version: XFree86 Version 4.2.1
OS: Linux 2.4.20-sparc-r0 #3 SMP Fri Jan 3 15:56:09 UTC 2003 sparc64 sun4u
Area: xc/programs/Xserver/hw/xfree86/drivers/sunffb
Server: XFree86 (The XFree86 4.x server)
Video Card:
Potentially any Sun Creator/Creator3D/Elite3D card driven by the sunffb
driver specified in Q4, because there is a programming error which is
device independent in the driver code.
Description:
sunffb_drv.c in referenced directory (item 4) in FFBScreenInit at lines
673--674 reads:
if (!FFBDbePreInit(pScreen))
return FALSE;
In turn, FFBDbePreInit at 900 in ffb_dbe.c reads:
return DbeRegisterFunction(pScreen, FFBDbeInit);
However, DbeRegisterFunction in xc/programs/Xserver/dbe/dbe.c @ 121--22
reads
void
DbeRegisterFunction(pScreen, funct)
This can cause a ScreenInit failure at X startup because the driver
can fail based on the value returned by a function that can return no value.
Easiest fix is either:
if (!FFBDbePreInit(pScreen))
return FALSE;
becomes just
FFBDbePreInit(pScreen);
or, better, in ffb_dbe.c at 900 write
DbeRegisterFunction(pScreen, FFBDbeInit);
return TRUE; /* Failure here is meaningless. */
Repeat By:
It seems that this failure occurs when the video card is a Creator3D,
series 1 (FFB). It does not seem to occur with Creator3D, series 3
(FFB2+). In any case, the referenced lines in sunffb_drv.c can't be
correct because there is no meaningful value to check at this point.
So, repeate by putting a Creator#d,series 1 into a sparc ultra Linux
system and starting X on it.
_______________________________________________
XFree86 mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xfree86