[cairo] warning while executing gtk_widget_draw

Lokesh Chakka lvenkatakumarchakka at gmail.com
Tue Aug 12 07:10:43 PDT 2014


ravi / Uli,

following modification fixed the issue:

static gboolean on_draw_event( GtkWidget *widget, cairo_t *cr, gpointer
user_data )
{
    return FALSE;
}

main()
{
    GtkDrawingArea *statistics;
    cairo_surface_t *surface;
    cairo_t *cr;
    GtkWindow *main_window;


    gtk_init( NULL, NULL );
    statistics = (GtkDrawingArea*)gtk_drawing_area_new();
    surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 120, 120);
    cr = cairo_create ( surface );
    g_signal_connect(G_OBJECT(statistics), "draw",
G_CALLBACK(on_draw_event), NULL);
    main_window = (GtkWindow*)gtk_window_new(GTK_WINDOW_TOPLEVEL);

g_signal_connect(G_OBJECT(main_window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
    gtk_container_add (GTK_CONTAINER (main_window),(GtkWidget*)statistics);
    gtk_widget_show_all((GtkWidget*)main_window);

    puts(gtk_widget_is_drawable((GtkWidget*)statistics) ? "yes" : "no");
    gtk_widget_draw( (GtkWidget*)statistics, cr );
    cairo_surface_write_to_png( surface, "one.png" );

    gtk_main();
}


Thanks & Regards
--
Lokesh Chakka,
Mobile: 9731023458


On Tue, Aug 12, 2014 at 5:01 PM, RAVI NANJUNDAPPA <nravi.n at samsung.com>
wrote:

> Hi,
>
> U can try this : This works fine for me.
>
> #include <cairo.h>
> #include <gtk/gtk.h>
>
> static gboolean on_draw_event(GtkWidget *widget, cairo_t *cr,
>     gpointer user_data)
> {
> gtk_widget_draw(widget, cr );
>   return FALSE;
> }
>
> main()
> {
>     GtkDrawingArea *statistics;
>     cairo_surface_t *surface;
>     cairo_t *cr;
>     GtkWindow *main_window;
>
>
>     gtk_init( NULL, NULL );
>     statistics = (GtkDrawingArea*)gtk_drawing_area_new();
>     surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 120, 120);
>     cr = cairo_create ( surface );
>     cairo_surface_write_to_png( surface, "one.png" );
>     main_window = (GtkWindow*)gtk_window_new(GTK_WINDOW_TOPLEVEL);
>
>   g_signal_connect(G_OBJECT(main_window), "draw",
> G_CALLBACK(on_draw_event), NULL);
>
>
> g_signal_connect(G_OBJECT(main_window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
>     gtk_container_add (GTK_CONTAINER (main_window),(GtkWidget*)statistics);
>
>     gtk_widget_show_all((GtkWidget*)main_window);
>
>     gtk_main();
> }
>
> Thanks and Best Regards,
> N Ravi
>
> ------- Original Message -------
> Sender : Lokesh Chakka<lvenkatakumarchakka at gmail.com>
> Date : Aug 12, 2014 13:24 (GMT+05:30)
> Title : [cairo] warning while executing gtk_widget_draw
>
>
>
> Hello,
>
>
> I have written one program and I am seeing the following warning:
>
> Gtk-CRITICAL **: gtk_widget_draw: assertion '!widget->priv->alloc_needed'
> failed
>
> program is as follows:
>
> main()
> {
>     GtkDrawingArea *statistics;
>     cairo_surface_t *surface;
>     cairo_t *cr;
>     GtkWindow *main_window;
>
>
>     gtk_init( NULL, NULL );
>     statistics = (GtkDrawingArea*)gtk_drawing_area_new();
>     surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 120, 120);
>     cr = cairo_create ( surface );
>     gtk_widget_draw( (GtkWidget*)statistics, cr );
>     cairo_surface_write_to_png( surface, "one.png" );
>     main_window = (GtkWindow*)gtk_window_new(GTK_WINDOW_TOPLEVEL);
>
> g_signal_connect(G_OBJECT(main_window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
>     gtk_container_add (GTK_CONTAINER (main_window),(GtkWidget*)statistics);
>     gtk_widget_show_all((GtkWidget*)main_window);
>
>     gtk_main();
> }
>
>
> can some one please tell me the problem in the above program ?
>
>
>
> Thanks & Regards
> --
> Lokesh Chakka,
> Mobile: 9731023458
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cairographics.org/archives/cairo/attachments/20140812/0f45abd2/attachment.html>


More information about the cairo mailing list