diff options
author | Benjamin Otte <otte@gnome.org> | 2008-08-27 11:08:18 +0200 |
---|---|---|
committer | Benjamin Otte <otte@gnome.org> | 2008-08-27 11:11:05 +0200 |
commit | 7eaefe278f8c486a4435e00e5a5a380b1a93afb8 (patch) | |
tree | 50b41ba7fa9cd79f82a522f2fec562d4661279db | |
parent | 071dc432d829732f1452c52ab342d50d3a43837d (diff) |
don't try to repaint stuff if there's no target to paint on
First part of a fix for bug 16822
-rw-r--r-- | src/swfmoz_player.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/swfmoz_player.c b/src/swfmoz_player.c index b1685af..aee6dce 100644 --- a/src/swfmoz_player.c +++ b/src/swfmoz_player.c @@ -244,6 +244,9 @@ swfmoz_player_redraw (SwfmozPlayer *player, GdkRegion *region; guint i; + if (player->target == NULL) + return; + if (player->repaint) region = player->repaint; else @@ -482,6 +485,18 @@ swfmoz_player_set_property (GObject *object, guint param_id, const GValue *value } static void +swfmoz_player_clear_repaints (SwfmozPlayer *player) +{ + if (player->repaint_source) { + g_source_destroy (player->repaint_source); + g_source_unref (player->repaint_source); + player->repaint_source = NULL; + gdk_region_destroy (player->repaint); + player->repaint = NULL; + } +} + +static void swfmoz_player_dispose (GObject *object) { SwfmozPlayer *player = SWFMOZ_PLAYER (object); @@ -508,13 +523,7 @@ swfmoz_player_dispose (GObject *object) g_object_unref (player->target); player->target = NULL; } - if (player->repaint_source) { - g_source_destroy (player->repaint_source); - g_source_unref (player->repaint_source); - player->repaint_source = NULL; - gdk_region_destroy (player->repaint); - player->repaint = NULL; - } + swfmoz_player_clear_repaints (player); if (player->initial) { g_object_unref (player->initial); player->initial = NULL; @@ -720,6 +729,7 @@ swfmoz_player_set_target (SwfmozPlayer *player, GdkWindow *target, g_object_unref (player->target); } player->target = target; + swfmoz_player_clear_repaints (player); if (target) { cairo_t *cr; SwfdecRenderer *renderer; |