Skip to content
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

Skim dialog - possible minor flash_ui issue #7326

Closed
hius07 opened this issue Feb 21, 2021 · 63 comments · Fixed by #7332
Closed

Skim dialog - possible minor flash_ui issue #7326

hius07 opened this issue Feb 21, 2021 · 63 comments · Fixed by #7332

Comments

@hius07
Copy link
Member

hius07 commented Feb 21, 2021

  • KOReader version: 2021.02-20-ge582036_2021-02-21
  • Device: Kindle PW2

At first, the new Skim dialog without the header and with the star button looks and works great.

Issue

After pressing Next (or Previous) chapter button part of it (vertical line) becomes greyed.

I made a screenshot but the issue is not visible: on the screenshot the full button is black.

@yparitcher
Copy link
Member

see #7262 (comment)

and #7325

@NiLuJe
Copy link
Member

NiLuJe commented Feb 21, 2021

I'm going to need more details, because I can't reproduce anything like this (even on a PW2), and nearly everything is fenced in that widget, so if there's one place were races won't happen, it's there ;).

@yparitcher
Copy link
Member

I can reproduce some weirdness in the progress bar (the document bleeds through) when the skimto is in transparent mode

@yparitcher
Copy link
Member

And the button which was pressed last bleeds through to the document also

@yparitcher
Copy link
Member

ie: part of the widget loses transparency and part does not leading to inconsistencies.

@hius07
Copy link
Member Author

hius07 commented Feb 21, 2021

The latest nightly, open fb2, call Skim, press Next chapter (upper right), the vertical line inside the button becomes grey. The same with the Previous chapter button.
Immediately after the diagonal swipe the full button becomes black, so the screenshot cannot show the issue.

1

@NiLuJe
Copy link
Member

NiLuJe commented Feb 21, 2021

Oh, that's just ghosting. Nothing much we can do about that.


@yparitcher: I don't think I can reproduce any of that, everything stays transparent as it ought to. That might not have been the case before, but that was a bug ;). Stuff may be slightly flickery during the button's unhighlight refresh, but it should settle when it's done.

@NiLuJe
Copy link
Member

NiLuJe commented Feb 21, 2021

@hius07: On the upside, we can somewhat side-step the issue because we have a lot of other box-drawing characters at our disposal. And, in fact, the Search widget was already doing just that to get a thicker pipe, so I did the same thing here ;).

NiLuJe added a commit to NiLuJe/koreader that referenced this issue Feb 21, 2021
It's more amenable to ghosting, and it matches what we use in ReaderSearch.

Fix koreader#7326
@yparitcher
Copy link
Member

the next chapter button was just pressed. it is transparent, along with the part of the progress bar that is supposed to be filled in grey.
ko

@yparitcher
Copy link
Member

holding on the skimto will then go to nontransparent (it still thinks it is transparent)

@NiLuJe
Copy link
Member

NiLuJe commented Feb 21, 2021

Huh. I definitely can't reproduce that ;).

Is that on a PW2, too?

@yparitcher
Copy link
Member

yparitcher commented Feb 21, 2021

PW4

edit: you have to set it transparent by holding first

@NiLuJe
Copy link
Member

NiLuJe commented Feb 22, 2021

That's... weird.

You don't happen to have anything custom that might squat a weird spot in the window stack on that device?

With debug logging enabled, you should see something along the lines of

02/22/21-01:00:39 DEBUG Explicit widgetRepaint: table: 0x48edbea8 @ ( 41 , 415 )
02/22/21-01:00:39 DEBUG setDirty: Marking as dirty widget: ReaderUI because it's below translucent widget: table: 0x46a97e40
02/22/21-01:00:39 DEBUG _refresh: Enqueued ui update for region 41 415 124 52 
02/22/21-01:00:39 DEBUG setDirty ui from widget table: 0x46a97e40 w/ region 41 415 124 52

(that's the unhighlight's widgetRepaint, followed by its setDirty on its parent, which UIManager groks as translucent, causing ReaderUI to be repainted).

@NiLuJe
Copy link
Member

