From 1cd1c5e01c871a6bd75bddc12484d6017a03d149 Mon Sep 17 00:00:00 2001 From: gellert Date: Sun, 31 Jul 2016 22:05:36 +0200 Subject: [PATCH] fixes paint toggling --- atom/browser/osr_output_device.cc | 5 +- atom/browser/osr_render_widget_host_view.cc | 4 + default_app/default_app.js | 225 ++------------------ 3 files changed, 27 insertions(+), 207 deletions(-) diff --git a/atom/browser/osr_output_device.cc b/atom/browser/osr_output_device.cc index 2a41963a8220..972f8f2a4f44 100644 --- a/atom/browser/osr_output_device.cc +++ b/atom/browser/osr_output_device.cc @@ -70,8 +70,9 @@ void OffScreenOutputDevice::SetActive(bool active) { return; active_ = active; - if (!active_ && !pending_damage_rect_.IsEmpty()) - OnPaint(pending_damage_rect_); + if (active_) + OnPaint(gfx::Rect(0, 0, viewport_pixel_size_.width(), + viewport_pixel_size_.height())); } void OffScreenOutputDevice::OnPaint(const gfx::Rect& damage_rect) { diff --git a/atom/browser/osr_render_widget_host_view.cc b/atom/browser/osr_render_widget_host_view.cc index 2ceca6a66361..3d6b664b9c6f 100644 --- a/atom/browser/osr_render_widget_host_view.cc +++ b/atom/browser/osr_render_widget_host_view.cc @@ -839,6 +839,10 @@ void OffScreenRenderWidgetHostView::SetPainting(bool painting) { if (begin_frame_timer_.get()) { begin_frame_timer_->SetActive(painting); } + + if (software_output_device_) { + software_output_device_->SetActive(painting); + } } bool OffScreenRenderWidgetHostView::IsPainting() const { diff --git a/default_app/default_app.js b/default_app/default_app.js index b6aabc0bde33..ec6e901bf5f4 100644 --- a/default_app/default_app.js +++ b/default_app/default_app.js @@ -1,19 +1,7 @@ -const {app, BrowserWindow, contentTracing} = require('electron') +const {app, BrowserWindow} = require('electron') const path = require('path') -const options = { - categoryFilter: '*', - traceOptions: 'record-until-full,enable-sampling' -}; - -let mainWindow1 = null -let mainWindow2 = null -let mainWindow3 = null -let mainWindow4 = null -let mainWindow5 = null -let mainWindow6 = null -let mainWindow7 = null -let mainWindow8 = null +let mainWindow = null app.commandLine.appendSwitch('--disable-gpu'); app.commandLine.appendSwitch('--disable-gpu-compositing'); @@ -25,65 +13,7 @@ app.on('window-all-closed', () => { exports.load = (appUrl) => { app.on('ready', () => { - mainWindow1 = new BrowserWindow({ - width: 800, - height: 600, - autoHideMenuBar: true, - backgroundColor: '#FFFFFF', - useContentSize: true, - webPreferences: { - // offscreen: true, - nodeIntegration: false - } - }) - mainWindow1.loadURL(appUrl) - mainWindow1.focus() - var start1, end1 - start1 = +new Date(); - mainWindow1.webContents.on('paint', (e, rect, w, h, data) => { - end1 = +new Date(); - - const d = end1 - start1 - console.log(`browser #1: ${d < 10 ? ` ${d}` : d} ms`) - - start1 = end1 - }) - - /*contentTracing.startRecording(options, () => { - console.log('Tracing started'); - - setTimeout(() => { - contentTracing.stopRecording('', (path) => { - console.log('Tracing data recorded to ' + path); - }); - }, 5000); - });*/ - - mainWindow2 = new BrowserWindow({ - width: 800, - height: 600, - autoHideMenuBar: true, - backgroundColor: '#FFFFFF', - useContentSize: true, - webPreferences: { - nodeIntegration: false - } - }) - mainWindow2.loadURL("http://4danatomy.com") - mainWindow2.focus() - - var start2, end2 - start2 = +new Date(); - mainWindow2.webContents.on('paint', (e, rect, w, h, data) => { - end2 = +new Date(); - - const d = end2 - start2 - console.log(`browser #2: ${d < 10 ? ` ${d}` : d} ms`) - - start2 = end2 - }) - - mainWindow3 = new BrowserWindow({ + mainWindow = new BrowserWindow({ width: 800, height: 600, autoHideMenuBar: true, @@ -94,143 +24,28 @@ exports.load = (appUrl) => { nodeIntegration: false } }) - mainWindow3.loadURL(appUrl) - mainWindow3.focus() + mainWindow.loadURL('file:///Volumes/Elements/dev/electron/spec/fixtures/api/offscreen-rendering.html') + mainWindow.focus() - var start3, end3 - start3 = +new Date(); - mainWindow3.webContents.on('paint', (e, rect, w, h, data) => { - end3 = +new Date(); + mainWindow.webContents.on('dom-ready', () => { + let ping = true + setInterval(() => { + if (ping) { + mainWindow.webContents.startPainting() + } else { + mainWindow.webContents.stopPainting() + } - const d = end3 - start3 - console.log(`browser #3: ${d < 10 ? ` ${d}` : d} ms`) - - start3 = end3 + ping = !ping + }, 3000) }) - mainWindow4 = new BrowserWindow({ - width: 800, - height: 600, - autoHideMenuBar: true, - backgroundColor: '#FFFFFF', - useContentSize: true, - webPreferences: { - offscreen: true, - nodeIntegration: false - } - }) - mainWindow4.loadURL(appUrl) - mainWindow4.focus() + setInterval(() => { + console.log(mainWindow.webContents.isPainting()) + }, 500) - var start4, end4 - start4 = +new Date(); - mainWindow4.webContents.on('paint', (e, rect, w, h, data) => { - end4 = +new Date(); - - const d = end4 - start4 - console.log(`browser #4: ${d < 10 ? ` ${d}` : d} ms`) - - start4 = end4 - }) - - mainWindow5 = new BrowserWindow({ - width: 800, - height: 600, - autoHideMenuBar: true, - backgroundColor: '#FFFFFF', - useContentSize: true, - webPreferences: { - offscreen: true, - nodeIntegration: false - } - }) - mainWindow5.loadURL(appUrl) - mainWindow5.focus() - - var start5, end5 - start5 = +new Date(); - mainWindow5.webContents.on('paint', (e, rect, w, h, data) => { - end5 = +new Date(); - - const d = end5 - start5 - console.log(`browser #5: ${d < 10 ? ` ${d}` : d} ms`) - - start5 = end5 - }) - - mainWindow6 = new BrowserWindow({ - width: 800, - height: 600, - autoHideMenuBar: true, - backgroundColor: '#FFFFFF', - useContentSize: true, - webPreferences: { - offscreen: true, - nodeIntegration: false - } - }) - mainWindow6.loadURL(appUrl) - mainWindow6.focus() - - var start6, end6 - start6 = +new Date(); - mainWindow6.webContents.on('paint', (e, rect, w, h, data) => { - end6 = +new Date(); - - const d = end6 - start6 - console.log(`browser #6: ${d < 10 ? ` ${d}` : d} ms`) - - start6 = end6 - }) - - mainWindow7 = new BrowserWindow({ - width: 800, - height: 600, - autoHideMenuBar: true, - backgroundColor: '#FFFFFF', - useContentSize: true, - webPreferences: { - offscreen: true, - nodeIntegration: false - } - }) - mainWindow7.loadURL(appUrl) - mainWindow7.focus() - - var start7, end7 - start7 = +new Date(); - mainWindow7.webContents.on('paint', (e, rect, w, h, data) => { - end7 = +new Date(); - - const d = end7 - start7 - console.log(`browser #7: ${d < 10 ? ` ${d}` : d} ms`) - - start7 = end7 - }) - - mainWindow8 = new BrowserWindow({ - width: 800, - height: 600, - autoHideMenuBar: true, - backgroundColor: '#FFFFFF', - useContentSize: true, - webPreferences: { - offscreen: true, - nodeIntegration: false - } - }) - mainWindow8.loadURL(appUrl) - mainWindow8.focus() - - var start8, end8 - start8 = +new Date(); - mainWindow8.webContents.on('paint', (e, rect, w, h, data) => { - end8 = +new Date(); - - const d = end8 - start8 - console.log(`browser #8: ${d < 10 ? ` ${d}` : d} ms`) - - start8 = end8 + mainWindow.webContents.on('paint', (e, rect, data) => { + console.log('painting', data.length) }) }) }