Create cairo context in expose callback

This commit is contained in:
Paul Dicker
2025-04-03 21:27:17 +02:00
committed by Stéphane Lesimple
parent 6dc80bb542
commit 5da5fa54dc
12 changed files with 85 additions and 86 deletions

View File

@@ -61,9 +61,8 @@ static int draw_text(cairo_t *cr, PangoLayout *l, char *text, int x, int y, GdkC
return h;
}
static void redraw_labels(GtkWidget *widget, int erase_mask)
{ cairo_t *cr = gdk_cairo_create(gtk_widget_get_window(Closure->readAdaptiveDrawingArea));
char buf[256];
static void redraw_labels(cairo_t *cr, GtkWidget *widget, int erase_mask)
{ char buf[256];
int x,y,w,h;
/* Draw the labels */
@@ -161,15 +160,15 @@ static void update_geometry(GtkWidget *widget)
/* Expose event handler */
static gboolean expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
{ cairo_t *cr = gdk_cairo_create(GDK_DRAWABLE(gtk_widget_get_window(widget)));
GuiSetSpiralWidget(Closure->readAdaptiveSpiral, widget);
if(event->count) /* Exposure compression */
return TRUE;
update_geometry(widget);
redraw_labels(widget, ~0);
GuiDrawSpiral(Closure->readAdaptiveSpiral);
redraw_labels(cr, widget, ~0);
GuiDrawSpiral(cr, Closure->readAdaptiveSpiral);
return TRUE;
}