NiLuJe commented Feb 22, 2021

With more context, starting from a translucent SkimTo, a tap on Next chapter does:

02/22/21-01:06:27 DEBUG key event => type: 1, code: 330(nil), value: 1, time: 1613952387.377949
02/22/21-01:06:27 DEBUG input event => type: 3, code: 57(nil), value: 0, time: 1613952387.377956
02/22/21-01:06:27 DEBUG input event => type: 3, code: 53(nil), value: 651, time: 1613952387.377960
02/22/21-01:06:27 DEBUG input event => type: 3, code: 54(nil), value: 439, time: 1613952387.377962
02/22/21-01:06:27 DEBUG input event => type: 0, code: 0(nil), value: 0, time: 1613952387.377966
02/22/21-01:06:27 DEBUG in tap state...
02/22/21-01:06:27 DEBUG set up hold timer
02/22/21-01:06:27 DEBUG adjusted ges: touch
02/22/21-01:06:27 DEBUG MovableContainer:onMovableTouch {
    ["ges"] = "touch",
    ["pos"] = {
        ["y"] = 439,
        ["w"] = 0,
        ["h"] = 0,
        ["x"] = 651,
    },
    ["time"] = {
        ["usec"] = 377966,
        ["sec"] = 1613952387,
    },
}
02/22/21-01:06:27 DEBUG key event => type: 1, code: 325(nil), value: 1, time: 1613952387.378731
02/22/21-01:06:27 DEBUG input event => type: 0, code: 0(nil), value: 0, time: 1613952387.378733
02/22/21-01:06:27 DEBUG input event => type: 3, code: 54(nil), value: 438, time: 1613952387.393479
02/22/21-01:06:27 DEBUG input event => type: 0, code: 0(nil), value: 0, time: 1613952387.393481
02/22/21-01:06:27 DEBUG in tap state...
02/22/21-01:06:27 DEBUG input event => type: 3, code: 53(nil), value: 652, time: 1613952387.409352
02/22/21-01:06:27 DEBUG input event => type: 0, code: 0(nil), value: 0, time: 1613952387.409355
02/22/21-01:06:27 DEBUG in tap state...
02/22/21-01:06:27 DEBUG input event => type: 3, code: 57(nil), value: -1, time: 1613952387.473230
02/22/21-01:06:27 DEBUG input event => type: 0, code: 0(nil), value: 0, time: 1613952387.473231
02/22/21-01:06:27 DEBUG in tap state...
02/22/21-01:06:27 DEBUG single tap detected in slot 0 {
    ["y"] = 438,
    ["w"] = 0,
    ["h"] = 0,
    ["x"] = 652,
}
02/22/21-01:06:27 DEBUG adjusted ges: tap
02/22/21-01:06:27 DEBUG Explicit widgetRepaint: table: 0x45f80d00 @ ( 593 , 415 )
02/22/21-01:06:27 DEBUG _refresh: Enqueued fast update for region 593 415 124 52 
02/22/21-01:06:27 DEBUG setDirty fast from widget nil w/ region 593 415 124 52 
02/22/21-01:06:27 DEBUG CreDocument: goto page 9 flow 0
02/22/21-01:06:27 DEBUG update_mode: Update refresh mode fast to partial
02/22/21-01:06:27 DEBUG _refresh: Enqueued partial update for region 0 0 758 1024 
02/22/21-01:06:27 DEBUG setDirty partial from widget ReaderUI w/ NO region 
02/22/21-01:06:27 DEBUG painting widget: ReaderUI
# 02/22/21-01:06:27  readerview painting {
    ["y"] = 0,
    ["w"] = 758,
    ["h"] = 1024,
    ["x"] = 0,
} to 0 0
02/22/21-01:06:27 DEBUG CreDocument: goto page 9 flow 0
02/22/21-01:06:27 DEBUG painting widget: table: 0x45f77938
# 02/22/21-01:06:27  triggering refresh {
    ["mode"] = "partial",
    ["region"] = {
        ["y"] = 0,
        ["w"] = 758,
        ["h"] = 1024,
        ["x"] = 0,
    },
}
02/22/21-01:06:27 DEBUG refresh: partial 0 0 758 1024
02/22/21-01:06:27 DEBUG refresh: wait for completion of (previous) marker 12
02/22/21-01:06:27 DEBUG mxc_update: 758x1024 region @ (0, 0) with marker 13 (WFM: 8 & UPD: 1)
02/22/21-01:06:27 DEBUG refresh: wait for completion of marker 13
02/22/21-01:06:28 DEBUG Explicit widgetRepaint: table: 0x45f80d00 @ ( 593 , 415 )
02/22/21-01:06:28 DEBUG setDirty: Marking as dirty widget: ReaderUI because it's below translucent widget: table: 0x41b65590
02/22/21-01:06:28 DEBUG _refresh: Enqueued ui update for region 593 415 124 52 
02/22/21-01:06:28 DEBUG setDirty ui from widget table: 0x41b65590 w/ region 593 415 124 52 
02/22/21-01:06:28 DEBUG painting widget: ReaderUI
# 02/22/21-01:06:28  readerview painting {
    ["y"] = 0,
    ["w"] = 758,
    ["h"] = 1024,
    ["x"] = 0,
} to 0 0
02/22/21-01:06:28 DEBUG CreDocument: goto page 9 flow 0
02/22/21-01:06:28 DEBUG painting widget: table: 0x45f77938
# 02/22/21-01:06:28  triggering refresh {
    ["mode"] = "ui",
    ["region"] = {
        ["y"] = 415,
        ["w"] = 124,
        ["h"] = 52,
        ["x"] = 593,
    },
}
02/22/21-01:06:28 DEBUG refresh: ui-mode 593 415 124 52
02/22/21-01:06:28 DEBUG mxc_update: 124x52 region @ (593, 415) with marker 14 (WFM: 3 & UPD: 0)
02/22/21-01:06:28 DEBUG key event => type: 1, code: 330(nil), value: 0, time: 1613952387.473339
02/22/21-01:06:28 DEBUG key event => type: 1, code: 325(nil), value: 0, time: 1613952387.473340
02/22/21-01:06:28 DEBUG input event => type: 0, code: 0(nil), value: 0, time: 1613952387.473341

