diff --git a/xserver/hw/xfree86/common/xf86Config.c b/xserver/hw/xfree86/common/xf86Config.c index edebe6be9..7393c5ceb 100644 --- a/xserver/hw/xfree86/common/xf86Config.c +++ b/xserver/hw/xfree86/common/xf86Config.c @@ -499,7 +499,8 @@ static void fixup_video_driver_list(char **drivers) { static const char *fallback[4] = { "vesa", "fbdev", "wsfb", NULL }; - char **end, **drv; + static const char *blacklist[] = { "radeonhd", "radeon", NULL }; + char **end, **drv, **d; char *x; int i; @@ -520,6 +521,16 @@ fixup_video_driver_list(char **drivers) } } } + /* Remove blacklisted drivers */ + for (i = 0; blacklist[i]; i++) { + for (drv = drivers; drv != end; drv++) { + if (strcmp(*drv, blacklist[i]) == 0) { + end--; + for (d = drv; d != end; d++) + *d = *(d+1); + } + } + } } static char **