diff --git a/frontend/src/renderer/main/main.js b/frontend/src/renderer/main/main.js index fc338ea0..d1de71c0 100644 --- a/frontend/src/renderer/main/main.js +++ b/frontend/src/renderer/main/main.js @@ -8,6 +8,12 @@ let mainWindow; let localServer; let backendProcess; + app.disableDomainBlockingFor3DAPIs(); +// app.disableHardwareAcceleration(); + app.commandLine.appendSwitch('ignore-gpu-blocklist'); + app.commandLine.appendSwitch('enable-webgl'); + app.commandLine.appendSwitch('use-angle', 'd3d11'); + ipcMain.handle('generate-report-pdf', async (event, payload) => { const win = BrowserWindow.fromWebContents(event.sender); if (!win) throw new Error('窗口未找到'); @@ -193,7 +199,6 @@ function createWindow() { nodeIntegration: false, contextIsolation: true, // sandbox: false, // 显式关闭沙盒,避免 preload 加载问题 - // backgroundThrottling: false, preload: path.join(__dirname, 'preload.js') }, icon: path.join(__dirname, '../public/logo.png'), @@ -311,7 +316,7 @@ function startLocalServer(callback) { // 应用事件处理 // 关闭硬件加速以规避 GPU 进程异常导致的闪烁 -app.disableHardwareAcceleration(); +// app.disableHardwareAcceleration(); app.whenReady().then(createWindow); app.on('window-all-closed', () => { @@ -334,4 +339,4 @@ app.on('activate', () => { // 应用退出前清理资源 app.on('before-quit', () => { stopBackendService(); -}); \ No newline at end of file +}); diff --git a/frontend/src/renderer/main/preload.js b/frontend/src/renderer/main/preload.js index 511db204..222465b0 100644 --- a/frontend/src/renderer/main/preload.js +++ b/frontend/src/renderer/main/preload.js @@ -1,6 +1,15 @@ -const { contextBridge, ipcRenderer } = require('electron'); +const { contextBridge } = require('electron'); contextBridge.exposeInMainWorld('electronAPI', { - generateReportPdf: (payload) => ipcRenderer.invoke('generate-report-pdf', payload), + generateReportPdf: (payload) => { + try { + return window?.electron?.ipcRenderer?.invoke('generate-report-pdf', payload) + } catch {} + }, getBackendUrl: () => process.env.BACKEND_URL || 'http://localhost:5000', + getSocketTransports: () => { + const allowPolling = process.env.ALLOW_POLLING === '1' + return allowPolling ? ['websocket', 'polling'] : ['websocket'] + } }); + diff --git a/frontend/src/renderer/src/views/Detection.vue b/frontend/src/renderer/src/views/Detection.vue index 538a8556..1ab2c1de 100644 --- a/frontend/src/renderer/src/views/Detection.vue +++ b/frontend/src/renderer/src/views/Detection.vue @@ -133,7 +133,7 @@ {{ headlist.rotation }}°