@yparitcher
Copy link
Member

yparitcher commented Feb 22, 2021

edit: verbose logs

02/21/21-19:15:23 DEBUG input event => type: 3, code: 57(nil), value: 0, time: 1613952923.36097
02/21/21-19:15:23 DEBUG input event => type: 3, code: 58(nil), value: 40, time: 1613952923.36097
02/21/21-19:15:23 DEBUG input event => type: 3, code: 53(nil), value: 952, time: 1613952923.36097
02/21/21-19:15:23 DEBUG input event => type: 3, code: 54(nil), value: 614, time: 1613952923.36097
02/21/21-19:15:23 DEBUG input event => type: 3, code: 48(nil), value: 40, time: 1613952923.36097
02/21/21-19:15:23 DEBUG input event => type: 3, code: 50(nil), value: 40, time: 1613952923.36097
02/21/21-19:15:23 DEBUG input event => type: 0, code: 0(nil), value: 0, time: 1613952923.36097
02/21/21-19:15:23 DEBUG in tap state...
02/21/21-19:15:23 DEBUG set up hold timer
02/21/21-19:15:23 DEBUG adjusted ges: touch
02/21/21-19:15:23 DEBUG MovableContainer:onMovableTouch {
    ["ges"] = "touch",
    ["pos"] = {
        ["y"] = 614,
        ["w"] = 0,
        ["h"] = 0,
        ["x"] = 952,
    },
    ["time"] = {
        ["usec"] = 36097,
        ["sec"] = 1613952923,
    },
}
02/21/21-19:15:23 DEBUG input event => type: 3, code: 57(nil), value: -1, time: 1613952923.133425
02/21/21-19:15:23 DEBUG input event => type: 0, code: 0(nil), value: 0, time: 1613952923.133425
02/21/21-19:15:23 DEBUG in tap state...
02/21/21-19:15:23 DEBUG single tap detected in slot 0 {
    ["y"] = 614,
    ["w"] = 0,
    ["h"] = 0,
    ["x"] = 952,
}
02/21/21-19:15:23 DEBUG adjusted ges: tap
02/21/21-19:15:23 DEBUG Explicit widgetRepaint: table: 0x72198c30 @ ( 837 , 589 )
02/21/21-19:15:23 DEBUG _refresh: Enqueued fast update for region 837 589 177 72 
02/21/21-19:15:23 DEBUG setDirty fast from widget nil w/ region 837 589 177 72 
02/21/21-19:15:23 DEBUG CreDocument: goto page 38 flow 0
02/21/21-19:15:23 DEBUG update_mode: Update refresh mode fast to partial
02/21/21-19:15:23 DEBUG _refresh: Enqueued partial update for region 0 0 1072 1448 
02/21/21-19:15:23 DEBUG setDirty partial from widget ReaderUI w/ NO region 
02/21/21-19:15:23 DEBUG painting widget: ReaderUI
# 02/21/21-19:15:23  readerview painting {
    ["y"] = 0,
    ["w"] = 1072,
    ["h"] = 1448,
    ["x"] = 0,
} to 0 0
02/21/21-19:15:23 DEBUG CreDocument: goto page 38 flow 0
02/21/21-19:15:23 DEBUG painting widget: table: 0x7219d7f8
# 02/21/21-19:15:23  triggering refresh {
    ["mode"] = "partial",
    ["region"] = {
        ["y"] = 0,
        ["w"] = 1072,
        ["h"] = 1448,
        ["x"] = 0,
    },
}
02/21/21-19:15:23 DEBUG refresh: partial 0 0 1072 1448
02/21/21-19:15:23 DEBUG refresh: wait for completion of (previous) marker 26
02/21/21-19:15:23 DEBUG mxc_update: 1072x1448 region @ (0, 0) with marker 27 (WFM: 4 & UPD: 1)
02/21/21-19:15:23 DEBUG refresh: wait for completion of marker 27
02/21/21-19:15:23 DEBUG Explicit widgetRepaint: table: 0x72198c30 @ ( 837 , 589 )
02/21/21-19:15:23 DEBUG setDirty: Marking as dirty widget: ReaderUI because it's below translucent widget: table: 0x72192028
02/21/21-19:15:23 DEBUG _refresh: Enqueued ui update for region 837 589 177 72 
02/21/21-19:15:23 DEBUG setDirty ui from widget table: 0x72192028 w/ region 837 589 177 72 
02/21/21-19:15:23 DEBUG painting widget: ReaderUI
# 02/21/21-19:15:23  readerview painting {
    ["y"] = 0,
    ["w"] = 1072,
    ["h"] = 1448,
    ["x"] = 0,
} to 0 0
02/21/21-19:15:23 DEBUG CreDocument: goto page 38 flow 0
02/21/21-19:15:23 DEBUG painting widget: table: 0x7219d7f8
# 02/21/21-19:15:23  triggering refresh {
    ["mode"] = "ui",
    ["region"] = {
        ["y"] = 589,
        ["w"] = 177,
        ["h"] = 72,
        ["x"] = 837,
    },
}
02/21/21-19:15:23 DEBUG refresh: ui-mode 837 589 177 72
02/21/21-19:15:23 DEBUG mxc_update: 177x72 region @ (837, 589) with marker 28 (WFM: 257 & UPD: 0)

