|  12-14-2018, 04:36 PM | #316 | 
| 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 | 
			
			@baskerville: And your test binary behaves properly (at least on my H2O ;p), but it does go through 3 PUT_V   . EDIT: In one instance, one of the following refresh calls did not get the rotation memo in time, and used some wonky width/height values  . The last one here, which was a switch to 270 from... 0 or 180 IIRC? Code: strace: Process 1120 attached with 10 threads
[pid  1120] 22:33:18 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {4}, 0x7efdb3fc) = 0
[pid  1120] 22:33:18 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=359, left=734, width=343, height=84}, waveform_mode=NTX_WFM_MODE_A2, update_mode=UPDATE_MODE_PARTIAL, update_marker=5, 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}}}, 0x7efdb4ec) = 0
strace: Process 1151 attached
[pid  1120] 22:33:18 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {5}, 0x7efdb3fc) = 0x3c5
[pid  1120] 22:33:19 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=359, left=734, width=343, height=84}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=6, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:19 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=355, left=557, width=177, height=346}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=7, 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}}}, 0x7efdb4ec) = 0
[pid  1151] 22:33:19 [????????] +++ exited with 0 +++
[pid  1120] 22:33:21 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {7}, 0x7efdb3ac) = 0
[pid  1120] 22:33:21 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=443, left=560, width=171, height=85}, waveform_mode=NTX_WFM_MODE_A2, update_mode=UPDATE_MODE_PARTIAL, update_marker=8, 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}}}, 0x7efdb4ec) = 0
strace: Process 1152 attached
[pid  1120] 22:33:21 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {8strace: Process 1153 attached
 <unfinished ...>
[pid  1153] 22:33:22 [????????] +++ exited with 0 +++
[pid  1120] 22:33:22 [2bb5d1f6] <... ioctl resumed> }, 0x7efdb3ac) = 0x3c3
[pid  1120] 22:33:22 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=443, left=560, width=171, height=85}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=9, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:22 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {9 <unfinished ...>
[pid  1152] 22:33:22 [????????] +++ exited with 0 +++
[pid  1120] 22:33:22 [2bb5d1f6] <... ioctl resumed> }, 0x7efdb3ac) = 0x3af
[pid  1120] 22:33:22 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=443, left=560, width=171, height=85}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=10, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:22 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=613, left=560, width=171, height=85}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=11, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:22 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {10}, 0x7efdb4f4) = 0x3af
[pid  1120] 22:33:23 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {6}, 0x7efdb4f4) = 0
[pid  1120] 22:33:23 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {11}, 0x7efdb4f4) = 0x3e7
[pid  1120] 22:33:23 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {3}, 0x7efdb4f4) = 0
[pid  1120] 22:33:23 [2bb5d1f6] ioctl(3, FBIOPUT_VSCREENINFO, 0x7efdb6b0) = 0
[pid  1120] 22:33:23 [2bb5d1f6] ioctl(3, FBIOPUT_VSCREENINFO, 0x7efdb6b0) = 0
[pid  1120] 22:33:23 [2bb5d1f6] ioctl(3, FBIOPUT_VSCREENINFO, 0x7efdb6b0) = 0
[pid  1120] 22:33:23 [2bb5d1f6] ioctl(3, FBIOGET_FSCREENINFO, 0x7efdb4e8) = 0
[pid  1120] 22:33:23 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=0, left=0, width=1080, height=1440}, waveform_mode=NTX_WFM_MODE_GC16, update_mode=UPDATE_MODE_FULL, update_marker=12, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:23 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {12}, 0x7efdb47c) = 0x3aa
[pid  1120] 22:33:24 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=103, left=0, width=1080, height=668}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=13, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:29 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=0, left=977, width=103, height=103}, waveform_mode=NTX_WFM_MODE_A2, update_mode=UPDATE_MODE_PARTIAL, update_marker=14, 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}}}, 0x7efdb4ec) = 0
strace: Process 1154 attached
[pid  1120] 22:33:29 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {14}, 0x7efdb3fc) = 0x3c6
[pid  1120] 22:33:29 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=0, left=977, width=103, height=103}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=15, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:29 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {13}, 0x7efdb44c) = 0
[pid  1120] 22:33:29 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=103, left=731, width=349, height=513}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=16, 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}}}, 0x7efdb4ec) = 0
[pid  1154] 22:33:30 [????????] +++ exited with 0 +++
[pid  1120] 22:33:35 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {16}, 0x7efdb3fc) = 0
strace: Process 1155 attached
[pid  1120] 22:33:35 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=359, left=734, width=343, height=84}, waveform_mode=NTX_WFM_MODE_A2, update_mode=UPDATE_MODE_PARTIAL, update_marker=17, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:35 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {17}, 0x7efdb3fc) = 0x3c4
[pid  1120] 22:33:36 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=359, left=734, width=343, height=84}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=18, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:36 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=355, left=557, width=177, height=346}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=19, 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}}}, 0x7efdb4ec) = 0
[pid  1155] 22:33:36 [????????] +++ exited with 0 +++
[pid  1120] 22:33:41 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {19}, 0x7efdb3ac) = 0
[pid  1120] 22:33:41 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=358, left=560, width=171, height=85}, waveform_mode=NTX_WFM_MODE_A2, update_mode=UPDATE_MODE_PARTIAL, update_marker=20, 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}}strace: Process 1156 attached
}, 0x7efdb4ec) = 0
[pid  1120] 22:33:41 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {20strace: Process 1157 attached
 <unfinished ...>
[pid  1157] 22:33:41 [????????] +++ exited with 0 +++
[pid  1120] 22:33:41 [2bb5d1f6] <... ioctl resumed> }, 0x7efdb3ac) = 0x3c6
[pid  1120] 22:33:41 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=358, left=560, width=171, height=85}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=21, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:41 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {21 <unfinished ...>
[pid  1156] 22:33:42 [????????] +++ exited with 0 +++
[pid  1120] 22:33:42 [2bb5d1f6] <... ioctl resumed> }, 0x7efdb3ac) = 0x3af
[pid  1120] 22:33:42 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=358, left=560, width=171, height=85}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=22, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:42 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=443, left=560, width=171, height=85}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=23, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:42 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {23}, 0x7efdb4f4) = 0x3ad
[pid  1120] 22:33:43 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {15}, 0x7efdb4f4) = 0
[pid  1120] 22:33:43 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {18}, 0x7efdb4f4) = 0
[pid  1120] 22:33:43 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {22}, 0x7efdb4f4) = 0
[pid  1120] 22:33:43 [2bb5d1f6] ioctl(3, FBIOPUT_VSCREENINFO, 0x7efdb6b0) = 0
[pid  1120] 22:33:43 [2bb5d1f6] ioctl(3, FBIOGET_FSCREENINFO, 0x7efdb4e8) = 0
[pid  1120] 22:33:43 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=0, left=0, width=1440, height=1080}, waveform_mode=NTX_WFM_MODE_GC16, update_mode=UPDATE_MODE_FULL, update_marker=24, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:43 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {24}, 0x7efdb444) = 0x3aa
[pid  1120] 22:33:44 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=0, left=0, width=1440, height=1080}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=25, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:46 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {25}, 0x7efdb3fc) = 0
[pid  1120] 22:33:46 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=0, left=1331, width=109, height=109}, waveform_mode=NTX_WFM_MODE_A2, update_mode=UPDATE_MODE_PARTIAL, update_marker=26, 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}}strace: Process 1158 attached
}, 0x7efdb4ec) = 0
[pid  1120] 22:33:46 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {26}, 0x7efdb3fc) = 0x3c4
[pid  1120] 22:33:47 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=0, left=1331, width=109, height=109}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=27, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:47 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=109, left=1091, width=349, height=513}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=28, 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}}}, 0x7efdb4ec) = 0
[pid  1158] 22:33:47 [????????] +++ exited with 0 +++
[pid  1120] 22:33:49 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {28}, 0x7efdb3fc) = 0
strace: Process 1159 attached
[pid  1120] 22:33:49 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=365, left=1094, width=343, height=84}, waveform_mode=NTX_WFM_MODE_A2, update_mode=UPDATE_MODE_PARTIAL, update_marker=29, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:49 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {29}, 0x7efdb3fc) = 0x3c3
[pid  1120] 22:33:49 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=365, left=1094, width=343, height=84}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=30, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:49 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=361, left=917, width=177, height=346}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=31, 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}}}, 0x7efdb4ec) = 0
[pid  1159] 22:33:49 [????????] +++ exited with 0 +++
[pid  1120] 22:33:51 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {31}, 0x7efdb3ac) = 0
[pid  1120] 22:33:51 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=534, left=920, width=171, height=85}, waveform_mode=NTX_WFM_MODE_A2, update_mode=UPDATE_MODE_PARTIAL, update_marker=32, 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}}strace: Process 1160 attached
}, 0x7efdb4ec) = 0
[pid  1120] 22:33:51 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {32strace: Process 1161 attached
 <unfinished ...>
[pid  1161] 22:33:51 [????????] +++ exited with 0 +++
[pid  1120] 22:33:51 [2bb5d1f6] <... ioctl resumed> }, 0x7efdb3ac) = 0x3c5
[pid  1120] 22:33:51 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=534, left=920, width=171, height=85}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=33, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:51 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {33 <unfinished ...>
[pid  1160] 22:33:52 [????????] +++ exited with 0 +++
[pid  1120] 22:33:52 [2bb5d1f6] <... ioctl resumed> }, 0x7efdb3ac) = 0x3af
[pid  1120] 22:33:52 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=534, left=920, width=171, height=85}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=34, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:52 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=364, left=920, width=171, height=85}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=35, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:52 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {27}, 0x7efdb4f4) = 0
[pid  1120] 22:33:52 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {34}, 0x7efdb4f4) = 0x3af
[pid  1120] 22:33:52 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {30}, 0x7efdb4f4) = 0
[pid  1120] 22:33:52 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {35}, 0x7efdb4f4) = 0x3e6
[pid  1120] 22:33:52 [2bb5d1f6] ioctl(3, FBIOPUT_VSCREENINFO, 0x7efdb6b0) = 0
[pid  1120] 22:33:52 [2bb5d1f6] ioctl(3, FBIOPUT_VSCREENINFO, 0x7efdb6b0) = 0
[pid  1120] 22:33:52 [2bb5d1f6] ioctl(3, FBIOPUT_VSCREENINFO, 0x7efdb6b0) = 0
[pid  1120] 22:33:52 [2bb5d1f6] ioctl(3, FBIOGET_FSCREENINFO, 0x7efdb4e8) = 0
[pid  1120] 22:33:53 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=0, left=0, width=1440, height=1080}, waveform_mode=NTX_WFM_MODE_GC16, update_mode=UPDATE_MODE_FULL, update_marker=36, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:53 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {36}, 0x7efdb47c) = 0x3ab
[pid  1120] 22:33:54 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=109, left=0, width=1440, height=710}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=37, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:54 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=0, left=1007, width=106, height=109}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=38, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:55 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=0, left=1331, width=109, height=109}, waveform_mode=NTX_WFM_MODE_A2, update_mode=UPDATE_MODE_PARTIAL, update_marker=39, 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}}strace: Process 1162 attached
}, 0x7efdb4ec) = 0
[pid  1120] 22:33:56 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {39}, 0x7efdb3fc) = 0x3c5
[pid  1120] 22:33:56 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=0, left=1331, width=109, height=109}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=40, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:56 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {37}, 0x7efdb44c) = 0
[pid  1120] 22:33:56 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=109, left=1091, width=349, height=513}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=41, 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}}}, 0x7efdb4ec) = 0
[pid  1162] 22:33:56 [????????] +++ exited with 0 +++
[pid  1120] 22:33:58 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {41}, 0x7efdb3fc) = 0
[pid  1120] 22:33:58 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=365, left=1094, width=343, height=84}, waveform_mode=NTX_WFM_MODE_A2, update_mode=UPDATE_MODE_PARTIAL, update_marker=42, 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}}}, 0x7efdb4ec) = 0
strace: Process 1163 attached
[pid  1120] 22:33:58 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {42}, 0x7efdb3fc) = 0x3c5
[pid  1120] 22:33:58 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=365, left=1094, width=343, height=84}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=43, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:58 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=361, left=917, width=177, height=346}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=44, 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}}}, 0x7efdb4ec) = 0
[pid  1163] 22:33:59 [????????] +++ exited with 0 +++
[pid  1120] 22:33:59 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {44}, 0x7efdb3ac) = 0
strace: Process 1164 attached
[pid  1120] 22:33:59 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=619, left=920, width=171, height=85}, waveform_mode=NTX_WFM_MODE_A2, update_mode=UPDATE_MODE_PARTIAL, update_marker=45, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:33:59 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {45strace: Process 1165 attached
 <unfinished ...>
[pid  1165] 22:34:00 [????????] +++ exited with 0 +++
[pid  1120] 22:34:00 [2bb5d1f6] <... ioctl resumed> }, 0x7efdb3ac) = 0x3c7
[pid  1120] 22:34:00 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=619, left=920, width=171, height=85}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=46, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:34:00 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {46 <unfinished ...>
[pid  1164] 22:34:00 [????????] +++ exited with 0 +++
[pid  1120] 22:34:00 [2bb5d1f6] <... ioctl resumed> }, 0x7efdb3ac) = 0x3af
[pid  1120] 22:34:00 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=619, left=920, width=171, height=85}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=47, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:34:00 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=534, left=920, width=171, height=85}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=48, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:34:00 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {40}, 0x7efdb4f4) = 0
[pid  1120] 22:34:00 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {38}, 0x7efdb4f4) = 0
[pid  1120] 22:34:00 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {43}, 0x7efdb4f4) = 0
[pid  1120] 22:34:00 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {47}, 0x7efdb4f4) = 0x3af
[pid  1120] 22:34:01 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {48}, 0x7efdb4f4) = 0x3e7
[pid  1120] 22:34:01 [2bb5d1f6] ioctl(3, FBIOPUT_VSCREENINFO, 0x7efdb6b0) = 0
[pid  1120] 22:34:01 [2bb5d1f6] ioctl(3, FBIOGET_FSCREENINFO, 0x7efdb4e8) = 0
[pid  1120] 22:34:01 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=0, left=0, width=1080, height=1440}, waveform_mode=NTX_WFM_MODE_GC16, update_mode=UPDATE_MODE_FULL, update_marker=49, 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}}}, 0x7efdb4ec) = 0
[pid  1120] 22:34:01 [2bb5d1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE_V1, {49}, 0x7efdb444) = 0x3aa
[pid  1120] 22:34:02 [2bb5d1f6] ioctl(3, MXCFB_SEND_UPDATE_V1_NTX, {update_region={top=0, left=0, width=1437, height=1440}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=50, 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}}}, 0x7efdb4ec) = -1 EINVAL (Invalid argument)
^Cstrace: Process 1120 detached
strace: Process 1121 detached
strace: Process 1122 detached
strace: Process 1123 detached
strace: Process 1124 detached
strace: Process 1125 detached
strace: Process 1126 detached
strace: Process 1127 detached
strace: Process 1128 detached
strace: Process 1132 detached . Code: Plato is running on a Kobo Aura H₂O.
The framebuffer resolution is 1080 by 1440.
Framebuffer rotation: 1 -> 3.
Framebuffer rotation: 0 -> 2.
Framebuffer rotation: 2 -> 0.
Framebuffer rotation: 3 -> 1.Last edited by NiLuJe; 12-14-2018 at 09:25 PM. | 
|   |   | 
|  12-15-2018, 05:39 AM | #317 | |
| Evangelist            Posts: 446 Karma: 305160 Join Date: Aug 2015 Device: Kobo Glo HD, Kobo Aura ONE | 
			
			I would like to avoid introducing device specific code in this module, so the 3 PUT_V are expected. My only concern is to only have one PUT_V on well behaved devices. Quote: 
 This has to do with the fact that resizing isn't implemented for menus yet. | |
