diff options
author | Kristian Høgsberg <krh@bitplanet.net> | 2009-12-23 11:06:27 -0500 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2009-12-23 11:06:27 -0500 |
commit | c7c5b1ee0c31736b2a02634da9822d1988e5fdfc (patch) | |
tree | 8da925682eb7ca0e7c3c74529254226da0339433 | |
parent | 7676930c7e1bddd33455a6421fc335027ba50891 (diff) |
Make _vte_draw_start() recursive
-rw-r--r-- | src/vte.c | 10 | ||||
-rw-r--r-- | src/vtedraw.c | 14 | ||||
-rw-r--r-- | src/vtedraw.h | 2 |
3 files changed, 11 insertions, 15 deletions
@@ -8724,12 +8724,8 @@ vte_terminal_fill_rectangle(VteTerminal *terminal, gint height) { GdkColor color; - gboolean wasdrawing; - wasdrawing = terminal->pvt->draw->started; - if (!wasdrawing) { - _vte_draw_start(terminal->pvt->draw); - } + _vte_draw_start(terminal->pvt->draw); color.red = entry->red; color.green = entry->green; color.blue = entry->blue; @@ -8738,9 +8734,7 @@ vte_terminal_fill_rectangle(VteTerminal *terminal, y + terminal->pvt->inner_border.top, width, height, &color, VTE_DRAW_OPAQUE); - if (!wasdrawing) { - _vte_draw_end(terminal->pvt->draw); - } + _vte_draw_end(terminal->pvt->draw); } static void diff --git a/src/vtedraw.c b/src/vtedraw.c index f3a556a..ab507bc 100644 --- a/src/vtedraw.c +++ b/src/vtedraw.c @@ -875,8 +875,10 @@ _vte_draw_start (struct _vte_draw *draw) g_object_ref (draw->widget->window); - data->cr = gdk_cairo_create (draw->widget->window); - draw->started = TRUE; + if (draw->started == 0) + data->cr = gdk_cairo_create (draw->widget->window); + + draw->started++; } void @@ -885,16 +887,16 @@ _vte_draw_end (struct _vte_draw *draw) struct _vte_pangocairo_data *data = draw->impl_data; g_return_if_fail (draw->started == TRUE); + g_assert (draw->started > 0); - if (data->cr != NULL) { + draw->started--; + if (draw->started == 0) { cairo_destroy (data->cr); data->cr = NULL; - } + } g_object_unref (draw->widget->window); - draw->started = FALSE; - _vte_debug_print (VTE_DEBUG_DRAW, "draw_end\n"); } diff --git a/src/vtedraw.h b/src/vtedraw.h index f709413..a0c1041 100644 --- a/src/vtedraw.h +++ b/src/vtedraw.h @@ -62,7 +62,7 @@ struct _vte_draw_text_request { struct _vte_draw { GtkWidget *widget; - gboolean started; + gint started; gboolean requires_clear; |