@yparitcher
Copy link
Member

I have custom plugins, but none that are displaying anything in the window stack

@NiLuJe
Copy link
Member

NiLuJe commented Feb 22, 2021

That looks sane, weird.

If you disable flash_ui, does the SkimTo widget loses its transparency or something similarly broken when you do the same thing?

@yparitcher
Copy link
Member

Yes, not related to flash_ui,

the transparency comes and goes if i press the buttons many times

@yparitcher
Copy link
Member

probably related to #7281, sorry
pinging @poire-z

@NiLuJe
Copy link
Member

NiLuJe commented Feb 22, 2021

That feels like it's the REAGL algo being confused as to which pixels were actually changed or not.

(That would also explain why I can't reproduce it anywhere else).

If you force GC16 for partials, does it help (not viable, obviously, just curious ;p)?

diff --git a/ffi/framebuffer_mxcfb.lua b/ffi/framebuffer_mxcfb.lua
index fa821ca7..0d4a3891 100644
--- a/ffi/framebuffer_mxcfb.lua
+++ b/ffi/framebuffer_mxcfb.lua
@@ -724,7 +724,7 @@ function framebuffer:init()
             --       Zelda explicitly requests GC16 when flashing an UI element that doesn't cover the full screen...
             --       And it resorts to AUTO when PARTIAL, because GC16_FAST is no more (it points to GC16).
             self.waveform_flashui = C.WAVEFORM_MODE_GC16
-            self.waveform_reagl = C.WAVEFORM_MODE_ZELDA_GLR16
+            self.waveform_reagl = C.WAVEFORM_MODE_GC16
             self.waveform_partial = self.waveform_reagl
             -- NOTE: Because we can't have nice things, we have to account for devices that do not actuallly support the fancy inverted waveforms...
             if isNightModeChallenged then

(Or, I guess, on a PW4, enabling nightmode would also swap to the NM waveforms, which might handle that differently, too).

@yparitcher
Copy link
Member

NM is broken, i will get back to you in an hour or 2 about GC16

@NiLuJe
Copy link
Member

NiLuJe commented Feb 22, 2021

FWIW, I can spam-click all day without breaking the transparency ;). (Until the moment my finger slips and triggers a hold, that is ;p).

