diff --git a/src/i18n/lang/en-US/settings.ts b/src/i18n/lang/en-US/settings.ts index c827188..bd83576 100644 --- a/src/i18n/lang/en-US/settings.ts +++ b/src/i18n/lang/en-US/settings.ts @@ -50,7 +50,15 @@ export default { englishText: 'The quick brown fox jumps over the lazy dog', japaneseText: 'あいうえお かきくけこ さしすせそ', koreanText: '가나다라마 바사아자차 카타파하' - } + }, + gpuAcceleration: 'GPU Acceleration', + gpuAccelerationDesc: + 'Enable or disable hardware acceleration, can improve rendering performance but may increase GPU load', + gpuAccelerationRestart: + 'Changing GPU acceleration settings requires application restart to take effect', + gpuAccelerationChangeSuccess: + 'GPU acceleration settings updated, restart application to take effect', + gpuAccelerationChangeError: 'Failed to update GPU acceleration settings' }, playback: { quality: 'Audio Quality', diff --git a/src/i18n/lang/ja-JP/settings.ts b/src/i18n/lang/ja-JP/settings.ts index 3b08b70..92258d7 100644 --- a/src/i18n/lang/ja-JP/settings.ts +++ b/src/i18n/lang/ja-JP/settings.ts @@ -50,7 +50,14 @@ export default { englishText: 'The quick brown fox jumps over the lazy dog', japaneseText: 'あいうえお かきくけこ さしすせそ', koreanText: '가나다라마 바사아자차 카타파하' - } + }, + gpuAcceleration: 'GPUアクセラレーション', + gpuAccelerationDesc: + 'ハードウェアアクセラレーションを有効または無効にします。レンダリングパフォーマンスを向上させますが、GPU負荷が増える可能性があります', + gpuAccelerationRestart: 'GPUアクセラレーション設定の変更はアプリの再起動後に有効になります', + gpuAccelerationChangeSuccess: + 'GPUアクセラレーション設定を更新しました。アプリの再起動後に有効になります', + gpuAccelerationChangeError: 'GPUアクセラレーション設定の更新に失敗しました' }, playback: { quality: '音質設定', diff --git a/src/i18n/lang/ko-KR/settings.ts b/src/i18n/lang/ko-KR/settings.ts index c025939..17c5d2e 100644 --- a/src/i18n/lang/ko-KR/settings.ts +++ b/src/i18n/lang/ko-KR/settings.ts @@ -50,7 +50,14 @@ export default { englishText: 'The quick brown fox jumps over the lazy dog', japaneseText: 'あいうえお かきくけこ さしすせそ', koreanText: '가나다라마 바사아자차 카타파하' - } + }, + gpuAcceleration: 'GPU 가속', + gpuAccelerationDesc: + 'GPU 가속을 사용하면 애니메이션이 빠르게 재생되고 애니메이션이 느리게 재생되는 것보다 느릴 수 있습니다.', + gpuAccelerationRestart: 'GPU 가속 설정을 변경하면 애플리케이션을 다시 시작해야 합니다', + gpuAccelerationChangeSuccess: + 'GPU 가속 설정이 업데이트되었습니다. 애플리케이션을 다시 시작하여 적용하십시오', + gpuAccelerationChangeError: 'GPU 가속 설정 업데이트에 실패했습니다' }, playback: { quality: '음질 설정', diff --git a/src/i18n/lang/zh-CN/settings.ts b/src/i18n/lang/zh-CN/settings.ts index c9e47cb..d3a150c 100644 --- a/src/i18n/lang/zh-CN/settings.ts +++ b/src/i18n/lang/zh-CN/settings.ts @@ -50,7 +50,12 @@ export default { englishText: 'The quick brown fox jumps over the lazy dog', japaneseText: 'あいうえお かきくけこ さしすせそ', koreanText: '가나다라마 바사아자차 카타파하' - } + }, + gpuAcceleration: 'GPU加速', + gpuAccelerationDesc: '启用或禁用硬件加速,可以提高渲染性能但可能会增加GPU负载', + gpuAccelerationRestart: '更改GPU加速设置需要重启应用后生效', + gpuAccelerationChangeSuccess: 'GPU加速设置已更新,重启应用后生效', + gpuAccelerationChangeError: 'GPU加速设置更新失败' }, playback: { quality: '音质设置', diff --git a/src/main/index.ts b/src/main/index.ts index 69f91d8..bb4f280 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -9,6 +9,7 @@ import { initializeConfig } from './modules/config'; import { initializeFileManager } from './modules/fileManager'; import { initializeFonts } from './modules/fonts'; import { initializeLoginWindow } from './modules/loginWindow'; +import { initializeOtherApi } from './modules/otherApi'; import { initializeRemoteControl } from './modules/remoteControl'; import { initializeShortcuts, registerShortcuts } from './modules/shortcuts'; import { initializeTray, updateCurrentSong, updatePlayState, updateTrayMenu } from './modules/tray'; @@ -16,7 +17,6 @@ import { setupUpdateHandlers } from './modules/update'; import { createMainWindow, initializeWindowManager, setAppQuitting } from './modules/window'; import { initWindowSizeManager } from './modules/window-size'; import { startMusicApi } from './server'; -import { initializeOtherApi } from './modules/otherApi'; // 导入所有图标 const iconPath = join(__dirname, '../../resources'); @@ -27,9 +27,9 @@ const icon = nativeImage.createFromPath( let mainWindow: Electron.BrowserWindow; // 初始化应用 -function initialize() { - // 初始化配置管理 - const store = initializeConfig(); +function initialize(configStore: any) { + // 使用已初始化的配置存储 + const store = configStore; // 设置初始语言 const savedLanguage = store.get('set.language') as Language; @@ -76,6 +76,23 @@ const isSingleInstance = app.requestSingleInstanceLock(); if (!isSingleInstance) { app.quit(); } else { + // 在应用准备就绪前初始化GPU加速设置 + // 必须在 app.ready 之前调用 disableHardwareAcceleration + try { + // 初始化配置管理以获取GPU加速设置 + const store = initializeConfig(); + const enableGpuAcceleration = store.get('set.enableGpuAcceleration', true) as boolean; + + if (!enableGpuAcceleration) { + console.log('GPU加速已禁用'); + app.disableHardwareAcceleration(); + } else { + console.log('GPU加速已启用'); + } + } catch (error) { + console.error('GPU加速设置初始化失败:', error); + // 如果配置读取失败,默认启用GPU加速 + } // 当第二个实例启动时,将焦点转移到第一个实例的窗口 app.on('second-instance', () => { if (mainWindow) { @@ -100,12 +117,15 @@ if (!isSingleInstance) { // 初始化窗口大小管理器 initWindowSizeManager(); + // 重新初始化配置管理以获取完整的配置存储 + const store = initializeConfig(); + // 初始化应用 - initialize(); + initialize(store); // macOS 激活应用时的处理 app.on('activate', () => { - if (mainWindow === null) initialize(); + if (mainWindow === null) initialize(store); }); }); diff --git a/src/main/modules/config.ts b/src/main/modules/config.ts index 7e54e87..40cd8d9 100644 --- a/src/main/modules/config.ts +++ b/src/main/modules/config.ts @@ -25,6 +25,7 @@ type SetConfig = { fontScope: 'global' | 'lyric'; language: string; showTopAction: boolean; + enableGpuAcceleration: boolean; }; interface StoreType { set: SetConfig; @@ -57,6 +58,23 @@ export function initializeConfig() { _.returnValue = value || ''; }); + // GPU加速设置更新处理 + // 注意:GPU加速设置必须在应用启动时在app.ready之前设置才能生效 + ipcMain.on('update-gpu-acceleration', (event, enabled: boolean) => { + try { + console.log('GPU加速设置更新:', enabled); + store.set('set.enableGpuAcceleration', enabled); + + // GPU加速设置需要重启应用才能生效 + event.sender.send('gpu-acceleration-updated', enabled); + console.log('GPU加速设置已保存,重启应用后生效'); + } catch (error) { + console.error('GPU加速设置更新失败:', error); + const errorMessage = error instanceof Error ? error.message : String(error); + event.sender.send('gpu-acceleration-update-error', errorMessage); + } + }); + return store; } diff --git a/src/main/set.json b/src/main/set.json index 93d8bd4..5591af1 100644 --- a/src/main/set.json +++ b/src/main/set.json @@ -31,5 +31,6 @@ "manualTheme": "light", "isMenuExpanded": false, "customApiPlugin": "", - "customApiPluginName": "" + "customApiPluginName": "", + "enableGpuAcceleration": true } diff --git a/src/renderer/views/set/index.vue b/src/renderer/views/set/index.vue index d2636ed..ecc0ecf 100644 --- a/src/renderer/views/set/index.vue +++ b/src/renderer/views/set/index.vue @@ -197,6 +197,29 @@ + + +