diff options
Diffstat (limited to 'xorg-server/hw/xfree86/utils/xorgcfg/card-cfg.c')
-rw-r--r-- | xorg-server/hw/xfree86/utils/xorgcfg/card-cfg.c | 433 |
1 files changed, 0 insertions, 433 deletions
diff --git a/xorg-server/hw/xfree86/utils/xorgcfg/card-cfg.c b/xorg-server/hw/xfree86/utils/xorgcfg/card-cfg.c deleted file mode 100644 index 1f3b7555e..000000000 --- a/xorg-server/hw/xfree86/utils/xorgcfg/card-cfg.c +++ /dev/null @@ -1,433 +0,0 @@ -/* - * Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * CONECTIVA LINUX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF - * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Except as contained in this notice, the name of Conectiva Linux shall - * not be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization from - * Conectiva Linux. - * - * Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br> - * - */ - -#include "xf86config.h" -#include "mouse-cfg.h" -#include "cards.h" -#include "card-cfg.h" -#include <X11/Xaw/AsciiText.h> -#include <X11/Xaw/Form.h> -#include <X11/Xaw/Label.h> -#include <X11/Xaw/List.h> -#include <X11/Xaw/MenuButton.h> -#include <X11/Xaw/SmeBSB.h> -#include <X11/Xaw/SimpleMenu.h> -#include <X11/Xaw/Viewport.h> -#ifdef USE_MODULES -#include "loader.h" -#endif - -/* - * Prototypes - */ -static Bool CardConfigCheck(void); -static void CardModelCallback(Widget, XtPointer, XtPointer); -#ifdef USE_MODULES -static void DriverCallback(Widget, XtPointer, XtPointer); -#endif - -/* - * Initialization - */ -static CardsEntry *card_entry; -static XF86ConfDevicePtr current_device; -static Widget filter, list, driver, busid; -static char **cards = NULL; -static int ncards; -#ifdef USE_MODULES -static char *driver_str; -#endif - -/* - * Implementation - */ -/*ARGSUSED*/ -XtPointer -CardConfig(XtPointer config) -{ - XF86ConfDevicePtr card = (XF86ConfDevicePtr)config; -/* XF86OptionPtr option;*/ - char card_name[32]; - Arg args[1]; - char *bus, *drv_nam; - - xf86info.cur_list = CARD; - XtSetSensitive(back, xf86info.lists[CARD].cur_function > 0); - XtSetSensitive(next, xf86info.lists[CARD].cur_function < - xf86info.lists[CARD].num_functions - 1); - (xf86info.lists[CARD].functions[xf86info.lists[CARD].cur_function]) - (&xf86info); - - card_entry = NULL; - current_device = card; - XawListUnhighlight(list); - XtSetArg(args[0], XtNstring, ""); - XtSetValues(filter, args, 1); - - if (card != NULL) { - if (card->dev_card != NULL) { - int i; - - for (i = 0; i < ncards; i++) { - if (strcasecmp(cards[i], card->dev_card) == 0) { - card_entry = LookupCard(cards[i]); - XawListHighlight(list, i); - XtSetArg(args[0], XtNstring, cards[i]); - XtSetValues(filter, args, 1); - break; - } - } - } - XtSetArg(args[0], XtNstring, card->dev_identifier); - XtSetValues(ident_widget, args, 1); - XtSetArg(args[0], XtNstring, card->dev_busid); - XtSetValues(busid, args, 1); -#ifdef USE_MODULES - if (!nomodules) - XtSetArg(args[0], XtNlabel, driver_str = XtNewString(card->dev_driver)); - else -#endif - XtSetArg(args[0], XtNstring, card->dev_driver); - XtSetValues(driver, args, 1); - } - else { - XF86ConfDevicePtr device = XF86Config->conf_device_lst; - int ndevices = 0; - - while (device != NULL) { - ++ndevices; - device = (XF86ConfDevicePtr)(device->list.next); - } - do { - XmuSnprintf(card_name, sizeof(card_name), "Card%d", ndevices); - ++ndevices; - } while (xf86findDevice(card_name, - XF86Config->conf_device_lst)); - - XtSetArg(args[0], XtNstring, card_name); - XtSetValues(ident_widget, args, 1); - XtSetArg(args[0], XtNstring, ""); - XtSetValues(busid, args, 1); -#ifdef USE_MODULES - if (!nomodules) - XtSetArg(args[0], XtNlabel, driver_str = XtNewString("vga")); - else -#endif - XtSetArg(args[0], XtNstring, "vga"); - XtSetValues(driver, args, 1); - } - - if (ConfigLoop(CardConfigCheck) == True) { - if (card_entry != NULL && card_entry->driver == NULL) { - fprintf(stderr, "No driver field in Cards database.\n" - "Please make sure you have the correct files installed.\n"); - exit(1); - } - if (card == NULL) { - card = (XF86ConfDevicePtr)XtCalloc(1, sizeof(XF86ConfDeviceRec)); - card->dev_identifier = XtNewString(ident_string); - if (card_entry) { - card->dev_driver = XtNewString(card_entry->driver); - card->dev_card = XtNewString(card_entry->name); - if (card_entry->chipset) - card->dev_chipset = XtNewString(card_entry->chipset); - if (card_entry->ramdac) - card->dev_ramdac = XtNewString(card_entry->ramdac); - if (card_entry->clockchip) - card->dev_clockchip = XtNewString(card_entry->clockchip); - } - /* else will fallback to "vga" */ - } - else if (card_entry != NULL) { - XtFree(card->dev_driver); - card->dev_driver = XtNewString(card_entry->driver); - if (card_entry->chipset) { - XtFree(card->dev_chipset); - card->dev_chipset = XtNewString(card_entry->chipset); - } - if (card_entry->ramdac) { - XtFree(card->dev_ramdac); - card->dev_ramdac = XtNewString(card_entry->ramdac); - } - if (card_entry->clockchip) { - XtFree(card->dev_clockchip); - card->dev_clockchip = XtNewString(card_entry->clockchip); - } - } - if (strcasecmp(card->dev_identifier, ident_string)) - xf86renameDevice(XF86Config, card, ident_string); - XtSetArg(args[0], XtNstring, &bus); - XtGetValues(busid, args, 1); - XtFree(card->dev_busid); - card->dev_busid = XtNewString(bus); - -#ifdef USE_MODULES - if (!nomodules) - drv_nam = driver_str; - else -#endif - { - XtSetArg(args[0], XtNstring, &drv_nam); - XtGetValues(driver, args, 1); - } - - XtFree(card->dev_driver); - card->dev_driver = XtNewString(drv_nam); - -#ifdef USE_MODULES - if (!nomodules) - XtFree(driver_str); -#endif - - return ((XtPointer)card); - } -#ifdef USE_MODULES - if (!nomodules) - XtFree(driver_str); -#endif - - return (NULL); -} - -static Bool -CardConfigCheck(void) -{ - XF86ConfDevicePtr device = XF86Config->conf_device_lst; - char *drv_nam; - -#ifdef USE_MODULES - if (!nomodules) - drv_nam = driver_str; - else -#endif - { - Arg args[1]; - - XtSetArg(args[0], XtNstring, &drv_nam); - XtGetValues(driver, args, 1); - } - - if (ident_string == NULL || strlen(ident_string) == 0 || -#if 0 - /* not all available cards are in the Cards database */ - (current_device == NULL && card_entry == NULL) || -#endif - drv_nam == NULL || *drv_nam == '\0') - return (False); - - while (device != NULL) { - if (device != current_device && - strcasecmp(ident_string, device->dev_identifier) == 0) - return (False); - device = (XF86ConfDevicePtr)(device->list.next); - } - - return (True); -} - -static void -CardModelCallback(Widget w, XtPointer user_data, XtPointer call_data) -{ - Arg args[1]; - XawListReturnStruct *info = (XawListReturnStruct *)call_data; - char tip[4096]; - int len; - - XtSetArg(args[0], XtNstring, info->string); - XtSetValues(filter, args, 1); - card_entry = LookupCard(info->string); - - if (card_entry == NULL) - return; - - len = XmuSnprintf(tip, sizeof(tip), "Name: %s\n", card_entry->name); - if (card_entry->flags & F_UNSUPPORTED) - len += XmuSnprintf(tip + len, sizeof(tip) - len, - "**THIS CARD IS UNSUPPORTED**\n"); - if (card_entry->chipset != NULL) - len += XmuSnprintf(tip + len, sizeof(tip) - len, - "Chipset: %s\n", card_entry->chipset); - if (card_entry->driver != NULL) { -#ifdef USE_MODULES - if (!nomodules) { - XtFree(driver_str); - driver_str = XtNewString(card_entry->driver); - XtVaSetValues(driver, XtNlabel, driver_str, NULL); - } -#endif - len += XmuSnprintf(tip + len, sizeof(tip) - len, - "Driver: %s\n", card_entry->driver); - } - if (card_entry->ramdac != NULL) - len += XmuSnprintf(tip + len, sizeof(tip), - "Ramdac: %s\n", card_entry->ramdac); - if (card_entry->clockchip != NULL) - len += XmuSnprintf(tip + len, sizeof(tip) - len, - "Clockchip: %s\n", card_entry->clockchip); - if (card_entry->dacspeed != NULL) - len += XmuSnprintf(tip + len, sizeof(tip) - len, - "Dacspeed: %s\n", card_entry->dacspeed); - if (card_entry->lines != NULL) - len += XmuSnprintf(tip + len, sizeof(tip) - len, - "\n%s\n", card_entry->lines); - -#ifndef USE_MODULES - XtSetArg(args[0], XtNstring, - card_entry->driver ? card_entry->driver : "vga"); - XtSetValues(driver, args, 1); -#endif - - XtSetArg(args[0], XtNtip, tip); - XtSetValues(filter, args, 1); -} - -/*ARGSUSED*/ -void -CardFilterAction(Widget w, XEvent *ev, String *params, Cardinal *num_params) -{ - char **cards, *pattern, **old_cards; - int ncards, old_ncards; - Arg args[2]; - - XtSetArg(args[0], XtNstring, &pattern); - XtGetValues(w, args, 1); - - XtSetArg(args[0], XtNlist, &old_cards); - XtSetArg(args[1], XtNnumberStrings, &old_ncards); - XtGetValues(list, args, 2); - - cards = FilterCardNames(pattern, &ncards); - - if (ncards == 0) { - cards = (char**)XtMalloc(sizeof(char*)); - cards[0] = XtNewString(""); - ncards = 1; - } - - XtSetArg(args[0], XtNlist, cards); - XtSetArg(args[1], XtNnumberStrings, ncards); - XtSetValues(list, args, 2); - - if (old_ncards > 1 || (XtName(list) != old_cards[0])) { - while (--old_ncards > -1) - XtFree(old_cards[old_ncards]); - XtFree((char*)old_cards); - } - - /* force relayout */ - XtUnmanageChild(list); - XtManageChild(list); -} - -#ifdef USE_MODULES -/*ARGSUSED*/ -static void -DriverCallback(Widget w, XtPointer user_data, XtPointer call_data) -{ - Arg args[1]; - - XtFree(driver_str); - driver_str = XtNewString(XtName(w)); - XtSetArg(args[0], XtNlabel, driver_str); - XtSetValues(driver, args, 1); -} -#endif - -void -CardModel(XF86SetupInfo *info) -{ - static int first = 1; - static Widget model; - - if (first) { - Widget viewport; - - first = 0; - - cards = GetCardNames(&ncards); - - model = XtCreateWidget("cardModel", formWidgetClass, - configp, NULL, 0); - (void) XtCreateManagedWidget("label", labelWidgetClass, - model, NULL, 0); - filter = XtVaCreateManagedWidget("filter", asciiTextWidgetClass, - model, - XtNeditType, XawtextEdit, - NULL); - viewport = XtCreateManagedWidget("viewport", viewportWidgetClass, - model, NULL, 0); - list = XtVaCreateManagedWidget("list", listWidgetClass, - viewport, - XtNlist, cards, - XtNnumberStrings, ncards, - NULL); - XtAddCallback(list, XtNcallback, CardModelCallback, - (XtPointer)info); - XtCreateManagedWidget("driverL", labelWidgetClass, model, NULL, 0); -#ifdef USE_MODULES - if (!nomodules) { - driver = XtVaCreateManagedWidget("driver", menuButtonWidgetClass, - model, - XtNmenuName, "driverM", - NULL); - { - Widget menu, sme; - xf86cfgModuleOptions *opts = module_options; - - menu = XtCreatePopupShell("driverM", simpleMenuWidgetClass, - driver, NULL, 0); - while (opts) { - if (opts->type == VideoModule) { - sme = XtCreateManagedWidget(opts->name, smeBSBObjectClass, - menu, NULL, 0); - XtAddCallback(sme, XtNcallback, DriverCallback, NULL); - } - opts = opts->next; - } - } - } - else -#endif - driver = XtVaCreateManagedWidget("driver", asciiTextWidgetClass, - model, - XtNeditType, XawtextEdit, - NULL); - - XtCreateManagedWidget("busidL", labelWidgetClass, model, NULL, 0); - busid = XtVaCreateManagedWidget("busid", asciiTextWidgetClass, - model, - XtNeditType, XawtextEdit, - NULL); - - XtRealizeWidget(model); - } - XtChangeManagedSet(¤t, 1, NULL, NULL, &model, 1); - current = model; -} |