NiLuJe added a commit that referenced this issue Feb 22, 2021
* flash_ui: Yield to the kernel between the HL and the UNHL/CB to let the EPDC do its thing in peace.
* UIManager: Handle nils in task scheduling arguments.
* SkimTo: Use the same, thicker chapter nav icons as ReaderSearch (fix #7326).
* SkimTo: The bookmark toggle button doesn't require a vsync flag.
@yparitcher
Copy link
Member

Forcing GC16 does fix the issue.
So I guess the REAGL on rex is a little broken

@NiLuJe
Copy link
Member

NiLuJe commented Feb 22, 2021

@yparitcher: Huh. Thanks for confirming my hunch.

It's still...super weird, though. On which FW version is that (I mean, there's a vague chance it might have been fixed at one point, but Kindle, FW updates, nasty, etc, etc, so it's mostly for posterity's sake ^^)?

@NiLuJe
Copy link
Member

NiLuJe commented Feb 22, 2021

As another stupid experiment, you can try REAGLD, because it should handle mixed content better.

diff --git a/ffi/framebuffer_mxcfb.lua b/ffi/framebuffer_mxcfb.lua
index fa821ca7..38b75bfb 100644
--- a/ffi/framebuffer_mxcfb.lua
+++ b/ffi/framebuffer_mxcfb.lua
@@ -452,7 +452,7 @@ end
 local function refresh_rex(fb, refreshtype, waveform_mode, x, y, w, h, dither)
     local refarea = ffi.new("struct mxcfb_update_data_rex[1]")
     -- only for Amazon's driver, try to mostly follow what the stock reader does...
-    if waveform_mode == C.WAVEFORM_MODE_ZELDA_GLR16 then
+    if waveform_mode == C.WAVEFORM_MODE_ZELDA_GLR16 or waveform_mode == C.WAVEFORM_MODE_ZELDA_GLD16 then
         -- If we're requesting WAVEFORM_MODE_ZELDA_GLR16, it's REAGL all around!
         refarea[0].hist_bw_waveform_mode = waveform_mode
         refarea[0].hist_gray_waveform_mode = waveform_mode
@@ -474,8 +474,11 @@ local function refresh_rex(fb, refreshtype, waveform_mode, x, y, w, h, dither)
         refarea[0].dither_mode = C.EPDC_FLAG_USE_DITHERING_PASSTHROUGH
         refarea[0].quant_bit = 0;
     end
