#include <gtk/gtk.h>
static gboolean
-da_expose (GtkWidget *widget,
- GdkEventExpose *event,
- gpointer user_data)
+da_draw (GtkWidget *widget,
+ cairo_t *cr,
+ gpointer user_data)
{
GtkOffscreenWindow *offscreen = (GtkOffscreenWindow *)user_data;
- GdkPixmap *pixmap;
- cairo_t *cr;
- if (GTK_WIDGET_DRAWABLE (widget))
- {
- pixmap = gdk_offscreen_window_get_pixmap (GTK_WIDGET (offscreen)->window);
-
- cr = gdk_cairo_create (widget->window);
- gdk_cairo_set_source_pixmap (cr, pixmap, 50, 50);
- cairo_paint (cr);
- cairo_destroy (cr);
- }
+ cairo_set_source_surface (cr,
+ gtk_offscreen_window_get_surface (offscreen),
+ 50, 50);
+ cairo_paint (cr);
return FALSE;
}
gtk_container_add (GTK_CONTAINER (window), da);
g_signal_connect (da,
- "expose-event",
- G_CALLBACK (da_expose),
+ "draw",
+ G_CALLBACK (da_draw),
offscreen);
g_signal_connect (offscreen,