Oops, forgot to send to xorg as well
---------- Forwarded message ---------- From: Joseph Adams <[EMAIL PROTECTED]> Date: Thu, Dec 11, 2008 at 12:49 AM Subject: Re: Trying to use Radeon driver on Apple eMac To: Alex Deucher <[EMAIL PROTECTED]> This patch works when my external monitor is unplugged. When it is plugged in, X selects the highest resolution the external monitor supports (1280x1024) and does not turn on the internal monitor (I can turn it on with xrandr --output VGA-1 --size 1024x768). I did have to fix a tiny mistake in RADEONeMacNativeMode, however: new->name = xnfalloc(strlen("1024x768") + 1); new->name = "1024x768"; should be: new->name = xnfalloc(strlen("1024x768") + 1); strcpy(new->name, "1024x768"); This was causing Xorg to crash whenever xrandr was called. I went ahead and made a function that adds all the modes for my monitor based on and replacing RADEONeMacNativeMode, in case this makes things easier for you: static DisplayModePtr RADEONeMacModes(xf86OutputPtr output) { ScrnInfoPtr pScrn = output->scrn; DisplayModePtr last=NULL, new=NULL, first=NULL; int i, *modep; static const char *modenames[5] = { "640x480", "800x600", "1024x768", "1152x864", "1280x960" }; static int modes[9*5] = { 62120, 640,680,752,864, 480,481,484,521, 76840, 800,848,936,1072, 600,601,604,640, 99070, 1024,1088,1200,1376, 768,769,772,809, 112360, 1152,1224,1352,1552, 864,865,868,905, 124540, 1280,1368,1504,1728, 960,961,964,1001 }; modep = modes; for (i=0; i<5; i++) { new = xnfcalloc(1, sizeof (DisplayModeRec)); if (new) { new->name = xnfalloc(strlen(modenames[i]) + 1); strcpy(new->name, modenames[i]); new->Clock = *modep++; new->HDisplay = *modep++; new->HSyncStart = *modep++; new->HSyncEnd = *modep++; new->HTotal = *modep++; new->VDisplay = *modep++; new->VSyncStart = *modep++; new->VSyncEnd = *modep++; new->VTotal = *modep++; new->Flags = 0; new->type = M_T_DRIVER; if (i==2) new->type |= M_T_PREFERRED; new->next = NULL; new->prev = last; if (last) last->next = new; last = new; if (!first) first = new; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Added eMac mode %s\n", modenames[i]); } } return first; } I tested this on all my screen's resolutions and they all work fine. By the way, what should be the "preferred" or "native" mode of my display? I noticed you used 1024x768 in the patch instead of the maximum size of 1280x960, so I mirrored that here. Is this because it is the maximum size that allows for dual-head with the default Virtual? By the way, thanks for responding so quickly and helping get this resolved :) Great maintainer, would work with again! A++++++++ _______________________________________________ xorg mailing list xorg@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/xorg