Some cleaning

This commit is contained in:
copy 2015-01-17 21:59:16 +01:00
parent 2609e0debf
commit af16c3fc36

View file

@ -91,41 +91,8 @@ function V86Starter(options)
} }
//settings.serial_adapter = new ModemAdapter(); //settings.serial_adapter = new ModemAdapter();
var files_to_load = [];
function add_file(file, handler)
{
if(!file)
{
return;
}
if(file.buffer)
{
console.assert(
file.buffer instanceof ArrayBuffer || file.buffer instanceof File,
"buffer should be ArrayBuffer or File"
);
handler(file.buffer);
}
else if(file.url)
{
if(file.async)
{
handler(file);
}
else
{
files_to_load.push({
url: file.url,
handler: handler,
size: file.size,
as_text: file.as_text,
});
}
}
}
// ugly, but required for closure compiler compilation
function put_on_settings(name, buffer) function put_on_settings(name, buffer)
{ {
switch(name) switch(name)
@ -156,13 +123,57 @@ function V86Starter(options)
} }
} }
function make_sync_buffer(name, buffer)
var files_to_load = [];
/**
* @param {boolean=} no_async
*/
function add_file(file, handler, no_async)
{ {
if(buffer instanceof ArrayBuffer) if(!file)
{ {
var result = new SyncBuffer(buffer); return;
} }
else if(buffer instanceof File)
if(file.buffer)
{
console.assert(
file.buffer instanceof ArrayBuffer ||
(typeof File !== "undefined" && file.buffer instanceof File),
"buffer should be ArrayBuffer or File"
);
handler(file.buffer);
}
else if(file.url)
{
if(file.async && !no_async)
{
handler(file);
}
else
{
files_to_load.push({
url: file.url,
handler: handler,
size: file.size,
as_text: file.as_text,
});
}
}
else
{
dbg_log("Ignored file: url=" + file.url + " buffer=" + file.buffer);
}
}
function make_buffer_object(name, result)
{
if(result instanceof ArrayBuffer)
{
var buffer = new SyncBuffer(result);
}
else if(result instanceof File)
{ {
// SyncFileBuffer: // SyncFileBuffer:
// - loads the whole disk image into memory, impossible for large files (more than 1GB) // - loads the whole disk image into memory, impossible for large files (more than 1GB)
@ -173,40 +184,37 @@ function V86Starter(options)
// - loads slices of the file asynchronously as requested // - loads slices of the file asynchronously as requested
// - slower get/set // - slower get/set
var result;
// Heuristics: If file is smaller than 16M, use SyncFileBuffer // Heuristics: If file is smaller than 16M, use SyncFileBuffer
if(buffer.size < 16 * 1024 * 1024) if(result.size < 16 * 1024 * 1024)
{ {
result = new v86util.SyncFileBuffer(buffer); var buffer = new v86util.SyncFileBuffer(result);
result.load(); buffer.load();
} }
else else
{ {
result = new v86util.AsyncFileBuffer(buffer); var buffer = new v86util.AsyncFileBuffer(result);
} }
//settings[name] = new SyncFileBuffer(buffer);
} }
else if(buffer.async) else if(result.url && result.async)
{ {
var result = new v86util.AsyncXHRBuffer(buffer.url, 512, buffer.size); var buffer = new v86util.AsyncXHRBuffer(result.url, 512, result.size);
} }
else else
{ {
console.assert(false); console.assert(false);
} }
put_on_settings(name, result); put_on_settings(name, buffer);
} }
add_file(options["bios"], put_on_settings.bind(this, "bios")); add_file(options["bios"], put_on_settings.bind(this, "bios"), true);
add_file(options["vga_bios"], put_on_settings.bind(this, "vga_bios")); add_file(options["vga_bios"], put_on_settings.bind(this, "vga_bios"), true);
add_file(options["cdrom"], make_sync_buffer.bind(this, "cdrom")); add_file(options["cdrom"], make_buffer_object.bind(this, "cdrom"));
add_file(options["hda"], make_sync_buffer.bind(this, "hda")); add_file(options["hda"], make_buffer_object.bind(this, "hda"));
add_file(options["hdb"], make_sync_buffer.bind(this, "hdb")); add_file(options["hdb"], make_buffer_object.bind(this, "hdb"));
add_file(options["fda"], make_sync_buffer.bind(this, "fda")); add_file(options["fda"], make_buffer_object.bind(this, "fda"));
add_file(options["fdb"], make_sync_buffer.bind(this, "fdb")); add_file(options["fdb"], make_buffer_object.bind(this, "fdb"));
if(options["filesystem"]) if(options["filesystem"])
{ {
@ -216,9 +224,6 @@ function V86Starter(options)
add_file({ url: options["filesystem"].basefs, as_text: true, }, function(text) add_file({ url: options["filesystem"].basefs, as_text: true, }, function(text)
{ {
//fs9p.LoadFilesystem({
// basefsURL: options["filesystem"].basefs,
//});
fs9p.OnJSONLoaded(text); fs9p.OnJSONLoaded(text);
}); });
} }