summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@gnome.org>2008-08-27 11:08:18 +0200
committerBenjamin Otte <otte@gnome.org>2008-08-27 11:11:05 +0200
commit7eaefe278f8c486a4435e00e5a5a380b1a93afb8 (patch)
tree50b41ba7fa9cd79f82a522f2fec562d4661279db
parent071dc432d829732f1452c52ab342d50d3a43837d (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.c24
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;