*** empty log message ***
authorroot <root>
Mon, 30 Jan 2006 17:49:48 +0000 (17:49 +0000)
committerroot <root>
Mon, 30 Jan 2006 17:49:48 +0000 (17:49 +0000)
src/rxvttoolkit.C

index 91828f49c47353efe48c6184e87768bb5a6373aa..19aa2b5a71c806304f5b05adb2a2ee42c8d73914 100644 (file)
@@ -605,7 +605,7 @@ rxvt_color::set (rxvt_screen *screen, rxvt_rgba rgba)
   // FUCKING Xft gets it wrong, of course, so work around it
   // transparency users should eat shit and die, and then
   // XRenderQueryPictIndexValues themselves plenty.
-  if (screen->visual->c_class == TrueColor
+  if ((screen->visual->c_class == TrueColor || screen->visual->c_class == DirectColor)
       && (format = XRenderFindVisualFormat (screen->xdisp, screen->visual)))
     {
       // the fun lies in doing everything manually...
@@ -635,14 +635,14 @@ rxvt_color::set (rxvt_screen *screen, rxvt_rgba rgba)
 
   return false;
 #else
-  if (screen->visual->c_class == TrueColor)
+  if (screen->visual->c_class == TrueColor || screen->visual->c_class == DirectColor)
     {
-      p = ((rgba.r * ((1 << screen->visual->bits_per_rgb) - 1)
-                  / rxvt_rgba::MAX_CC) << ctz (screen->visual->red_mask  ))
-        | ((rgba.g * ((1 << screen->visual->bits_per_rgb) - 1)
-                  / rxvt_rgba::MAX_CC) << ctz (screen->visual->green_mask))
-        | ((rgba.b * ((1 << screen->visual->bits_per_rgb) - 1)
-                  / rxvt_rgba::MAX_CC) << ctz (screen->visual->blue_mask ));
+      p = (rgba.r * (screen->visual->red_mask   >> ctz (screen->visual->red_mask  ))
+                  / rxvt_rgba::MAX_CC) << ctz (screen->visual->red_mask  )
+        | (rgba.g * (screen->visual->green_mask >> ctz (screen->visual->green_mask))
+                  / rxvt_rgba::MAX_CC) << ctz (screen->visual->green_mask)
+        | (rgba.b * (screen->visual->blue_mask  >> ctz (screen->visual->blue_mask ))
+                  / rxvt_rgba::MAX_CC) << ctz (screen->visual->blue_mask );
 
       return true;
     }