From 6b9d4ab65d659aca0654efd373e26d3605d37bd4 Mon Sep 17 00:00:00 2001
From: Jukka Heinonen <jhei@iki.fi>
Date: Fri, 7 Sep 2001 19:47:10 +0000
Subject: [PATCH] Changing DIB color table now updates the DIB visible state.

---
 graphics/x11drv/dib.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/graphics/x11drv/dib.c b/graphics/x11drv/dib.c
index 789ba03425e..2ebc269d726 100644
--- a/graphics/x11drv/dib.c
+++ b/graphics/x11drv/dib.c
@@ -4023,8 +4023,16 @@ UINT X11DRV_DIB_SetDIBColorTable(BITMAPOBJ *bmp, DC *dc, UINT start, UINT count,
   X11DRV_DIBSECTION *dib = (X11DRV_DIBSECTION *) bmp->dib;
 
   if (dib && dib->colorMap) {
-    X11DRV_DIB_GenColorMap( dc, dib->colorMap, DIB_RGB_COLORS, dib->dibSection.dsBm.bmBitsPixel,
+    /*
+     * Changing color table might change the mapping between
+     * DIB colors and X11 colors and thus alter the visible state
+     * of the bitmap object.
+     */
+    X11DRV_DIB_Lock(bmp, DIB_Status_AppMod, FALSE);
+    X11DRV_DIB_GenColorMap( dc, dib->colorMap, DIB_RGB_COLORS, 
+                           dib->dibSection.dsBm.bmBitsPixel,
                             TRUE, colors, start, count + start );
+    X11DRV_DIB_Unlock(bmp, TRUE);
     return count;
   }
   return 0;
-- 
GitLab