add a bunch of stuff to reduce CPU usage and redundant/out-of-order/simultaneous lookups

This commit is contained in:
wareya committed 2019-06-30 05:14:59 -04:00
1 parent 8750b77bfc
commit 04a1523837
1 file changed
+32 -15
+32 -15
View File
@@ -1342,17 +1342,24 @@ function is_number(c)
return "1234567890".includes(c); return "1234567890".includes(c);
} }
async function send_lookup(lookup) let last_send_time = performance.now();
let currently_looking_up = false;
async function send_lookup(lookup, time)
{ {
if(currently_looking_up)
return;
let my_time = time + 1;
my_time -= 1;
if(is_number(lookup[0].split("")[0]) && !may_contain_japanese(lookup[5])) if(is_number(lookup[0].split("")[0]) && !may_contain_japanese(lookup[5]))
return; return;
if(!settings.kanji_mode) if(!settings.kanji_mode)
{ {
currently_looking_up = true;
let response = await browser.runtime.sendMessage( let response = await browser.runtime.sendMessage(
{ {
type:"search", type:"search",
text:lookup[0], text:lookup[0],
time:Date.now(), time:my_time,
divexisted:exists_div(), divexisted:exists_div(),
settings:{ settings:{
alternatives_mode:settings.alternatives_mode, alternatives_mode:settings.alternatives_mode,
@@ -1360,9 +1367,14 @@ async function send_lookup(lookup)
strict_epwing:settings.strict_epwing strict_epwing:settings.strict_epwing
} }
}); });
currently_looking_up = false;
if(response) if(response)
response = response["response"]; response = response["response"];
if(my_time < last_send_time)
return;
last_send_time = my_time;
if(response && response != "itsthesame") if(response && response != "itsthesame")
{ {
if(!response.length) if(!response.length)
@@ -1403,9 +1415,9 @@ async function send_lookup(lookup)
} }
} }
function lookup_enqueue(text, x, y, x2, y2, moreText, index) function lookup_enqueue(text, x, y, x2, y2, moreText, index, time)
{ {
send_lookup([text, x, y, x2, y2, moreText, index]); send_lookup([text, x, y, x2, y2, moreText, index], time);
} }
function lookup_cancel() function lookup_cancel()
@@ -1447,7 +1459,7 @@ function lookup_left()
text = text.substring(index); text = text.substring(index);
last_manual_interaction = Date.now(); last_manual_interaction = Date.now();
send_lookup([text, last_lookup[1], last_lookup[2], last_lookup[3], last_lookup[4], last_lookup[5], index]); send_lookup([text, last_lookup[1], last_lookup[2], last_lookup[3], last_lookup[4], last_lookup[5], index], performance.now());
} }
function lookup_right() function lookup_right()
@@ -1462,7 +1474,7 @@ function lookup_right()
text = text.substring(index); text = text.substring(index);
last_manual_interaction = Date.now(); last_manual_interaction = Date.now();
send_lookup([text, last_lookup[1], last_lookup[2], last_lookup[3], last_lookup[4], last_lookup[5], index]); send_lookup([text, last_lookup[1], last_lookup[2], last_lookup[3], last_lookup[4], last_lookup[5], index], performance.now());
} }
let time_of_last = Date.now(); let time_of_last = Date.now();
@@ -1770,11 +1782,20 @@ function ele_data_from_point(doc, x, y)
return [ret, doc, x, y]; return [ret, doc, x, y];
} }
let last_event_time = 0;
function update(event) function update(event)
{ {
if(!settings.enabled) return;
if(!event) return; if(!event) return;
if(event.timeStamp < last_event_time)
return;
last_event_time = event.timeStamp;
last_seen_event = event; last_seen_event = event;
shift_down = event.shiftKey;
ctrl_down = event.ctrlKey;
if((settings.popup_requires_key == 2 && !shift_down) if((settings.popup_requires_key == 2 && !shift_down)
|| (settings.popup_requires_key == 1 && !ctrl_down)) || (settings.popup_requires_key == 1 && !ctrl_down))
{ {
@@ -1784,12 +1805,9 @@ function update(event)
return; return;
} }
if(!settings.enabled) return;
if(settings.popup_follows_mouse && exists_div() && !is_sticky() && platform != "android" ) if(settings.popup_follows_mouse && exists_div() && !is_sticky() && platform != "android" )
{ {
let other = get_div(); let other = get_div();
//let middle = other.firstChild.cloneNode(true);
let middle = other.firstChild; let middle = other.firstChild;
if(middle) if(middle)
{ {
@@ -1797,7 +1815,6 @@ function update(event)
last_lookup[4] = event.pageY; last_lookup[4] = event.pageY;
display_div(middle, event.pageX, event.pageY); display_div(middle, event.pageX, event.pageY);
} }
//move_div(event.pageX, event.pageY);
} }
if(Date.now() - time_of_last < settings.lookuprate) if(Date.now() - time_of_last < settings.lookuprate)
@@ -1968,7 +1985,7 @@ function update(event)
text = text.substring(0, Math.min(text.length, settings.length)); text = text.substring(0, Math.min(text.length, settings.length));
if(text != "") if(text != "")
lookup_enqueue(text, event.clientX, event.clientY, event.pageX, event.pageY, moreText, index); lookup_enqueue(text, event.clientX, event.clientY, event.pageX, event.pageY, moreText, index, event.timeStamp);
else else
lookup_cancel(); lookup_cancel();
} }
@@ -2286,7 +2303,7 @@ function keytest(event)
settings.kanji_mode = !settings.kanji_mode; settings.kanji_mode = !settings.kanji_mode;
browser.storage.local.set({"kanji_mode":settings.kanji_mode}); browser.storage.local.set({"kanji_mode":settings.kanji_mode});
if(exists_div()) if(exists_div())
send_lookup(last_lookup); send_lookup(last_lookup, performance.now());
} }
if(event.key == settings.hotkey_sticky) if(event.key == settings.hotkey_sticky)
{ {
@@ -2296,8 +2313,8 @@ function keytest(event)
{ {
let last_text = last_lookup[0]; let last_text = last_lookup[0];
let last_index = last_lookup[6]; let last_index = last_lookup[6];
send_lookup([" ", last_lookup[1], last_lookup[2], last_lookup[3], last_lookup[4], last_lookup[5], 0]); send_lookup([" ", last_lookup[1], last_lookup[2], last_lookup[3], last_lookup[4], last_lookup[5], 0], performance.now());
send_lookup([last_text, last_lookup[1], last_lookup[2], last_lookup[3], last_lookup[4], last_lookup[5], last_index]); send_lookup([last_text, last_lookup[1], last_lookup[2], last_lookup[3], last_lookup[4], last_lookup[5], last_index], performance.now());
} }
} }
// audio (no mining ui) or mining (yes mining ui) based on number keys // audio (no mining ui) or mining (yes mining ui) based on number keys
@@ -2361,7 +2378,7 @@ function keyuntest(event)
browser.runtime.onMessage.addListener((req, sender) => browser.runtime.onMessage.addListener((req, sender) =>
{ {
if(req.type == "reader_lookup") if(req.type == "reader_lookup")
send_lookup([req.text, req.x, req.y, req.x, req.y, req.text, 0]); send_lookup([req.text, req.x, req.y, req.x, req.y, req.text, 0], performance.now());
else if(req.type == "reader_mode") else if(req.type == "reader_mode")
{ {
console.log("we a readuh!"); console.log("we a readuh!");