[Swfdec-commits] 2 commits - swfdec/swfdec_access.c swfdec/swfdec_resource.c

Benjamin Otte company at kemper.freedesktop.org
Wed Jun 25 06:28:39 PDT 2008


 swfdec/swfdec_access.c   |    2 +-
 swfdec/swfdec_resource.c |   30 ++++++++++++++++++------------
 2 files changed, 19 insertions(+), 13 deletions(-)

New commits:
commit 19f65b0233987fb5c75988103eeb543744bb16f8
Author: Benjamin Otte <otte at gnome.org>
Date:   Wed Jun 25 15:28:21 2008 +0200

    fix reference handling madness

diff --git a/swfdec/swfdec_resource.c b/swfdec/swfdec_resource.c
index ee200d5..0f8b7bc 100644
--- a/swfdec/swfdec_resource.c
+++ b/swfdec/swfdec_resource.c
@@ -512,7 +512,6 @@ swfdec_resource_load_free (gpointer loadp)
 {
   SwfdecResourceLoad *load = loadp;
 
-  swfdec_player_unroot (SWFDEC_PLAYER (SWFDEC_AS_OBJECT (load->sandbox)->context), load);
   g_free (load->url);
   g_free (load->target_string);
   if (load->buffer)
@@ -570,8 +569,10 @@ swfdec_resource_do_load (SwfdecPlayer *player, gboolean allowed, gpointer loadp)
   SwfdecResource *resource;
   SwfdecLoader *loader;
   
-  if (!swfdec_as_context_use_mem (SWFDEC_AS_CONTEXT (player), sizeof (SwfdecResource)))
+  if (!swfdec_as_context_use_mem (SWFDEC_AS_CONTEXT (player), sizeof (SwfdecResource))) {
+    swfdec_player_unroot (player, load);
     return;
+  }
   resource = g_object_new (SWFDEC_TYPE_RESOURCE, NULL);
   swfdec_as_object_add (SWFDEC_AS_OBJECT (resource), SWFDEC_AS_CONTEXT (player), sizeof (SwfdecResource));
   resource->version = 8;
@@ -586,15 +587,17 @@ swfdec_resource_do_load (SwfdecPlayer *player, gboolean allowed, gpointer loadp)
 	load->url, swfdec_url_get_url (load->sandbox->url));
     /* FIXME: is replacing correct? */
     swfdec_resource_emit_error (resource, SWFDEC_AS_STR_IllegalRequest);
+    swfdec_player_unroot (player, load);
     return;
   }
 
   /* FIXME: load nonetheless, even if there's no movie? */
-  if (!swfdec_resource_create_movie (resource, load))
-    return;
-  loader = swfdec_player_load (player, load->url, load->buffer);
-  swfdec_resource_set_loader (resource, loader);
-  g_object_unref (loader);
+  if (swfdec_resource_create_movie (resource, load)) {
+    loader = swfdec_player_load (player, load->url, load->buffer);
+    swfdec_resource_set_loader (resource, loader);
+    g_object_unref (loader);
+  }
+  swfdec_player_unroot (player, load);
 }
 
 static const SwfdecAccessMatrix swfdec_resource_matrix = {
@@ -616,11 +619,12 @@ swfdec_resource_load_request (gpointer loadp, gpointer playerp)
     SwfdecSpriteMovie *movie;
       
     movie = load->target_movie ? (SwfdecSpriteMovie *) swfdec_movie_resolve (SWFDEC_MOVIE (load->target_movie)) : NULL;
-    if (!SWFDEC_IS_SPRITE_MOVIE (movie)) {
+    if (SWFDEC_IS_SPRITE_MOVIE (movie)) {
+      swfdec_resource_replace_movie (movie, SWFDEC_MOVIE (movie)->resource);
+    } else {
       SWFDEC_DEBUG ("no movie, not unloading");
-      return;
     }
-    swfdec_resource_replace_movie (movie, SWFDEC_MOVIE (movie)->resource);
+    swfdec_player_unroot (player, load);
     return;
   }
 
@@ -636,12 +640,14 @@ swfdec_resource_load_request (gpointer loadp, gpointer playerp)
     } else {
       g_signal_emit_by_name (player, "fscommand", command, load->target_string);
     }
+    swfdec_player_unroot (player, load);
     return;
   }
 
   /* LAUNCH command (aka getURL) */
   if (load->target_string && swfdec_player_get_level (player, load->target_string) < 0) {
     swfdec_player_launch (player, load->url, load->target_string, load->buffer);
+    swfdec_player_unroot (player, load);
     return;
   }
 
@@ -668,8 +674,8 @@ swfdec_resource_load_internal (SwfdecPlayer *player,
   load->buffer = buffer;
   load->loader = loader;
 
-  swfdec_player_root (player, load, swfdec_resource_load_mark);
-  swfdec_player_request_resource (player, swfdec_resource_load_request, load, swfdec_resource_load_free);
+  swfdec_player_root_full (player, load, swfdec_resource_load_mark, swfdec_resource_load_free);
+  swfdec_player_request_resource (player, swfdec_resource_load_request, load, NULL);
 }
 
 gboolean
commit 1bdcadf1bb54c9a1464feb1b98981fac822d203b
Author: Benjamin Otte <otte at gnome.org>
Date:   Wed Jun 25 15:28:12 2008 +0200

    indent

diff --git a/swfdec/swfdec_access.c b/swfdec/swfdec_access.c
index e29845f..511e8c4 100644
--- a/swfdec/swfdec_access.c
+++ b/swfdec/swfdec_access.c
@@ -46,7 +46,7 @@ swfdec_player_allow_by_matrix (SwfdecPlayer *player, SwfdecSandbox *sandbox,
 
   if (swfdec_url_is_local (url)) {
     type = SWFDEC_ACCESS_LOCAL;
-  } else if (swfdec_url_host_equal(url, sandbox->url)) {
+  } else if (swfdec_url_host_equal (url, sandbox->url)) {
     type = SWFDEC_ACCESS_SAME_HOST;
   } else {
     type = SWFDEC_ACCESS_NET;


More information about the Swfdec-commits mailing list