int graphics_setup (void) { char *display_name = 0; const char *keycodes; display = XOpenDisplay (display_name); if (display == 0) { write_log ("Can't connect to X server %s\n", XDisplayName (display_name)); return 0; } shmavail = shm_available (); dgaavail = dga_available (); vidmodeavail = vid_mode_available (); { int local_byte_order; int x = 0x04030201; char *y=(char*)&x; local_byte_order = y[0] == 0x04 ? MSBFirst : LSBFirst; if (ImageByteOrder(display) != local_byte_order) inverse_byte_order = 1; } screen = XDefaultScreen (display); rootwin = XRootWindow (display, screen); if (!get_best_visual (display, screen, &visualInfo)) return 0; vis = visualInfo.visual; bitdepth = visualInfo.depth; if (!(bit_unit = get_visual_bit_unit (&visualInfo, bitdepth))) return 0; write_log ("X11GFX: Initialized.\n"); rawkeys_available = 0; #ifdef USE_XKB keycodes = get_xkb_keycodes (display); if (keycodes) { /* We only support xfree86 keycodes for now */ if (strncmp (keycodes, "xfree86", 7) == 0) { rawkeys_available = 1; raw_keyboard = uaekey_make_default_kbr (x11pc_keymap); write_log ("X11GFX: Keyboard uses xfree86 keycodes\n"); } } #endif return 1; }
static GdkColormap * get_best_colormap_for_screen (GdkScreen *screen) { GdkColormap *colormap; GdkVisual *visual; g_return_val_if_fail (screen != NULL, NULL); visual = get_best_visual (); colormap = NULL; if (visual != NULL) { colormap = gdk_colormap_new (visual, FALSE); } return colormap; }