BLAM!
Posts: 13,506
Karma: 26047202
Join Date: Jun 2010
Location: Paris, France
Device: Kindle 2i, 3g, 4, 5w, PW, PW2, PW5; Kobo H2O, Forma, Elipsa, Sage, C2E
|
@Patricius / @howyoudoin:
Ouch. Indeed, it does a bitonal refresh on word selection, but on *the full screen* (instead of only for the underline & potentially the handles, which would seem more sensible; and we get another confirmation that the top 11 pixels are behind the bezel on the H2O ^^) >_<".
I forgot to check this last time, but switching LeanAndMean off *might* help with that, since that's the same pattern of refreshes I've been seeing with menu highlights.
Code:
┌─(ROOT@(none):pts/0)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────(/)─┐
└─(0.50:44%:14:33:100%:#)── strace -fitv -e trace=ioctl -p $(pidof nickel) ──(Sat, May 02)─┘
Process 516 attached with 14 threads
[pid 516] 14:33:51 [2f1b21bc] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=11, left=0, width=1080, height=1429}, waveform_mode=NTX_WFM_MODE_A2, update_mode=UPDATE_MODE_PARTIAL, update_marker=605, temp=TEMP_USE_AMBIENT, flags=EPDC_FLAG_FORCE_MONOCHROME, alt_buffer_data={virt_addr=(nil), phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}) = 0
[pid 516] 14:33:51 [2f1b21bc] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE, {605}) = 962
[pid 516] 14:33:51 [2f1b21bc] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=11, left=0, width=1080, height=1429}, waveform_mode=NTX_WFM_MODE_A2, update_mode=UPDATE_MODE_PARTIAL, update_marker=606, temp=TEMP_USE_AMBIENT, flags=EPDC_FLAG_FORCE_MONOCHROME, alt_buffer_data={virt_addr=(nil), phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}) = 0
[pid 516] 14:33:51 [2f1b21bc] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE, {606}) = 981
[pid 516] 14:33:53 [2f1b21bc] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=24, left=26, width=1028, height=398}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=607, temp=TEMP_USE_AMBIENT, flags=0, alt_buffer_data={virt_addr=(nil), phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}) = 0
[pid 516] 14:33:53 [2f1b21bc] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=614, left=580, width=297, height=81}, waveform_mode=NTX_WFM_MODE_A2, update_mode=UPDATE_MODE_PARTIAL, update_marker=608, temp=TEMP_USE_AMBIENT, flags=EPDC_FLAG_FORCE_MONOCHROME, alt_buffer_data={virt_addr=(nil), phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}) = 0
[pid 516] 14:33:53 [2f1b21bc] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=705, left=700, width=281, height=130}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=609, temp=TEMP_USE_AMBIENT, flags=0, alt_buffer_data={virt_addr=(nil), phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}) = 0
[pid 516] 14:33:53 [2f1b21bc] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE, {608}) = 961
[pid 516] 14:33:53 [2f1b21bc] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE, {609}) = 972
[pid 516] 14:33:53 [2f1b21bc] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=307, left=70, width=178, height=70}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=610, temp=TEMP_USE_AMBIENT, flags=0, alt_buffer_data={virt_addr=(nil), phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}) = 0
[pid 516] 14:33:53 [2f1b21bc] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=307, left=70, width=178, height=70}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=611, temp=TEMP_USE_AMBIENT, flags=0, alt_buffer_data={virt_addr=(nil), phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}) = 0
[pid 3165] 14:34:02 [????????] +++ exited with 0 +++
[pid 516] 14:34:11 [2f1b21bc] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=24, left=26, width=1028, height=398}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=612, temp=TEMP_USE_AMBIENT, flags=0, alt_buffer_data={virt_addr=(nil), phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}) = 0
[pid 516] 14:34:11 [2f1b21bc] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=11, left=0, width=1080, height=1429}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=613, temp=TEMP_USE_AMBIENT, flags=0, alt_buffer_data={virt_addr=(nil), phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}) = 0
[pid 516] 14:34:12 [2f1b21bc] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE, {613}) = 940
[pid 516] 14:34:12 [2f1b21bc] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=614, left=616, width=1, height=11}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=614, temp=TEMP_USE_AMBIENT, flags=0, alt_buffer_data={virt_addr=(nil), phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}) = 0
[pid 516] 14:34:12 [2f1b21bc] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=614, left=842, width=1, height=11}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=615, temp=TEMP_USE_AMBIENT, flags=0, alt_buffer_data={virt_addr=(nil), phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}) = 0
[pid 516] 14:34:12 [2f1b21bc] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=625, left=580, width=71, height=70}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=616, temp=TEMP_USE_AMBIENT, flags=0, alt_buffer_data={virt_addr=(nil), phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}) = 0
[pid 516] 14:34:12 [2f1b21bc] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=625, left=806, width=71, height=70}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=617, temp=TEMP_USE_AMBIENT, flags=0, alt_buffer_data={virt_addr=(nil), phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}) = 0
[pid 516] 14:34:12 [2f1b21bc] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=705, left=700, width=281, height=130}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=618, temp=TEMP_USE_AMBIENT, flags=0, alt_buffer_data={virt_addr=(nil), phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}) = 0
[pid 516] 14:34:12 [2f1b21bc] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE, {617}) = 938
[pid 516] 14:34:13 [2f1b21bc] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE, {618}) = 997
[pid 516] 14:34:13 [2f1b21bc] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE, {615}) = 0
[pid 516] 14:34:13 [2f1b21bc] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE, {616}) = 0
[pid 516] 14:34:13 [2f1b21bc] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE, {614}) = 0
The original intent was probably to make highlighting stuff snappier...
Incidentally, this is also how Kindles behave, except, well, they do so in a much better fashion, both because waveform handling & eink drivers are just plain better there, but also because the window manager is far more intricate, and behaves much more smartly regarding damage handling (in this instance, it'll almost always force a black-flash to recover when closing the dictionary/highlight popups).
[Although, granted, that's not perfect either, but we've hit the same kind of issues on KOReader with highlights & large popup handling: hard to find a good tradeoff between snappy and not murdering text rendering  ]
<rant>
I had to take out my PW2 to check, and it made me sad to see how much snappier it is in comparison ;'( [granted, there's also a large CPU gap to take into account there, iMX5 vs. iMX6].
Wish Kobo would stop putting out weird hybrid devices, like the Aura, with its Pearl screen & reagl waveform handling, or the H2O & Glo HD, with their Carta screen *without* reagl waveform handling ;'(.
</rant>
Last edited by NiLuJe; 05-02-2015 at 09:50 AM.
|