On Son, 2002-09-29 at 19:24, Chad Page wrote: 
> 
> On 29 Sep 2002, Michel [ISO-8859-1] Dänzer wrote:
> 
> > On Son, 2002-09-29 at 04:47, Chad Page wrote: 
> > > 
> > >   I did my own build from CVS and copied libxaa.a from it into the
> > > modules directory - 2D and 3D work with one head but I still get signal 11
> > > with two heads, with and without xinerama.  I can disable acceleration and
> > > it will work, so there seems to be another xaa problem with shared
> > > entities.
> > 
> > Can you try to track down where the segfault occurs?
> 
>       I tracked it down to radeon_video.c in RadeonResetVideo - the
> info->accel->sync(pScrn) call causes the sig 11, which would imply that
> the structure hadn't been fully initialized when called.  With that line
> commented out it works ok, but there's probably a different root cause.

What about this patch?


-- 
Earthling Michel Dänzer (MrCooper)/ Debian GNU/Linux (powerpc) developer
XFree86 and DRI project member   /  CS student, Free Software enthusiast
Index: radeon_video.c
===================================================================
RCS file: /cvsroot/dri/xc/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_video.c,v
retrieving revision 1.11
diff -p -u -r1.11 radeon_video.c
--- radeon_video.c	21 Sep 2002 17:08:06 -0000	1.11
+++ radeon_video.c	29 Sep 2002 23:51:02 -0000
@@ -383,8 +383,9 @@ RADEONResetVideo(ScrnInfoPtr pScrn)
     unsigned char *RADEONMMIO = info->MMIO;
     RADEONPortPrivPtr pPriv = info->adaptor->pPortPrivates[0].ptr;
 
+    if (info->accel && info->accel->Sync)
+	info->accel->Sync(pScrn);
 
-    info->accel->Sync(pScrn);
     OUTREG(RADEON_OV0_SCALE_CNTL, 0x80000000);
     OUTREG(RADEON_OV0_AUTO_FLIP_CNTL, 0);   /* maybe */
     OUTREG(RADEON_OV0_EXCLUSIVE_HORZ, 0);
@@ -699,7 +700,8 @@ RADEONSetPortAttribute(ScrnInfoPtr  pScr
     RADEONPortPrivPtr	pPriv = (RADEONPortPrivPtr)data;
     Bool		setTransform = FALSE;
 
-    info->accel->Sync(pScrn);
+    if (info->accel && info->accel->Sync)
+	info->accel->Sync(pScrn);
 
 #define RTFSaturation(a)   (1.0 + ((a)*1.0)/1000.0)
 #define RTFBrightness(a)   (((a)*1.0)/2000.0)
@@ -799,7 +801,8 @@ RADEONGetPortAttribute(ScrnInfoPtr  pScr
     RADEONInfoPtr	info = RADEONPTR(pScrn);
     RADEONPortPrivPtr	pPriv = (RADEONPortPrivPtr)data;
 
-    info->accel->Sync(pScrn);
+    if (info->accel && info->accel->Sync)
+	info->accel->Sync(pScrn);
 
     if(attribute == xvAutopaintColorkey)
 	*value = pPriv->autopaint_colorkey;
@@ -1016,7 +1019,8 @@ RADEONDisplayVideo(
 
     RADEONWaitForFifo(pScrn, 2);
     OUTREG(RADEON_OV0_REG_LOAD_CNTL, 1);
-    info->accel->Sync(pScrn);
+    if (info->accel && info->accel->Sync)
+	info->accel->Sync(pScrn);
     while(!(INREG(RADEON_OV0_REG_LOAD_CNTL) & (1 << 3)));
 
     RADEONWaitForFifo(pScrn, 14);

Reply via email to