-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ARRISEOS-41099] Repaint page after receiving wpe_compositor_refresh_… #202
base: lgi-master
Are you sure you want to change the base?
Conversation
Currently all our apps which use canvas (lightning or teletext) have this bug: even if apps are not repainting, they are pushing new frames to weston (eg. rdkcentral/Lightning#380) Please create dummy apps based on 1) webgl 2) canvas API and check if visibility change also works there. Additionally, please extend commit description with added flow (in general copy flow analyze from ARRISEOS-41099). |
We should also know why this fix is rather not upstremable, because it seems that everything is working on RPI build:
One of the differences it that our stack is using Weston compositor, and RDK stack is using Westeros. |
Please create stability test to toggle visiblity to true/false on html5 and canvas app which is all the time generating amimations. Test for each app should run for at least 1h. |
Canvas moving objects: canvas_bgra.html.txt Visibility changes successfully in all cases, webgl and canvas. For still tests, frames are rendered only when avc_cli hides/shows applications. Event flow added to commit description. |
adaec90
to
69abcdc
Compare
Script: script.sh.txt I wrote a script and ran two applications: Result: Visibility was changed every 1s for 1h for every app. After 2h the box behaves normally, no crashes or glitches. I run the euronews and site normally plays the video. Memory footprint after 2 hours of tests:
Footprint taken during video playback by euronews after 2h of testing (no restart after test) |
…event The entire page should be repainted after receiving wpe_compositor_refresh_event. This will make webbrowser repond to visibility change from awc_cli. Event flow: We receive an information about handle_configure method execution in wpe-backend-rdk. Thanks to this execution we know that the compositor change state and we need to repaint the app. As we get this info in network process thread we send it to the UI thread in wpe-backend-rdk via Wayland::EventDispatcher::singleton().sendEvent(). The wpe-browser is attached to EventDispatcher so by IPC we get this info in WPEView.cpp in wpe-webkit, wpe_view_backend_input_client callback. This event is received in UI thread while WebPage is working on network process thread. We send the event to the webpage by: page.repaintAfterCompositorReconfigure(); When we receive event on the proper thread, process and proper class we force the app to be repainted. To this we execute: m_drawingArea->forceRepaint(true);
69abcdc
to
afdd2c9
Compare
ba1641a
to
f543094
Compare
…event
The entire page should be repainted after receiving wpe_compositor_refresh_event. This will make webbrowser repond to visibility change from awc_cli.