core: ABC files should resolve at the time of discovery, not on the action queue.
This commit is contained in:
parent
7e898457b0
commit
e915a07d4f
|
@ -342,13 +342,6 @@ pub enum ActionType<'gc> {
|
||||||
method: &'static str,
|
method: &'static str,
|
||||||
args: Vec<Value<'gc>>,
|
args: Vec<Value<'gc>>,
|
||||||
},
|
},
|
||||||
|
|
||||||
/// AVM2 ABC files.
|
|
||||||
DoABC {
|
|
||||||
name: String,
|
|
||||||
is_lazy_initialize: bool,
|
|
||||||
abc: SwfSlice,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl fmt::Debug for ActionType<'_> {
|
impl fmt::Debug for ActionType<'_> {
|
||||||
|
@ -382,16 +375,6 @@ impl fmt::Debug for ActionType<'_> {
|
||||||
.field("method", method)
|
.field("method", method)
|
||||||
.field("args", args)
|
.field("args", args)
|
||||||
.finish(),
|
.finish(),
|
||||||
ActionType::DoABC {
|
|
||||||
name,
|
|
||||||
is_lazy_initialize,
|
|
||||||
abc,
|
|
||||||
} => f
|
|
||||||
.debug_struct("ActionType::DoABC")
|
|
||||||
.field("name", name)
|
|
||||||
.field("is_lazy_initialize", is_lazy_initialize)
|
|
||||||
.field("bytecode", abc)
|
|
||||||
.finish(),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ use crate::avm1::{
|
||||||
};
|
};
|
||||||
use crate::avm2::Activation as Avm2Activation;
|
use crate::avm2::Activation as Avm2Activation;
|
||||||
use crate::avm2::{
|
use crate::avm2::{
|
||||||
Error as Avm2Error, Namespace as Avm2Namespace, Object as Avm2Object, QName as Avm2QName,
|
Avm2, Error as Avm2Error, Namespace as Avm2Namespace, Object as Avm2Object, QName as Avm2QName,
|
||||||
StageObject as Avm2StageObject, TObject as Avm2TObject, Value as Avm2Value,
|
StageObject as Avm2StageObject, TObject as Avm2TObject, Value as Avm2Value,
|
||||||
};
|
};
|
||||||
use crate::backend::audio::AudioStreamHandle;
|
use crate::backend::audio::AudioStreamHandle;
|
||||||
|
@ -476,15 +476,11 @@ impl<'gc> MovieClip<'gc> {
|
||||||
"Invalid source or tag length when running init action",
|
"Invalid source or tag length when running init action",
|
||||||
)
|
)
|
||||||
})?;
|
})?;
|
||||||
context.action_queue.queue_actions(
|
|
||||||
self.into(),
|
if let Err(e) = Avm2::load_abc(slice, &name, is_lazy_initialize, context) {
|
||||||
ActionType::DoABC {
|
log::warn!("Error loading ABC file: {}", e);
|
||||||
name,
|
}
|
||||||
is_lazy_initialize,
|
|
||||||
abc: slice,
|
|
||||||
},
|
|
||||||
false,
|
|
||||||
);
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -960,17 +960,6 @@ impl Player {
|
||||||
&args,
|
&args,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// DoABC code
|
|
||||||
ActionType::DoABC {
|
|
||||||
name,
|
|
||||||
is_lazy_initialize,
|
|
||||||
abc,
|
|
||||||
} => {
|
|
||||||
if let Err(e) = Avm2::load_abc(abc, &name, is_lazy_initialize, context) {
|
|
||||||
log::warn!("Error loading ABC file: {}", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue