[gimp] app: undraw the old canvas items only before drawing new ones
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: undraw the old canvas items only before drawing new ones
- Date: Fri, 24 Sep 2010 21:27:07 +0000 (UTC)
commit cbaf997ae22902319958275240db5c386fe3d8f1
Author: Michael Natterer <mitch gimp org>
Date: Fri Sep 24 23:25:19 2010 +0200
app: undraw the old canvas items only before drawing new ones
or when the draw tool is really stopped. This seems to get rid of any
remaining flickering and also reduces expose events. Also get rid of
the "is_drawn" state and API because they make no sense any longer.
app/tools/gimpdrawtool.c | 26 +++++---------------------
app/tools/gimpdrawtool.h | 3 ---
2 files changed, 5 insertions(+), 24 deletions(-)
---
diff --git a/app/tools/gimpdrawtool.c b/app/tools/gimpdrawtool.c
index 8eb2311..3da6930 100644
--- a/app/tools/gimpdrawtool.c
+++ b/app/tools/gimpdrawtool.c
@@ -105,9 +105,8 @@ static void
gimp_draw_tool_init (GimpDrawTool *draw_tool)
{
draw_tool->display = NULL;
-
draw_tool->paused_count = 0;
- draw_tool->is_drawn = FALSE;
+ draw_tool->items = NULL;
}
static void
@@ -201,29 +200,24 @@ gimp_draw_tool_clear_items (GimpDrawTool *draw_tool)
static void
gimp_draw_tool_draw (GimpDrawTool *draw_tool)
{
- if (draw_tool->paused_count == 0 &&
- draw_tool->display)
+ if (draw_tool->display && draw_tool->paused_count == 0)
{
+ gimp_draw_tool_invalidate_items (draw_tool);
gimp_draw_tool_clear_items (draw_tool);
GIMP_DRAW_TOOL_GET_CLASS (draw_tool)->draw (draw_tool);
gimp_draw_tool_invalidate_items (draw_tool);
-
- draw_tool->is_drawn = TRUE;
}
}
static void
gimp_draw_tool_undraw (GimpDrawTool *draw_tool)
{
- if (draw_tool->paused_count == 0 &&
- draw_tool->display)
+ if (draw_tool->display)
{
gimp_draw_tool_invalidate_items (draw_tool);
gimp_draw_tool_clear_items (draw_tool);
-
- draw_tool->is_drawn = FALSE;
}
}
@@ -270,8 +264,6 @@ gimp_draw_tool_pause (GimpDrawTool *draw_tool)
{
g_return_if_fail (GIMP_IS_DRAW_TOOL (draw_tool));
- gimp_draw_tool_undraw (draw_tool);
-
draw_tool->paused_count++;
}
@@ -286,14 +278,6 @@ gimp_draw_tool_resume (GimpDrawTool *draw_tool)
gimp_draw_tool_draw (draw_tool);
}
-gboolean
-gimp_draw_tool_is_drawn (GimpDrawTool *draw_tool)
-{
- g_return_val_if_fail (GIMP_IS_DRAW_TOOL (draw_tool), FALSE);
-
- return draw_tool->is_drawn;
-}
-
void
gimp_draw_tool_draw_items (GimpDrawTool *draw_tool,
cairo_t *cr)
@@ -306,7 +290,7 @@ gimp_draw_tool_draw_items (GimpDrawTool *draw_tool,
g_return_if_fail (cr != NULL);
if (! gimp_draw_tool_is_active (draw_tool) ||
- ! gimp_draw_tool_is_drawn (draw_tool))
+ draw_tool->paused_count > 0)
return;
shell = gimp_display_get_shell (draw_tool->display);
diff --git a/app/tools/gimpdrawtool.h b/app/tools/gimpdrawtool.h
index 9974638..e10775b 100644
--- a/app/tools/gimpdrawtool.h
+++ b/app/tools/gimpdrawtool.h
@@ -41,7 +41,6 @@ struct _GimpDrawTool
*/
gint paused_count; /* count to keep track of multiple pauses */
- gboolean is_drawn; /* is the stuff we draw currently visible */
GList *items;
};
@@ -67,8 +66,6 @@ gboolean gimp_draw_tool_is_active (GimpDrawTool *draw_tool)
void gimp_draw_tool_pause (GimpDrawTool *draw_tool);
void gimp_draw_tool_resume (GimpDrawTool *draw_tool);
-gboolean gimp_draw_tool_is_drawn (GimpDrawTool *draw_tool);
-
void gimp_draw_tool_draw_items (GimpDrawTool *draw_tool,
cairo_t *cr);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]