]> git.eshelyaron.com Git - emacs.git/commitdiff
Use color cache for creating bitmap
authorKen Raeburn <raeburn@raeburn.org>
Sat, 7 Nov 2015 08:06:32 +0000 (03:06 -0500)
committerKen Raeburn <raeburn@raeburn.org>
Thu, 12 Nov 2015 08:58:08 +0000 (03:58 -0500)
* src/image.c (x_create_bitmap_from_xpm_data) [ALLOC_XPM_COLORS]: Set
attributes to use the caching color allocator.  Initialize and free
the cache.

src/image.c

index 41687eb885c008f3e7b3e92a187593d0a05d082a..544435eac0b1c2fea4cfe0aa1175a6d1e9efdb31 100644 (file)
@@ -3508,6 +3508,14 @@ x_create_bitmap_from_xpm_data (struct frame *f, const char **bits)
   attrs.valuemask |= XpmVisual;
   attrs.valuemask |= XpmColormap;
 
+#ifdef ALLOC_XPM_COLORS
+  attrs.color_closure = f;
+  attrs.alloc_color = xpm_alloc_color;
+  attrs.free_colors = xpm_free_colors;
+  attrs.valuemask |= XpmAllocColor | XpmFreeColors | XpmColorClosure;
+  xpm_init_color_cache (f, &attrs);
+#endif
+
   rc = XpmCreatePixmapFromData (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
                                (char **) bits, &bitmap, &mask, &attrs);
   if (rc != XpmSuccess)
@@ -3526,6 +3534,9 @@ x_create_bitmap_from_xpm_data (struct frame *f, const char **bits)
   dpyinfo->bitmaps[id - 1].depth = attrs.depth;
   dpyinfo->bitmaps[id - 1].refcount = 1;
 
+#ifdef ALLOC_XPM_COLORS
+  xpm_free_color_cache ();
+#endif
   XpmFreeAttributes (&attrs);
   return id;
 }