|   |   | 
| Advert | |
|  | 
|  12-15-2018, 11:10 AM | #318 | ||
| Evangelist            Posts: 446 Karma: 305160 Join Date: Aug 2015 Device: Kobo Glo HD, Kobo Aura ONE | Quote: 
 I've just written the following installation instructions for Windows (I'm assuming that's what the average person uses): Quote: 
 | ||
|   |   | 
|  12-15-2018, 12:53 PM | #319 | 
| 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 | 
			
			@baskerville: Yeah, that's perfectly understandable (and makes sense after taking a look at the new code)   . One small nitpick on that commit's comments: the ioctl actually do "succeed" (they return 0), they just happen to not be doing anything useful  . | 
|   |   | 
|  12-15-2018, 01:40 PM | #320 | ||
| Evangelist            Posts: 432 Karma: 2303460 Join Date: Aug 2017 Device: Pocketbook Inkpad 3, Onyx T76ML, Kobo H2O Edition 1, Kobo Mini | Quote: 
 I am extremely suspicious of those KoboRoot.tgz patches. I never know if they add things or remove things or both randomly. What will happen to other patches that I already applied? Will they get deleted or will they stay intact and how do I know? And does it make a difference which version of KSM I have? I have KSM 07, I think (that's what it says sometimes when I power off). Quote: 
 or should it be .adds/plato/plato-VERSION directory and then /css /fonts etc? Anyway, I have applied the patch and filled .adds/plato with /css /fonts etc with ejects and restarts as described. The result: No additions in my KSM menu. | ||
|   |   | 
| Advert | |
|  | 
|  12-15-2018, 02:28 PM | #321 | |
| Wizard            Posts: 3,489 Karma: 2914715 Join Date: Jun 2012 Device: kobo touch | Quote: 
 | |
|   |   | 
|  12-15-2018, 03:22 PM | #322 | 
| Evangelist            Posts: 446 Karma: 305160 Join Date: Aug 2015 Device: Kobo Glo HD, Kobo Aura ONE | |
|   |   | 
|  12-15-2018, 05:19 PM | #323 | |
| Evangelist            Posts: 446 Karma: 1084584 Join Date: Aug 2007 Location: Sisak, Croatia Device: Kobo Aura H2O, Kobo Aura ONE | Quote: 
 Thing is, KSM, as koreader, plato, etc. need to know different hardware and software and they don't work in a way that they can recognize different software and hardware just like that. They need to be programmed to recognize different software and hardware. So, go to latest KSM if you want to use Plato. | |
|   |   | 
|  12-15-2018, 11:20 PM | #324 | |
| Evangelist            Posts: 432 Karma: 2303460 Join Date: Aug 2017 Device: Pocketbook Inkpad 3, Onyx T76ML, Kobo H2O Edition 1, Kobo Mini | Quote: 
 These details that have come up are not reducible. When they are not mentioned where they should be, such as the Guide, people will not get Plato to work. For the time being, I will keep my KSM as it is, because it is working fine. I will try Plato again once I decide to upgrade KSM. | |
|   |   | 
|  12-16-2018, 05:34 AM | #325 | |
| Wizard            Posts: 3,489 Karma: 2914715 Join Date: Jun 2012 Device: kobo touch | Quote: 
 | |
|   |   | 
|  12-17-2018, 03:15 AM | #326 | 
| Evangelist            Posts: 446 Karma: 305160 Join Date: Aug 2015 Device: Kobo Glo HD, Kobo Aura ONE | 
			
			@NiLuJe: Is there a refresh mode slightly slower than NTX_WFM_MODE_A2 but capable of displaying more colors?
		 | 
|   |   | 
|  12-17-2018, 11:15 AM | #327 | 
| 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 | 
			
			@baskerville: Yep, DU. You can also play with GC4, but it's been used much less often (as in, almost never, actually  ). OTOH, I can't remember what makes GC4 so quirky. It's probably slower than DU? Might be as simple as that  . So, yeah, DU  . It's actually what replaces A2 on REAGL-devices in Kindle-land. (Well, there still is an A2, but it interacts really badly with REAGL, unlike DU). It (DU) should handle icons with alpha-blending related AA properly, for instance. Last edited by NiLuJe; 12-17-2018 at 11:27 AM. | 
|   |   | 
|  12-18-2018, 08:52 AM | #328 | 
| Evangelist            Posts: 446 Karma: 305160 Join Date: Aug 2015 Device: Kobo Glo HD, Kobo Aura ONE | 
			
			@tshering: Please note that the current Plato version is 0.6.1, not 6.1.
		 | 
|   |   | 
|  12-18-2018, 09:44 AM | #329 | 
| Wizard            Posts: 3,489 Karma: 2914715 Join Date: Jun 2012 Device: kobo touch | |
|   |   | 
|  12-19-2018, 07:38 PM | #330 | 
| 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 | 
			
			And to finally answer my own questions as to how the Forma was handling rotation (for gyro-induced rota): In the Library (which only does Portrait/Inverted Portrait): Code: [pid   178] 01:23:19 [7245e1f6] ioctl(3, FBIOGET_VSCREENINFO, 0x7e9e84e8) = 0
[pid   178] 01:23:19 [7245e1f6] ioctl(3, FBIOPUT_VSCREENINFO, 0x7e9e84e8) = 0
[pid   178] 01:23:19 [7245e1f6] ioctl(3, FBIOGET_FSCREENINFO, 0x7e9e84a4) = 0
[pid   178] 01:23:19 [7245e1f6] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=0, left=0, width=1440, height=1920}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_FULL, update_marker=287, temp=TEMP_USE_AMBIENT, flags=0, dither_mode=EPDC_FLAG_USE_DITHERING_PASSTHROUGH, quant_bit=0, alt_buffer_data={phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}, 0x7e9e82f8) = 0
[pid   178] 01:23:19 [7245e1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE, {update_marker=286, collision_test=0}, 0x7e9e82e0) = 0
[pid   178] 01:23:19 [7245e1f6] ioctl(3, MXCFB_WAIT_FOR_UPDATE_COMPLETE, {update_marker=287, collision_test=0}, 0x7e9e82e0) = 0x1bfCode: [pid   178] 01:23:41 [7245e1f6] ioctl(3, FBIOGET_VSCREENINFO, 0x7e9e84e8) = 0
[pid   178] 01:23:41 [7245e1f6] ioctl(3, FBIOPUT_VSCREENINFO, 0x7e9e84e8) = 0
[pid   178] 01:23:41 [7245e1f6] ioctl(3, FBIOGET_FSCREENINFO, 0x7e9e84a4) = 0
[pid   178] 01:23:41 [7245e1f6] ioctl(3, FBIOGET_VSCREENINFO, 0x7e9e83b0) = 0
[pid   178] 01:23:41 [7245e1f6] ioctl(3, MXCFB_SEND_UPDATE, {update_region={top=0, left=0, width=1920, height=1440}, waveform_mode=WAVEFORM_MODE_AUTO, update_mode=UPDATE_MODE_PARTIAL, update_marker=293, temp=TEMP_USE_AMBIENT, flags=0, dither_mode=EPDC_FLAG_USE_DITHERING_PASSTHROUGH, quant_bit=0, alt_buffer_data={phys_addr=0, width=0, height=0, alt_update_region={top=0, left=0, width=0, height=0}}}, 0x7e9e82f8) = 0 | 
|   |   | 
|  | 
| 
 | 
|  Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post | 
| Kindle -- KOReader: a document reader for PDF, DJVU, EPUB, FB2, HTML, ... (GPLv3) | hawhill | KOReader | 1238 | 08-22-2025 07:41 AM | 
| PocketBook-KOReader: a document reader for PDF, DJVU, EPUB, FB2, CBZ, ... (AGPLv3) | chrox | KOReader | 586 | 08-02-2025 03:46 AM | 
| KOReader: a document reader for PDF, DJVU, EPUB, FB2, HTML, ... (GPLv3) | hawhill | Kindle Developer's Corner | 1289 | 04-07-2025 10:18 AM | 
| v3 vs. v3+ as a pdf/DjVu reader | hedonism_bot | HanLin eBook | 7 | 11-02-2010 08:16 PM |