+    -- REAGLD
+    if waveform_mode == C.WAVEFORM_MODE_ZELDA_GLD16 then
+        refarea[0].flags = C.EPDC_FLAG_USE_ZELDA_REGAL
     -- Enable the appropriate flag when requesting a 2bit update, provided we're not dithering.
-    if waveform_mode == C.WAVEFORM_MODE_A2 and not dither then
+    elseif waveform_mode == C.WAVEFORM_MODE_A2 and not dither then
         refarea[0].flags = C.EPDC_FLAG_FORCE_MONOCHROME
     else
         refarea[0].flags = 0
@@ -724,7 +727,7 @@ function framebuffer:init()
             --       Zelda explicitly requests GC16 when flashing an UI element that doesn't cover the full screen...
             --       And it resorts to AUTO when PARTIAL, because GC16_FAST is no more (it points to GC16).
             self.waveform_flashui = C.WAVEFORM_MODE_GC16
-            self.waveform_reagl = C.WAVEFORM_MODE_ZELDA_GLR16
+            self.waveform_reagl = C.WAVEFORM_MODE_ZELDA_GLD16
             self.waveform_partial = self.waveform_reagl
             -- NOTE: Because we can't have nice things, we have to account for devices that do not actuallly support the fancy inverted waveforms...
             if isNightModeChallenged then

Not necessarily a great solution easier, because it's barely any better than GC16 in practice, and I've never actually seen anything using it successfully (I mean, the Kobo Aura did, and it was... not great ^^).

@yparitcher
Copy link
Member

5.10.1.3

I will dust off my KT4 and update its koreader to confirm. it is on 5.11.1

@NiLuJe
Copy link
Member

NiLuJe commented Feb 22, 2021

On the upside, I can't think of anything else off the top of my head ;).

@yparitcher
Copy link
Member

Technically, I guess that the various ConfigDialog SpinWidgets could also actively repaint CRe if the page layout changes, but the hide/show dance we do with those probably makes that a non-issue?

correct. non issue

@yparitcher
Copy link
Member

yparitcher commented Feb 22, 2021

but when launching the margin dialog by clicking on the more button from the bottom menu, the thin grey lines around the close & apply buttons are not drawn

edit: if i then make it transparent they appear, and they stay even if i make it opaque again

@NiLuJe
Copy link
Member

NiLuJe commented Feb 22, 2021

but when launching the margin dialog by clicking on the more button from the bottom menu, the thin grey lines around the close & apply buttons are not drawn

edit: if i then make it transparent they appear, and they stay even if i make it opaque again

By "not drawn", do you mean they're invisible (and you essentially see a thin line of whatever text is behind peeking through the widget), or that they're drawn in white?

@yparitcher
Copy link
Member

I think white

@yparitcher
Copy link
Member

using koreader-kindlepw2-v2021.02-34-g37af0fd6_2021-02-23

when turning pages the letters are fuzzy (aliased) unless i refresh the page with a diagonal swipe

@yparitcher
Copy link
Member

setting https://github.com/koreader/koreader-base/blob/eaeb52226a16b69e21231e2d85d4e775f1605e86/ffi/framebuffer_mxcfb.lua#L477-L479

    -- Enable the appropriate flag when requesting a 2bit update, provided we're not dithering.
    if waveform_mode == C.WAVEFORM_MODE_A2 and not dither then
        refarea[0].flags = C.EPDC_FLAG_FORCE_MONOCHROME

back to DU instead of A2 to enforce monochrome fixes the fuzzy letters

@NiLuJe
Copy link
Member

NiLuJe commented Feb 23, 2021

Err, turning pages where? This shouldn't affect anything besides essentially menus/buttons during a highlight.

@yparitcher
Copy link
Member

Err, turning pages where? This shouldn't affect anything besides essentially menus/buttons during a highlight.

reading epubs

@NiLuJe
Copy link
Member

NiLuJe commented Feb 23, 2021

That... doesn't make sense ^^.

