static void gimp_draw_tool_draw (GimpDrawTool *draw_tool) { if (draw_tool->display && draw_tool->paused_count == 0 && ! draw_tool->draw_timeout) { GimpDisplayShell *shell = gimp_display_get_shell (draw_tool->display); gimp_draw_tool_undraw (draw_tool); GIMP_DRAW_TOOL_GET_CLASS (draw_tool)->draw (draw_tool); if (draw_tool->group_stack) { g_warning ("%s: draw_tool->group_stack not empty after calling " "GimpDrawTool::draw() of %s", G_STRFUNC, g_type_name (G_TYPE_FROM_INSTANCE (draw_tool))); while (draw_tool->group_stack) gimp_draw_tool_pop_group (draw_tool); } if (draw_tool->preview) gimp_display_shell_add_preview_item (shell, draw_tool->preview); if (draw_tool->item) gimp_display_shell_add_tool_item (shell, draw_tool->item); } }
static void gimp_draw_tool_draw (GimpDrawTool *draw_tool) { guint64 now = g_get_monotonic_time (); if (draw_tool->display && draw_tool->paused_count == 0 && (! draw_tool->draw_timeout || (now - draw_tool->last_draw_time) > MINIMUM_DRAW_INTERVAL)) { GimpDisplayShell *shell = gimp_display_get_shell (draw_tool->display); if (draw_tool->draw_timeout) { g_source_remove (draw_tool->draw_timeout); draw_tool->draw_timeout = 0; } gimp_draw_tool_undraw (draw_tool); GIMP_DRAW_TOOL_GET_CLASS (draw_tool)->draw (draw_tool); if (draw_tool->group_stack) { g_warning ("%s: draw_tool->group_stack not empty after calling " "GimpDrawTool::draw() of %s", G_STRFUNC, g_type_name (G_TYPE_FROM_INSTANCE (draw_tool))); while (draw_tool->group_stack) gimp_draw_tool_pop_group (draw_tool); } if (draw_tool->preview) gimp_display_shell_add_preview_item (shell, draw_tool->preview); if (draw_tool->item) gimp_display_shell_add_tool_item (shell, draw_tool->item); #if 0 gimp_display_shell_flush (shell, TRUE); #endif draw_tool->last_draw_time = g_get_monotonic_time (); #if 0 g_printerr ("drawing tool stuff took %f seconds\n", (draw_tool->last_draw_time - now) / 1000000.0); #endif } }