X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fas3%2Fregistry.c;h=5c947e5ad6a2673e3e353890b55dc2da5531cc31;hp=05d275ed4448d3f271a755646e36723620cfcb0a;hb=b6ebc39257e2814f08a17d8c179c3991c16053ba;hpb=b0dd28e6cbbab28a953f48bf3fe084a0b62fab63 diff --git a/lib/as3/registry.c b/lib/as3/registry.c index 05d275e..5c947e5 100644 --- a/lib/as3/registry.c +++ b/lib/as3/registry.c @@ -73,6 +73,17 @@ type_t memberinfo_type = { }; // ----------------------- assets ------------------------------------- +static void use_asset(asset_bundle_t*a) +{ + a->used = 1; + asset_bundle_list_t*l = a->dependencies; + while(l) { + if(!l->asset_bundle->used) { + use_asset(l->asset_bundle); + } + l = l->next; + } +} void registry_use(slotinfo_t*s) { if(!s) return; @@ -80,7 +91,9 @@ void registry_use(slotinfo_t*s) s->flags |= FLAG_USED; if(s->kind == INFOTYPE_CLASS) { classinfo_t*c=(classinfo_t*)s; - if(c->assets) c->assets->used = 1; + if(c->assets) { + use_asset(c->assets); + } int t=0; while(c->interfaces[t]) { registry_use((slotinfo_t*)c->interfaces[t]);