… | |
… | |
581 | if (XftColorAllocValue (screen->xdisp, screen->visual, screen->cmap, &d, &c)) |
581 | if (XftColorAllocValue (screen->xdisp, screen->visual, screen->cmap, &d, &c)) |
582 | { |
582 | { |
583 | // FUCKING Xft gets it wrong, of course, fix it for the common case |
583 | // FUCKING Xft gets it wrong, of course, fix it for the common case |
584 | // transparency users should eat shit and die, and then |
584 | // transparency users should eat shit and die, and then |
585 | // XRenderQueryPictIndexValues themselves plenty. |
585 | // XRenderQueryPictIndexValues themselves plenty. |
586 | if (screen->depth == 32 |
|
|
587 | && screen->visual->c_class == TrueColor |
586 | if (screen->depth == 32 && screen->visual->c_class == TrueColor) |
588 | && screen->visual->red_mask == 0x00ff0000 |
587 | if ((screen->visual->red_mask | screen->visual->green_mask | screen->visual->blue_mask) == 0x00ffffffUL) |
589 | && screen->visual->green_mask == 0x0000ff00 |
|
|
590 | && screen->visual->blue_mask == 0x000000ff) |
|
|
591 | c.pixel = c.pixel & 0x00ffffffUL | ((rgba.a >> 8) << 24); |
588 | c.pixel = c.pixel & 0x00ffffffUL | ((rgba.a >> 8) << 24); |
|
|
589 | else if ((screen->visual->red_mask | screen->visual->green_mask | screen->visual->blue_mask) == 0xffffff00UL) |
|
|
590 | c.pixel = c.pixel & 0xffffff00UL | (rgba.a >> 8); |
592 | |
591 | |
593 | return true; |
592 | return true; |
594 | } |
593 | } |
595 | |
594 | |
596 | return false; |
595 | return false; |