/*! * \brief 配置消息处理函数 * \param pIMEEvent * \return */ GBIMEReturn GBConfig_HandleMessage(PGBIMEEvent pIMEEvent) { GBIMEReturn ret = GBIME_OK; if (pIMEEvent->nType != GBIME_EVENT_TYPE_CONFIG) { return GBIME_IGNORE; // 非配置事件,忽略 } switch (pIMEEvent->nEvent) { case GBIME_EVENT_CONFIG_LOAD: ret = GBConfig_Load(Global_GetConfigInstance()); break; case GBIME_EVENT_CONFIG_MENU: EntryGbSetUpScreen(); break; case GBIME_EVENT_CONFIG_EXIT: FreeConfig(); break; default: PT_Assert(0); // 非法事件 } return ret; }
Bool xf86AutoConfig(void) { char *deviceList[20]; char **p; const char **cp; char buf[1024]; ConfigStatus ret; listPossibleVideoDrivers(deviceList, 20); for (p = deviceList; *p; p++) { snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p); AppendToConfig(buf); snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0); AppendToConfig(buf); } AppendToConfig(BUILTIN_LAYOUT_SECTION_PRE); for (p = deviceList; *p; p++) { snprintf(buf, sizeof(buf), BUILTIN_LAYOUT_SCREEN_LINE, *p, 0); AppendToConfig(buf); } AppendToConfig(BUILTIN_LAYOUT_SECTION_POST); for (p = deviceList; *p; p++) { free(*p); } xf86MsgVerb(X_DEFAULT, 0, "Using default built-in configuration (%d lines)\n", builtinLines); xf86MsgVerb(X_DEFAULT, 3, "--- Start of built-in configuration ---\n"); for (cp = builtinConfig; *cp; cp++) xf86ErrorFVerb(3, "\t%s", *cp); xf86MsgVerb(X_DEFAULT, 3, "--- End of built-in configuration ---\n"); xf86initConfigFiles(); xf86setBuiltinConfig(builtinConfig); ret = xf86HandleConfigFile(TRUE); FreeConfig(); if (ret != CONFIG_OK) xf86Msg(X_ERROR, "Error parsing the built-in default configuration.\n"); return ret == CONFIG_OK; }
Bool xf86AutoConfig(void) { const char **p; char buf[1024]; pciVideoPtr *pciptr, info = NULL; char *driver = NULL; ConfigStatus ret; /* Find the primary device, and get some information about it. */ if (xf86PciVideoInfo) { for (pciptr = xf86PciVideoInfo; (info = *pciptr); pciptr++) { if (xf86IsPrimaryPci(info)) { break; } } if (!info) { ErrorF("Primary device is not PCI\n"); } } else { ErrorF("xf86PciVideoInfo is not set\n"); } if (info) driver = videoPtrToDriverName(info); AppendToConfig(BUILTIN_MODULE_SECTION); AppendToConfig(BUILTIN_MONITOR_SECTION); if (driver) { snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION_PRE, driver, 0, driver); AppendToConfig(buf); ErrorF("New driver is \"%s\"\n", driver); buf[0] = '\t'; AppendToConfig(BUILTIN_DEVICE_SECTION_POST); snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, driver, 0, driver, 0); AppendToConfig(buf); } for (p = deviceList; *p; p++) { snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p); AppendToConfig(buf); snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0); AppendToConfig(buf); } AppendToConfig(BUILTIN_LAYOUT_SECTION_PRE); if (driver) { snprintf(buf, sizeof(buf), BUILTIN_LAYOUT_SCREEN_LINE, driver, 0); AppendToConfig(buf); } for (p = deviceList; *p; p++) { snprintf(buf, sizeof(buf), BUILTIN_LAYOUT_SCREEN_LINE, *p, 0); AppendToConfig(buf); } AppendToConfig(BUILTIN_LAYOUT_SECTION_POST); xf86MsgVerb(X_DEFAULT, 0, "Using default built-in configuration (%d lines)\n", builtinLines); xf86MsgVerb(X_DEFAULT, 3, "--- Start of built-in configuration ---\n"); for (p = builtinConfig; *p; p++) xf86ErrorFVerb(3, "\t%s", *p); xf86MsgVerb(X_DEFAULT, 3, "--- End of built-in configuration ---\n"); xf86setBuiltinConfig(builtinConfig); ret = xf86HandleConfigFile(TRUE); FreeConfig(); if (ret != CONFIG_OK) xf86Msg(X_ERROR, "Error parsing the built-in default configuration.\n"); return (ret == CONFIG_OK); }