[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ./ChangeLog server/MovieClipLoader.cpp
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ./ChangeLog server/MovieClipLoader.cpp |
Date: |
Tue, 16 May 2006 08:22:00 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Branch:
Changes by: Sandro Santilli <address@hidden> 06/05/16 08:22:00
Modified files:
. : ChangeLog
server : MovieClipLoader.cpp
Log message:
* server/MovieClipLoader.cpp: fixed relative url resolution
to use target's parent url, not target url.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/ChangeLog.diff?tr1=1.329&tr2=1.330&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/MovieClipLoader.cpp.diff?tr1=1.19&tr2=1.20&r1=text&r2=text
Patches:
Index: gnash/ChangeLog
diff -u gnash/ChangeLog:1.329 gnash/ChangeLog:1.330
--- gnash/ChangeLog:1.329 Tue May 16 08:05:13 2006
+++ gnash/ChangeLog Tue May 16 08:22:00 2006
@@ -1,5 +1,7 @@
2006-05-16 Sandro Santilli <address@hidden>
+ * server/MovieClipLoader.cpp: fixed relative url resolution
+ to use target's parent url, not target url.
* server/gnash.h, server/impl.cpp: changed definition
of file_opener_callback, create_movie and
create_library_movie to take an URL parameter.
Index: gnash/server/MovieClipLoader.cpp
diff -u gnash/server/MovieClipLoader.cpp:1.19
gnash/server/MovieClipLoader.cpp:1.20
--- gnash/server/MovieClipLoader.cpp:1.19 Tue May 16 08:05:13 2006
+++ gnash/server/MovieClipLoader.cpp Tue May 16 08:22:00 2006
@@ -70,6 +70,7 @@
#include "impl.h"
#include "URL.h"
#include "GnashException.h"
+#include "sprite_instance.h"
#include <string>
@@ -224,29 +225,41 @@
assert(ptr);
tu_string tu_url = fn.arg(0).to_string();
- as_object *target = (as_object *)fn.arg(1).to_object();
+ as_object *target_object = fn.arg(1).to_object();
+ if ( ! target_object )
+ {
+ log_error("load target is not an object.\n");
+ fn.result->set_bool(false);
+ return;
+ }
+
+ sprite_instance* target = dynamic_cast<sprite_instance*>(target_object);
+ if ( ! target )
+ {
+ log_error("load target is not a sprite_instance (%s)\n",
+ typeid(*target).name());
+ fn.result->set_bool(false);
+ return;
+ }
- log_msg("load clip: %s, target is: %p (%s)\n", tu_url.c_str(),
- (void*)target, typeid(*target).name());
+ log_msg("load clip: %s, target is: %p\n",
+ tu_url.c_str(), (void*)target);
+
+ // Get a pointer to target's sprite parent (for URL resolution)
+ movie* parent = target->get_parent();
+ assert(parent);
//
// Extract root movie URL
// @@ could be cached somewhere...
//
- as_value target_url;
- if ( ! target->get_member("_url", &target_url) )
+ as_value parent_url;
+ if ( ! parent->get_member("_url", &parent_url) )
{
- log_msg("FIXME: no _url member in target!");
+ log_msg("FIXME: no _url member in target parent!");
}
- log_msg(" target._url: %s\n", target_url.to_string());
-
- if (target == NULL)
- {
- //log_error("target doesn't exist:\n");
- fn.result->set_bool(false);
- return;
- }
+ log_msg(" target's parent url: %s\n", parent_url.to_string());
//
// Resolve relative urls
@@ -258,7 +271,7 @@
// wrap in a try/catch block w/out hiding
// the variable inside the block.
//
- URL url(tu_url.c_str(), URL(target_url.to_string()));
+ URL url(tu_url.c_str(), URL(parent_url.to_string()));
log_msg(" resolved url: %s\n", url.str().c_str());
@@ -362,7 +375,7 @@
float ratio = tar->get_ratio();
uint16_t clip_depth = tar->get_clip_depth();
- movie* parent = tar->get_parent();
+ //movie* parent = tar->get_parent();
movie* new_movie =
static_cast<movie*>(extern_movie)->get_root_movie();
assert(parent != NULL);