The main modifications are:
- I changed AwContents::RequestDrawGL to call AwContents::DrawGL directly using Process-Sync mode when canvas input is NULL
- Android 4.4 seems to have only Draw mode DrawGL call, so I added Process-Sync mode call in DrawGLFunctor::operator()
- I changed 5 ".Wait()" calls in InProcessCommandBuffer class implementations to let it pass through when on 4.4 and in UI thread
- I also fixed the InProcessCommandBuffer::PerformIdleWork() deadlock problem
in some situcations AwContents::RequestDrawGL is not called from inside of OnDraw, and IPCB::PerformIdleWork() recursively calls itself, whose AutoLock causes deadlock.
It now runs fluently on Nexus 4, but has a problem on a special Mobile Phone, which is using Android 4.4.2 and 1920x1080p screen.
The problem is, when browsing http://tieba.baidu.com/ ,
- It initially loads page and displays OK
- when i `slowly` scrolls the page up-down, some of the page content which should slide in at once, but just delays 2~3s to display
- when i `fastly` flips the page up-down, the upper side and bottom side of content becomes blank-white, no displaying back
I also test it on 2 other 1080p-screen mobile phones, there is no such problems.
- Does this relate to the problematic `1080p` phone, or is there any roots in tiling or OpenGL ES graphics driver?
- Maybe WebKit/Bink core does not paint the part, or cc compositor does not do the duty of compositing work?
PS: Hi baoliu, you have said the work porting Chromium M38+ to Android 4.4 is not supported by Google officially, But hope to hear your wise judgement.
The problematic URL is: http://tieba.baidu.com/?page=discovery
On Desktop Chrome, F12 to open developer console, then choose Nexus 5 as simulator.
I find the top TAB div element switches between
<div class="tab_head tab_index_head j_tab_index_head blue_kit light_tab_head tab_index_head_clone" style="display: -webkit-box; opacity: 1;"> ...
and
<div class="tab_head tab_index_head j_tab_index_head blue_kit light_tab_head tab_index_head_clone" style="display: -webkit-box; opacity: 0;">