Re: commit: More printing fixes for xft.

From: Martin Sevior (msevior@physics.unimelb.edu.au)
Date: Wed Nov 13 2002 - 01:55:36 EST

  • Next message: Hubert Figuiere: "Commit: MacOS X font management"

    On Wed, 2002-11-13 at 04:41, Joaquin Cuenca Abela wrote:
    > Sorry for non giving any live signal for a while, I
    > was on a trip.
    >
    > I've just read the whole xft printing problems. I've
    > not dig into the problem, but printing with the xft
    > build was working when I left it, but that was before
    > the unification of units by thomas, so maybe that
    > stopped working there.
    >
    > I don't know where come the problems with embedding
    > fonts. Embedding fonts (TT & PS) was also working
    > when I last touched it.
    >
    > The problem about the status bar not working with
    > double buffering is there because xft calls (as any
    > non gdk primitives) don't get diverted to the double
    > buffer, so all the things that we draw in a double
    > buffered GdkWindow using non gdk calls are covered by
    > the double buffer when gdk copies it on the GdkWindow
    > at the end of the expose event (you can see it that's
    > the problem with the status bar if it flicker a very
    > little bit before it disappears).
    >

    This makes sense and is what Havoc said was happening too.

    > We should instead draw the text to the GdkDrawable
    > that's being used by gdk to do the double buffer (you
    > can get the real GdkDrawable using
    > gdk_window_get_internal_paint_info(...) )
    >

    Hi Joaquin,
               I tried this but it didn't work. I have this cod ein
    gr_UnixGraphics.cpp

    #ifdef USE_XFT
            //
            // Martin's attempt to make double buffering work.with xft
            //
    #if 1
            gint xoff,yoff;
            GdkDrawable * realDraw;
            gdk_window_get_internal_paint_info (m_pWin, &realDraw,&xoff,&yoff);
            m_pGC = gdk_gc_new(realDraw);
            m_pXORGC = gdk_gc_new(realDraw);
            m_pVisual = GDK_VISUAL_XVISUAL( gdk_drawable_get_visual(realDraw));
            m_Drawable = gdk_x11_drawable_get_xid(realDraw);

    #else
            m_pVisual = GDK_VISUAL_XVISUAL(gdk_window_get_visual(win));
            m_Drawable = GDK_WINDOW_XWINDOW(m_pWin);
            m_pGC = gdk_gc_new(m_pWin);
            m_pXORGC = gdk_gc_new(m_pWin);
    #endif
            m_pXftFont = NULL;
            m_Colormap = GDK_COLORMAP_XCOLORMAP(m_pColormap);
            m_pXftDraw = XftDrawCreate(GDK_DISPLAY(), m_Drawable, m_pVisual,
    m_Colormap);
    #else
            m_pGC = gdk_gc_new(m_pWin);
            m_pXORGC = gdk_gc_new(m_pWin);
    #endif

    What is wrong here?

    If you download the current source, comment out the

    gtk_enable_double_buffering(widget, FALSE)

    code in

     xap_UnixDialogHelper.cpp
    xap_UnixFrame.cpp
    ap_UnixStatusBar.cpp

    Also do you know what to look at to stop abiword loading all the fonts
    at startup?

    Cheers

    Martin



    This archive was generated by hypermail 2.1.4 : Wed Nov 13 2002 - 02:09:45 EST