emblemscanner: add log and fix camera state
This commit is contained in:
parent
b87693a717
commit
c8be7e4ce4
@ -24,7 +24,7 @@
|
||||
// - Special device rules: camera rules API can override with web_view: true
|
||||
// - no_web_view parameter can override web_view rules for testing
|
||||
|
||||
// Import utility functions from library
|
||||
// Import utility functions fromsimplify api
|
||||
const {
|
||||
get_system_info,
|
||||
get_camera_rule,
|
||||
@ -78,6 +78,7 @@ Page({
|
||||
debug_image_data_url: '',
|
||||
debug_last_result: null,
|
||||
debug_current_frame_url: '', // Current frame being processed
|
||||
logs: [], // Backend logging messages (like camera.js)
|
||||
qrtool_ready: false,
|
||||
// Frame processing statistics
|
||||
frames_processed: 0,
|
||||
@ -111,6 +112,10 @@ Page({
|
||||
return_page: options.return_page || '/pages/test_result_page/test_result_page',
|
||||
no_web_view: no_web_view
|
||||
});
|
||||
|
||||
// Log page load for backend reporting (like camera.js)
|
||||
this.log("emblemscanner page load");
|
||||
this.log("options", JSON.stringify(options));
|
||||
},
|
||||
|
||||
fetchRealIP() {
|
||||
@ -145,7 +150,7 @@ Page({
|
||||
const systemInfo = get_system_info();
|
||||
const phone_model = systemInfo.model;
|
||||
const use_worker = phone_model.toLowerCase().includes("iphone");
|
||||
|
||||
|
||||
this.setData({
|
||||
enable_debug,
|
||||
phone_model,
|
||||
@ -155,7 +160,11 @@ Page({
|
||||
});
|
||||
|
||||
console.log(`Phone model: ${phone_model}, Use worker: ${use_worker}`);
|
||||
|
||||
|
||||
// Log system info for backend reporting (like camera.js)
|
||||
this.log("phone model:", phone_model);
|
||||
this.log("window width", systemInfo.windowWidth, "height", systemInfo.windowHeight);
|
||||
this.log("use worker:", use_worker);
|
||||
},
|
||||
|
||||
/**
|
||||
@ -713,7 +722,7 @@ Page({
|
||||
gd.image_data_urls = dataUrls;
|
||||
gd.qr_code = qrCode;
|
||||
|
||||
upload_image_data_urls(dataUrls, success, fail, "emblemscanner verification");
|
||||
upload_image_data_urls(dataUrls, success, fail, this.data.logs.join("\n"));
|
||||
},
|
||||
|
||||
|
||||
@ -843,14 +852,28 @@ Page({
|
||||
},
|
||||
|
||||
/**
|
||||
* Add debug message to debug overlay
|
||||
* Log function for backend reporting (like camera.js)
|
||||
*/
|
||||
log(...what) {
|
||||
console.log(...what);
|
||||
this.setData({
|
||||
logs: this.data.logs.concat([new Date() + ": " + what.join(" ")])
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Add debug message to debug overlay and backend logs
|
||||
*/
|
||||
addDebugMessage(message) {
|
||||
// Always add to backend logs for reporting
|
||||
this.log(message);
|
||||
|
||||
// Only show in debug overlay if debug is enabled
|
||||
if (!this.data.enable_debug) return;
|
||||
|
||||
|
||||
const timestamp = new Date().toLocaleTimeString();
|
||||
const debugMsg = `${timestamp}: ${message}`;
|
||||
|
||||
|
||||
this.setData({
|
||||
debug_msgs: [debugMsg, ...this.data.debug_msgs].slice(0, 5) // Keep first 5 messages (newest on top)
|
||||
});
|
||||
@ -910,6 +933,9 @@ Page({
|
||||
onShow() {
|
||||
console.log('EmblemScanner page shown - initializing');
|
||||
|
||||
// Log page show for backend reporting (like camera.js)
|
||||
this.log("emblemscanner page show");
|
||||
|
||||
// Reset state machine to initial state
|
||||
this.setData({
|
||||
app_state: 'loading_rules',
|
||||
@ -948,6 +974,23 @@ Page({
|
||||
onHide() {
|
||||
console.log('EmblemScanner page hidden - cleaning up');
|
||||
this.cleanupListener();
|
||||
|
||||
// Reset worker processing state to prevent stale state
|
||||
this.setData({
|
||||
worker_processing: false,
|
||||
app_state: 'loading_rules',
|
||||
busy: true
|
||||
});
|
||||
|
||||
// Clear frame timing and image collection
|
||||
this.lastFrameTime = 0;
|
||||
this.image_data_urls = [];
|
||||
|
||||
// Clear logs to prevent memory buildup
|
||||
this.setData({ logs: [] });
|
||||
|
||||
// Clear zoom function reference
|
||||
this.on_first_qr_found = null;
|
||||
},
|
||||
|
||||
/**
|
||||
@ -958,7 +1001,7 @@ Page({
|
||||
},
|
||||
|
||||
/**
|
||||
* Clean up camera frame listener
|
||||
* Clean up camera frame listener and camera context
|
||||
*/
|
||||
cleanupListener() {
|
||||
if (this.listener) {
|
||||
@ -966,6 +1009,15 @@ Page({
|
||||
this.listener = null;
|
||||
this.addDebugMessage('Camera frame listener stopped');
|
||||
}
|
||||
|
||||
// Clear camera context to prevent multiple camera elements
|
||||
if (this.camera_context) {
|
||||
this.camera_context = null;
|
||||
this.addDebugMessage('Camera context cleared');
|
||||
}
|
||||
|
||||
// Clean up worker state
|
||||
this.cleanupWorkerState();
|
||||
},
|
||||
|
||||
get_worker() {
|
||||
@ -974,6 +1026,23 @@ Page({
|
||||
gd.emblemscanner_worker = this.setupWorker();
|
||||
}
|
||||
return gd.emblemscanner_worker;
|
||||
},
|
||||
|
||||
/**
|
||||
* Clean up worker state without terminating the worker
|
||||
*/
|
||||
cleanupWorkerState() {
|
||||
if (this.data.use_worker) {
|
||||
// Reset worker processing flag
|
||||
this.setData({
|
||||
worker_processing: false
|
||||
});
|
||||
|
||||
// Clear stored worker frame reference
|
||||
this.lastWorkerFrame = null;
|
||||
|
||||
this.addDebugMessage('Worker state cleaned up');
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user