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

Bug#622401: xserver-xorg-video-trident: Error message and exit with iceape and iceweasel. One solution.



On Sun, May 08, 2011 at 10:26:00AM +0200, Julien Cristau wrote:
> On Sun, May  8, 2011 at 01:25:01 +0000, Bjarni Ingi Gislason wrote:
> 
> >   The "X" server issues "PreInit" that maps and unmaps.  Then it
> > issues "ScreenInit" which maps.
> > 
> >   "iceweasel" causes a second map though "ScreenInit", which
> > leads to error.
> > 
> That should never happen.  ScreenInit is called at the start of a
> session, and CloseScreen should be called before the next ScreenInit.
> That's not a client bug.
> 

  You are probably right.  I have made some more tests in the
trident driver code.  Unmapping is only done in "CloseScreen",
if "vtSema" is true.  If I switch terminals after issuing a
single "X &" command to issue "iceweasel", then "vtSema" is false
in the next "CloseScreen".  "iceweasel" switches automatically to
the X display, but "xpdf" does not do it.

  If I transfer the "TRIDENTUnmapMem(pScrn)" subroutine outside the
"if (pScrn->vtSema)" block, then the missing unmapping occurs.

  A comment in the code before "CloseScreen" is:

"It should really also unmap the video memory too."

  The conditions to trigger the error (using "libpciaccess") are

1) change from the X display (pure server, e.g. "X -retro &") to
a text terminal

2) issue a X client (in the background) that automatically switches
to the X display.

  Other video drivers should be tested in this way.

-- 
Bjarni I. Gislason



Reply to: