gtkdatabox : pixmap and segfaults



Hi there,

I am currently maintaining gtkdatabox. It is a nice data plotting package which is tightly integrated with GTK.

I am having problems with the 'realize' GTK function.
When a previously 'unrealize' pixmap is addressed, I get seg fault.

The chain flow goes like this :

Add a reference to the widget the pack in a container.
Remove the widget from a container.
(it gets unrealized)
Pack the widget back into the container.
(the realize function is called and in this function it dies)

It dies when calling the 'gdk_pixmap_get_size' function as the pixmap appears not to be valid.
I can't work out how to check whether the pixmap is valid before I call this function.

the code can be obtained from here :
http://sourceforge.net/projects/gtkdatabox/

the offending code is in the file gtkdatabox_ruler.c  :

static void
gtk_databox_ruler_make_pixmap (GtkDataboxRuler * ruler)
{
    GtkWidget *widget;
    gint width;
    gint height;

    widget = GTK_WIDGET (ruler);

    if (ruler->priv->backing_pixmap)
    {
        gdk_pixmap_get_size (ruler->priv->backing_pixmap, &width, &height);
        if ((width == widget->allocation.width) &&
                (height == widget->allocation.height))
            return;

        g_object_unref (ruler->priv->backing_pixmap);
    }

    ruler->priv->backing_pixmap = gdk_pixmap_new (widget->window,
                                  widget->allocation.width,
                                  widget->allocation.height, -1);

    ruler->priv->xsrc = 0;
    ruler->priv->ysrc = 0;
}

thanks
Matt


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]