GdkColormap* gdk_colormap_new (GdkVisual *visual, gboolean private_cmap) { GdkColormap *colormap; gint i; g_return_val_if_fail (visual != NULL, NULL); colormap = g_object_new (gdk_colormap_get_type (), NULL); colormap->visual = visual; colormap->size = visual->colormap_size; switch (visual->type) { case GDK_VISUAL_PSEUDO_COLOR: { GdkColormapPrivateDirectFB *private; DFBPaletteDescription dsc; colormap->colors = g_new0 (GdkColor, colormap->size); private = g_new0 (GdkColormapPrivateDirectFB, 1); private->info = g_new0 (GdkColorInfo, colormap->size); if (visual == gdk_visual_get_system()) { /* save the first (transparent) palette entry */ private->info[0].ref_count++; }
GdkColormap* gdk_colormap_new (GdkVisual *visual, gboolean private_cmap) { GdkColormap *colormap; gint i; g_return_val_if_fail (visual != NULL, NULL); colormap = g_object_new (gdk_colormap_get_type (), NULL); colormap->visual = visual; colormap->size = visual->colormap_size; switch (visual->type) { case GDK_VISUAL_PSEUDO_COLOR: { IDirectFB *dfb = _gdk_display->directfb; IDirectFBPalette *palette; GdkColormapPrivateDirectFB *private; DFBPaletteDescription dsc; dsc.flags = DPDESC_SIZE; dsc.size = colormap->size; if (!dfb->CreatePalette (dfb, &dsc, &palette)) return NULL; colormap->colors = g_new0 (GdkColor, colormap->size); private = g_new0 (GdkColormapPrivateDirectFB, 1); private->info = g_new0 (GdkColorInfo, colormap->size); if (visual == gdk_visual_get_system()) { /* save the first (transparent) palette entry */ private->info[0].ref_count++; }