Comment 15 for bug 145604

Revision history for this message
TJ (tj) wrote : Re: gnome-terminal resize legend displayed as blocks when Compiz is enabled

Thanks to Basilio's suggestion and Adrian's test with a new user profile I was spurred into investigating this some more.

In System > Preferences > Advanced Desktop Effects Settings

In the Utility section, disabling "Resize Info" disables the effect.

With "Resize Info" enabled I played with the settings and discovered that what is happening is that the size info is beinf drawn as black text on a black background.

As soon as I altered the 'Text Color' setting to a colour that contrasts with black, the characters are visible, although the inverted display looks 'kludgy' and not like it used to be.

I've trawled through the changes just prior to the first time I noticed the issue for compiz-fusion-plugins-main and pango1.0-0, and been investigating cairo & pango since the crux of the issue is in

compiz-fusion-plugins-main/src/resizeinfo.c::updateTextLayer ()

where it does:

    cr = is->textLayer.cr;

    /* Clear the context. */
    cairo_save (cr);
    cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
    cairo_paint (cr);
    cairo_restore (cr);
    cairo_set_operator (cr, CAIRO_OPERATOR_OVER);

    asprintf (&info, "%d x %d", xv, yv);

    font = pango_font_description_new ();
    layout = pango_cairo_create_layout (is->textLayer.cr);

    pango_font_description_set_family (font,"Sans");
    pango_font_description_set_absolute_size (font, 12 * PANGO_SCALE);
    pango_font_description_set_style (font, PANGO_STYLE_NORMAL);
    pango_font_description_set_weight (font, PANGO_WEIGHT_BOLD);

    pango_layout_set_font_description (layout, font);
    pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END);
    pango_layout_set_text (layout, info, -1);

    pango_layout_get_pixel_size (layout, &w, &h);

    cairo_move_to (cr,
     RESIZE_POPUP_WIDTH / 2.0f - w / 2.0f,
     RESIZE_POPUP_HEIGHT / 2.0f - h / 2.0f);

    pango_layout_set_width (layout, RESIZE_POPUP_WIDTH * PANGO_SCALE);
    pango_cairo_update_layout (cr, layout);

    cairo_set_source_rgba (cr,
      *(color) / (float)0xffff,
      *(color + 1) / (float)0xffff,
      *(color + 2) / (float)0xffff,
      *(color + 3) / (float)0xffff);

    pango_cairo_show_layout (cr, layout);

    pango_font_description_free (font);
    g_object_unref (layout);

It could be that font description or something related to the drawing mode used is causing the background of the glyphs to be drawn in pango_cairo_show_layout(). It is possible this may end up being caused by a change in Pango or Cairo that somehow upsets Compiz.