umbrella22

修改已废弃的api

...@@ -68,13 +68,38 @@ class MainInit { ...@@ -68,13 +68,38 @@ class MainInit {
68 if (process.env.NODE_ENV === 'development') { 68 if (process.env.NODE_ENV === 'development') {
69 this.mainWindow.webContents.openDevTools({ mode: 'undocked', activate: true }) 69 this.mainWindow.webContents.openDevTools({ mode: 'undocked', activate: true })
70 } 70 }
71 - // 当确定渲染进程卡死时 71 + // 当确定渲染进程卡死时,分类型进行告警操作
72 - this.mainWindow.webContents.on('crashed', () => { 72 + app.on('render-process-gone', (event, webContents, details) => {
73 + const message = {
74 + title: "",
75 + buttons: [],
76 + message: '',
77 + }
78 + switch (details.reason) {
79 + case 'crashed':
80 + message.title = "警告"
81 + message.buttons = ['确定', '退出']
82 + message.message = "图形化进程崩溃,是否进行软重启操作?"
83 + break;
84 + case 'killed':
85 + message.title = "警告"
86 + message.buttons = ['确定', '退出']
87 + message.message = "由于未知原因导致图形化进程被终止,是否进行软重启操作?"
88 + break;
89 + case 'oom':
90 + message.title = "警告"
91 + message.buttons = ['确定', '退出']
92 + message.message = "内存不足,是否软重启释放内存?"
93 + break;
94 +
95 + default:
96 + break;
97 + }
73 dialog.showMessageBox(this.mainWindow, { 98 dialog.showMessageBox(this.mainWindow, {
74 type: 'warning', 99 type: 'warning',
75 - title: '警告', 100 + title: message.title,
76 - buttons: ['重载', '退出'], 101 + buttons: message.buttons,
77 - message: '图形化进程失去响应,是否等待其恢复?', 102 + message: message.message,
78 noLink: true 103 noLink: true
79 }).then(res => { 104 }).then(res => {
80 if (res.response === 0) this.mainWindow.reload() 105 if (res.response === 0) this.mainWindow.reload()
...@@ -94,23 +119,58 @@ class MainInit { ...@@ -94,23 +119,58 @@ class MainInit {
94 else this.mainWindow.close() 119 else this.mainWindow.close()
95 }) 120 })
96 }) 121 })
97 - app.on('gpu-process-crashed', () => { 122 + /**
123 + * 新的gpu崩溃检测,详细参数详见:http://www.electronjs.org/docs/api/app
124 + * @returns {void}
125 + * @author zmr (umbrella22)
126 + * @date 2020-11-27
127 + */
128 + app.on('child-process-gone', (event, details) => {
129 + const message = {
130 + title: "",
131 + buttons: [],
132 + message: '',
133 + }
134 + switch (details.type) {
135 + case 'GPU':
136 + switch (details.reason) {
137 + case 'crashed':
138 + message.title = "警告";
139 + message.buttons = ['确定', '退出'];
140 + message.message = "硬件加速进程已崩溃,是否关闭硬件加速并重启?";
141 + break;
142 + case 'killed':
143 + message.title = "警告";
144 + message.buttons = ['确定', '退出'];
145 + message.message = "硬件加速进程被意外终止,是否关闭硬件加速并重启?";
146 + break;
147 + default:
148 + break;
149 + }
150 + break;
151 +
152 + default:
153 + break;
154 + }
98 dialog.showMessageBox(this.mainWindow, { 155 dialog.showMessageBox(this.mainWindow, {
99 type: 'warning', 156 type: 'warning',
100 - title: '', 157 + title: message.title,
101 - buttons: ['切换', '退出'], 158 + buttons: message.buttons,
102 - message: '侦测到图形处理设备丢失,若继续则会导致软件出现意外故障,是否切换到通用模式,若切换后仍然黑屏请联系我们。', 159 + message: message.message,
103 noLink: true 160 noLink: true
104 }).then(res => { 161 }).then(res => {
105 // 当显卡出现崩溃现象时使用该设置禁用显卡加速模式。 162 // 当显卡出现崩溃现象时使用该设置禁用显卡加速模式。
106 if (res.response === 0) { 163 if (res.response === 0) {
107 - app.disableHardwareAcceleration() 164 + if (details.type === 'GPU') app.disableHardwareAcceleration();
108 this.mainWindow.reload() 165 this.mainWindow.reload()
109 } else { 166 } else {
110 this.mainWindow.close() 167 this.mainWindow.close()
111 } 168 }
112 }) 169 })
113 }) 170 })
171 + app.on('gpu-process-crashed', () => {
172 +
173 + })
114 this.mainWindow.on('closed', () => { 174 this.mainWindow.on('closed', () => {
115 this.mainWindow = null 175 this.mainWindow = null
116 }) 176 })
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
36 <el-button type="primary" round @click="getMessage" 36 <el-button type="primary" round @click="getMessage"
37 >查看消息</el-button 37 >查看消息</el-button
38 > 38 >
39 + <el-button type="primary" round @click="crash">模拟崩溃</el-button>
39 </div> 40 </div>
40 <div class="doc"> 41 <div class="doc">
41 <el-button type="primary" round @click="openNewWin" 42 <el-button type="primary" round @click="openNewWin"
...@@ -168,6 +169,10 @@ export default { ...@@ -168,6 +169,10 @@ export default {
168 }); 169 });
169 }, 170 },
170 methods: { 171 methods: {
172 + crash() {
173 + process.crash();
174 + // process.hang()
175 + },
171 openNewWin() { 176 openNewWin() {
172 let data = { 177 let data = {
173 url: "/form/index", 178 url: "/form/index",
......