@yparitcher
Copy link
Member

with a diagonal flash being 10 for clarity with DU it is 9.5 clear and with A2 7 clear.
A screenshot also refreshes so can't capture

@NiLuJe
Copy link
Member

NiLuJe commented Feb 23, 2021

Still doesn't make sense: ReaderUI never refreshes a page with anything else than partial/full. A2/DU never enters the equation o_O.

@yparitcher
Copy link
Member

A2:
broken
DU:
fixed

@NiLuJe
Copy link
Member

NiLuJe commented Feb 23, 2021

If that's a MenuItem or a Button, sure, but you should never hit FORCE_MONOCHROME anywhere near actual ReaderUI content :?

@yparitcher
Copy link
Member

How do i disable the footer to test if it is that?

@NiLuJe
Copy link
Member

NiLuJe commented Feb 23, 2021

Err, which footer are we talking about?

@yparitcher
Copy link
Member

yparitcher commented Feb 23, 2021

regular bottom status bar. It doesn't want to go away

@NiLuJe
Copy link
Member

NiLuJe commented Feb 23, 2021

Gah, wait, I know. 🤦

Notice the fix I sneaked in koreader/koreader-base#1314 where C.WAVEFORM_MODE_A2 became C.WAVEFORM_MODE_ZELDA_A2? That was a very stupid bug, with an extremely harmful effect, because the old A2 constant maps to... WAVEFORM_MODE_ZELDA_GLR16 on Zelda/Rex (i.e., partial).

Which explains why it was thoroughly screwing over ReaderUI ^^.

@NiLuJe
Copy link
Member

NiLuJe commented Feb 23, 2021

As for the footer, unless you have the lock enabled, a tap should cycle it until it finally disappears ;).

@yparitcher
Copy link
Member

As for the footer, unless you have the lock enabled, a tap should cycle it until it finally disappears ;).

I had lock :) and its not the footer

@NiLuJe
Copy link
Member

NiLuJe commented Feb 23, 2021

Also, you know what: that's probably what broke REAGL in the first place, too. >_<".

(The only reason I had a quick suggestion at the ready with your original screenshot is because it looked very much like the FORCE_MONOCHROME issues on Kobo Mk. 7 ;)).

@NiLuJe
Copy link
Member

NiLuJe commented Feb 23, 2021

The TL;DR being: I have a strong suspicion that koreader/koreader-base#1314 will fix the transparency issue, too ^^.

@yparitcher
Copy link
Member

I will test.
Do you mind giving a TLDR to the different waveform types (partial/full/REAGL) as i find it interesting and they are mostly undocumented.

@NiLuJe
Copy link
Member

NiLuJe commented Feb 23, 2021

Sure, I finally did a proper writeup of that in FBInk last month ;).

@yparitcher
Copy link
Member

koreader/koreader-base#1314 fixes the issues :)

@yparitcher
Copy link
Member

Sure, I finally did a proper writeup of that in FBInk last month ;).

how do partial and full intersect with this all?

@NiLuJe
Copy link
Member

NiLuJe commented Feb 23, 2021

FULL essentially requests a flash on waveform modes that support it (in practice, mostly the G* ones do). (That's what the "will never flash" mentions refer to).

Things get a bit more fancy where REAGL is concerned:

  • REAGL doesn't flash in the traditional sense (i.e., the black flash).
    • Kindle requires that all REAGL update be flagged FULL nonetheless (this may be a software convention to help handle manual fences).
    • That's not the case on Kobo Mk. 7, where we can happily send them as PARTIAL.
    • There's a very specific exception for the Kobo Aura, which was the first (and only?) device to attempt to make regular use of REAGLD, and which followed the same "always FULL" convention.

@NiLuJe
Copy link
Member

NiLuJe commented Feb 23, 2021

As in, you can ask for A2, FULL all you want, that'll never change its actual behavior ;).

Special mention for GC16, where FULL, in addition to the flash, also enforces an update for every pixel in the region, while a PARTIAL GC16 won't do anything for unchanged pixels.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants